JavaEE之Struts2获取表单数据

JavaEE之Struts2获取表单数据

不使用框架的话,则是使用Servlet的request对象获取,其方法分别是getParametergetParameterMap。使用Struts2获取数据不能使用上面的方法,不过另外封装了3种方法:

  • 使用ActionContext类(推荐使用,解耦)
  • 使用ServletActionContext
  • 使用接口注入方式(相应的Action实现ServletRequestAware接口,一般不使用)

表单代码

<form method="post" action="${pageContext.request.contextPath }/formAction.action">
        用户名:<input type="text" name="user">
        <br>
        密码:<input type="text" name="pwd">
        <br>
        地址:<input type="text" name="address">
        <br>
        <input type="submit" value="提交"> 
</form>

说明一下,表单是可以使用中文的不会乱码,原因是Struts2已经在struts配置中做了处理

ActionContext

action代码

@Override
public String execute() throws Exception {
    /* * 第一种方式:ActionContext获取 */
    // 1、获取ActionContext对象
    ActionContext context = ActionContext.getContext();
    // 2、调用方法得到表单数据
    Map<String, Object> map = context.getParameters();
    for (String key : map.keySet()) {
        Object[] objects = (Object[]) map.get(key);
        System.out.println(Arrays.toString(objects));
    }
    return NONE;
}

ServletActionContext

action代码

@Override
public String execute() throws Exception {
    /* * 第二种方式:ServletActionContext获取 */
    // 1、使用ServletActionContext获取request对象
    HttpServletRequest request = ServletActionContext.getRequest();
    // 2、调用方法得到表单数据
    String user = request.getParameter("user");
    String pwd = request.getParameter("pwd");
    String address = request.getParameter("address");

    System.out.println(user + " " + pwd + " " + address);
    return NONE;
}

ServletActionContext最常用的则是使用它来操作Servlet中的3大域对象,即request、session、servletContext。

HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("req", "reqValue");

HttpSession session = request.getSession();
session.setAttribute("ses", "selValue");

ServletContext context = ServletActionContext.getServletContext();
context.setAttribute("con", "conValue");

你可能感兴趣的:(java,struts2.0,ee)