Struts2学习之三种获得表单数据方式

来源:互联网 发布:人工智能怎么读 编辑:程序博客网 时间:2024/06/03 14:43

1.通过ActionContext方式获得

(1)因为方法不是静态方法,所以需要创建ActionContext对象

(2)但是不是new出来的,是通过getContext静态方式获取当前ActionContext

package com.sq.form;import java.util.Arrays;import java.util.Map;import java.util.Set;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** *@author sq * */public class Form1DemoAction extends ActionSupport {@Overridepublic String execute() throws Exception {//第一种使用ActionContext类获取//1.获取ActionContext对象ActionContext actionContext = ActionContext.getContext();//2.调用方法获取表单数据//key是表单name值,value是输入的值Map<String,Object> map = actionContext.getParameters();Set<String> keys = map.keySet();for(String key:keys){//根据key值获得value//有些chexbox可能name一样,值有多个,所以是数组数据Object[] object = (Object[]) map.get(key);System.out.println(Arrays.toString(object));}return NONE;}}


注意:表单提交如果是post方式,Struts2 已经解决了乱码问题

2.通过servletActionContext获取

(1)调用类里面的静态方法获得request对象

package com.sq.form;import java.util.Arrays;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** *@author sq * */public class Form2DemoAction extends ActionSupport {@Overridepublic String execute() throws Exception {//第二种方式使用servletActionContext类获取//1.使用静态方法获得request对象HttpServletRequest request = ServletActionContext.getRequest();//2.调用request方法获得表单数据String username = request.getParameter("username");String password = request.getParameter("password");String address = request.getParameter("address");System.out.println(username);System.out.println(password);System.out.println(address);return NONE;}}


3.使用接口注入方式

(1)让action实现接口,得到request对象

package com.sq.form;import java.util.Arrays;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import org.apache.struts2.interceptor.ServletRequestAware;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** *@author sq * */public class Form3DemoAction implements ServletRequestAware{private HttpServletRequest request;public String execute() throws Exception {//第三种方式使用实现servletrequestaware接口获取//调用request方法获得表单数据String username = request.getParameter("username");String password = request.getParameter("password");String address = request.getParameter("address");System.out.println(username);System.out.println(password);System.out.println(address);return "none";}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;}}