Struts2学习笔记(三) Struts2中访问request,session,和application对象
访问request,session,和application对象
Struts2提供了多种方式来访问request,session,application三种对象,归结起来,可以划分为两大类,与Servlet API解耦方式和与Servet API耦合的访问方式.
1.与Servlet API 解耦的访问方式:
为了避免与Servlet API耦合在一起骑,为方便Action类做单元测试,Struts2对
HttpServletRequest,HttpServletResponse和ServletContext进行了封装,构
造了三个Map对象来替代这三种对象,要获取这三个Map对象,可以使用
com.opensymphony.xwork2.AcionContext来获取,
public Object get(String key)
ActionContext类没有提供类似于getRequest()这样的方法类获取封装了HttpServletRequest的Map对象,要的到请求Map对象,需要传递参
数”request”
public Map getSession()
获取封装了HttpSession的Map对象.
public Map getApplication()
获取封装了ServletContext的Map对象.
看个实例吧:
新建Action类ServletActio
package org.struts2lesson.ch03.action;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.util.ServletContextAware;import org.struts2lesson.ch03.model.User;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ModelDriven;public class Servlet4Action implements Action,ModelDriven<User>,ServletRequestAware,ServletContextAware{private User user = new User();private HttpServletRequest request;private ServletContext context;public String execute() throws Exception{if("zhangsan".equals(user.getUsername()) && "1234".equals(user.getPassword())){//在请求request中放置欢迎信息HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();ServletContext context = ServletActionContext.getServletContext();request.setAttribute("greeting", "欢迎您学习Struts2!");//在Session中保存user对象session.setAttribute("user", user);//统计用户访问量,在application中保存用户数据访问量Integer count = (Integer)context.getAttribute("counter");if(count == null){count = 1;}else{count++;}context.setAttribute("counter", count);return SUCCESS;}else{return ERROR;}}public User getModel(){return user;}public void setServletRequest(HttpServletRequest request){this.request = request;}public void setServletContext(ServletContext context){this.context = context;}}总结:本小结由一个登录程序开始,介绍了Struts2中接收用户输入数据的三种方式: