struts2入門之action獲取表單提交數據


action獲取表單提交數據,有三種方式:

1、根據ActionContext對象獲取;

2、利用ServletActionContext類獲取表單數據;(其實就是可以獲取HttpServletRequest對象)

3、利用接口注入的方式獲取表單數據;實現接口(ServletRequestAware)

其實以上三種方式都是action通過操作域對象來獲取數據,和servlet中操作域對象有異曲同工之妙,

  I、通過ActionContext類獲取表單提交數據,代碼如下:    

 1 public class DogAction2 extends ActionSupport {
 2     @Override
 3     public String execute() throws Exception {
 4         ActionContext context = ActionContext.getContext();
 5         Map<String, Object> map = context.getParameters();
 6         Set<String> set = map.keySet();
 7         for (String key : set) {
 8             Object[] objects = (Object[]) map.get(key);//這里我之所以要轉化成object數組的形式,是因為表單提交數據也有可能是復選框的情況,這里要考慮周全  9             System.out.println(Arrays.toString(objects));
10         }
11         return "success";
12     }
13 }

   II、利用ServletActionContext類,代碼如下: 

 1 import org.apache.struts2.ServletActionContext;
 2 
 3 import com.opensymphony.xwork2.ActionSupport;
 4 
 5 public class Dog3Action extends ActionSupport {
 6     private static final long serialVersionUID = 1L;
 7 
 8     @Override
 9     public String execute() throws Exception {
10         HttpServletRequest request = ServletActionContext.getRequest();
11         String username = request.getParameter("username");
12         String password = request.getParameter("password");
13         System.out.println(username + "---" + password);
14         return NONE;
15     }
16 }

   III、利用接口(ServletActionAware)注入方式獲取表單數據,代碼如下:(利用要實現的接口中的參數來初始化request對象,進而獲取表單數據) 

 1 import javax.servlet.http.HttpServletRequest;
 2 
 3 import org.apache.struts2.interceptor.ServletRequestAware;
 4 
 5 public class Dog4Action implements ServletRequestAware {
 6     private HttpServletRequest request;
 7 
 8     @Override
 9     public void setServletRequest(HttpServletRequest request) {
10         this.request = request;
11     }
12 
13     public String execute() {
14         String username = request.getParameter("username");
15         String password = request.getParameter("password");
16         System.out.println(username + "---" + password);
17         return "none";
18     }
19 }

 

 總結:上面的后兩種方式都是沿襲了servlet的方式,通過域對象來獲取表單數據,第一種方式獲取的表單數據是一個map集合,進而可以進一步得到具體的數據。

    接下來我會准備struts2的獲取表單數據的方式。見下一篇博客。。。

 ----------------------------------------------分割線--------------------------------------------------------------

說一下action和servlet的區別:

   servlet:第一次請求的時候才創建,並且只創建一次;

   action:每請求一次action都會創建一個action對象,每個action對象中都有一個值棧對象(只有一個) 。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM