zoukankan      html  css  js  c++  java
  • 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对象中都有一个值栈对象(只有一个) 。 

  • 相关阅读:
    python移动文件
    python分割多个分隔符
    pywintypes.com_error: (-2147418111, '被呼叫方拒绝接收呼叫。', None, None)
    MySQL查看和修改字符集的方法
    Django创建超级管理员用户
    P2567.[SCOI2009] windy 数(数位DP)
    920G.List of Integers(莫比乌斯函数+二分)
    916E.Jamie and Tree (倍增LCA+线段树维护DFS序)
    GYM100376F.Circle and Trees(树形DP+倍增LCA)
    GYM100376E.LinearMapReduce(线段树维护矩阵乘法)
  • 原文地址:https://www.cnblogs.com/ZT-SummerRain/p/7075472.html
Copyright © 2011-2022 走看看