Struts2学习笔记整理(六)-----action获取表单提交数据的三种方式及在action操作域对象
action获取表单提交数据的三种方式:
(1)使用actionContext类
(2)使用ServletActionContext类
(3)使用接口注入的方式
1.使用actionContext类获取表单数据
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Form1DemoAction extends ActionSupport {
@Override
public String execute() throws Exception {
// 第一种方式:使用ActionContext类获取表单数据
// 1.获取ActionContext对象
ActionContext context = ActionContext.getContext();
// 2,获取表单数据,key:表单输入项name属性值,value:输入的值
Map<String, Object> map = context.getParameters();
Set<String> keys = map.keySet();
for(String key:keys){
Object[] obj = (Object[])map.get(key);
System.out.println(Arrays.toString(obj));
}
return NONE;
}
}
2.使用ServletActionContext类
package form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Form2DemoAction extends ActionSupport {
public String execute() throws Exception{
//1.使用ServletActionContext类获取请求
HttpServletRequest request = ServletActionContext.getRequest();
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
System.out.println("username:"+username+" password:"+password+" address:"+address);
return NONE;
}
}
3.使用接口注入的方式(用得不多)
继承ServletRequestAware,request可直接注入进来,然后从中获取数据。
package form; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; public class Form3DemoAction extends ActionSupport implements ServletRequestAware{ private HttpServletRequest request; public String execute() throws Exception{ String username = request.getParameter("username"); String password = request.getParameter("password"); String address = request.getParameter("address"); System.out.println("username:"+username+" password:"+password+" address:"+address); return NONE; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } }
注:通过ServletActionContext操作域对象
/***
* 获得方式一:通过ServletActionContext类
* 提供的静态方法获得原始的web对象,直接和servlet的API耦合
* 如果需要获得原始的web对象,只能选择ServletActionContext类
* **/
public String method01()
{
//获得HttpServletRequest对象
HttpServletRequest request= ServletActionContext.getRequest();
//获得HttpServletResponse对象
HttpServletResponse response=ServletActionContext.getResponse();
//获得HttpSession对象
HttpSession session=request.getSession();
//获得Application对象
ServletContext application=ServletActionContext.getServletContext();
//给web对象中封装数据
request.setAttribute("req", "method01----req");
session.setAttribute("sin", "method01----sin");
application.setAttribute("app", "method01----app");
return Action.SUCCESS;
}
浙公网安备 33010602011771号