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 {
@Override
public 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 {
@Override
public 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";
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}