在Struts2访问 HttpServletRequest、HttpSession、ServletContext三个域对象

来源:互联网 发布:云计算服务器 翻译 编辑:程序博客网 时间:2024/05/16 16:13
Struts2如何访问 HttpServletRequest、HttpSession、ServletContext三个域对象1,方法一:与Servlet API解耦的访问方式通过 ActionContext 访问域对象对应的 Map 对象public class MyAction extends ActionSupport implements Serializable {//向各大域范围存放点数据@Overridepublic String execute() throws Exception {ActionContext ac = ActionContext.getContext();Map<String,Object> applicationMap = ac.getApplication();//这个就是ServletContext对象中维护的那个MapapplicationMap.put("p", "application_p");// 相当于ServletContext.setAttribute(key,object);Map<String,Object> sessionMap = ac.getSession();//这个就是HttpSession对象中维护的那个MapsessionMap.put("p", "session_p");// 相当于HttpSession.setAttribute(key,object);ac.put("p", "request_p");//相当于ServletRequest.setAttribute(key,obj);return super.execute();}}2,方法二:Servlet API耦合的访问方式通过 ServletActionContext 直接获取 Servlet API 对象ServletContext servletContext = ServletActionContext.getServletContext();ServletRequest servletRequest = ServletActionContext.getRequest();HttpServletRequest httpServletRequest = (HttpServletRequest)ServletActionContext.getRequest();HttpSession session = httpServletRequest.getSession();通过实现 ServletXxxAware 接口的方式使 Struts2 注入对应的对象public class MyAction extends ActionSupport implements Serializable,ServletContextAware,ServletRequestAware,ServletResponseAware,SessionAware {private ServletContext context;private HttpServletRequest request;private HttpServletResponse response;private Map sessionMap;// 如果Action类实现了ServletContextAware接口,就会自动调用该方法public void setServletContext(ServletContext context) {this.context = context;}public void setServletRequest(HttpServletRequest request) {this.request = request;}public void setServletResponse(HttpServletResponse response) {this.response = response;}public void setSession(Map<String, Object> session) {this.sessionMap = session;}public String execute(){System.out.println(context);System.out.println(request);System.out.println(response);System.out.println(sessionMap);return SUCCESS;}}

0 0
原创粉丝点击