Struts2中jsp前台传值到action后台的三种方式以及valueStack的使用
生活随笔
收集整理的這篇文章主要介紹了
Struts2中jsp前台传值到action后台的三种方式以及valueStack的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
struts2中的Action接收表單傳遞過來的參數有3種方法:
如,登陸表單login.jsp:
?
1.在Action類中定義表單屬性,兩者屬性名稱必須一致。提供setter,getter方法。即可接收到表單傳過來的參數.
這種接收參數的方法,方便簡單,但是結構性不是很好,且當表單傳遞來的參數很多的時候,整個Action類中充斥著setter,getter方法,程序結構不是很美觀。
2.把表單傳遞過來的參數封裝成一個類,然后調用其中的屬性.
如,把login.jsp頁面要傳來的參數進行封裝(例如:封裝于Users 類)
1 private String username; 2 private String password; 3 4 public String getUsername() { 5 return username; 6 } 7 public void setUsername(String username) { 8 this.username = username; 9 } 10 public String getPassword() { 11 return password; 12 } 13 public void setPassword(String password) { 14 this.password = password; 15 }
?
然后再Action方法中,定義該類的對象就可以了,如
1 public class loginAction extends ActionSupport{ 2 3 private Users users; 4 5 public Users getUsers(){ 6 7 return users; 8 9 } 10 11 public void setUsers(Users users){ 12 13 this.users=users; 14 15 } 16 17 }
?
通過這種方法傳值,還必須在jsp頁面做一下處理,login.jsp中from1的屬性名應該改成這樣:
登陸表單login.jsp:
<form action="login" method="post"name="form1">用戶名:<s:textfieldname="users.username"/><br/>密 碼:<s:passwordname="users.password"/><br/><s:submit value="提交"/></form>
?
這種方法,在struts開發中是很常用的一種方法!
3.通過實現ModelDriven接口接收表單數據
首先Action類必須實現ModelDriven接口,同樣把表單傳來的數據封裝起來,Action類中必須實例化該對象,并且要重寫getModel()方法
public class loginAction extends ActionSupport implementsModelDriven<Users>{private Users users =new Users();public Users getModel(){return users;}}
?
4.valueStack的使用
?
1 <table border="1" width="360"> 2 <caption> 3 作者李剛的圖書 4 </caption> 5 <!-- 迭代輸出ValueStack中的books對象,其中status是迭代的序號 --> 6 <s:iterator value="books" status="index"> 7 <s:if test="#index.odd == true"> 8 <tr style=" 9 </s:if> 10 <s:else> 11 <tr> 12 </s:else> 13 <td> 14 書名: 15 </td> 16 <td> 17 <s:property /> 18 </td> 19 </tr> 20 </s:iterator> 21 </table>?
Struts2將所有屬性值封裝在struts.valueStack請求屬性里,可以通過request.getAttribute("struts.valueStack")獲取。Action所有的屬性都被封裝到了ValueStack對象中,它類似于map,Action中的屬性名可以理解為ValueStack中value的名字??梢酝ㄟ^valueStack.findValue("name")來取值。
?
?
BookService.Java
public class BookService {// 模擬數據庫private String[] books = new String[] {"瘋狂Java講義" ,"輕量級Java EE企業應用實戰","瘋狂Ajax講義","瘋狂XML講義","Struts 2權威指南"};public String[] getLeeBooks(){return books;}}?
?
GetBooksAction.java
?
轉載于:https://www.cnblogs.com/printN/p/6502038.html
總結
以上是生活随笔為你收集整理的Struts2中jsp前台传值到action后台的三种方式以及valueStack的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到好几只狗
- 下一篇: 做梦梦到自己怀了双胞胎了是什么意思