为了能够实现对Servlet API对象的访问,Struts2提供了多种方式,但归结起来可分为两大类:
1.与Servlet API解耦的访问方式(IoC方式)
为了避免与Servlet API耦合在一起,方便Action类的测试,Struts2框架使用了普通的Map对象替代了Servlet API中的HttpServletRequest、HttpSession、ServletContext。这种方式得到的都是一个代理对象。例如:
ActionContext ac=ActionContext.getContext();
Map request=ac.get("request");
Map session=ac.getSession();
Map application=ac.getApplication();
要想传值:调用put()方法。session.put("list",list);<比较常用>
ActionContext ac=ActionContext.getContext();
Map request=ac.get("request");
Map session=ac.getSession();
Map application=ac.getApplication();
要想传值:调用put()方法。session.put("list",list);<比较常用>
2.与Servlet API耦合的访问方式(非IoC方式)
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=request.getSession();
ServletContext application=session.getServletContext();
session.setAttribute("loginUser", user);
ServletContext sc=ServletActionContext.getServletContext();
HttpSession session=request.getSession();
ServletContext application=session.getServletContext();
session.setAttribute("loginUser", user);
ServletContext sc=ServletActionContext.getServletContext();
HttpServletResponse sr=ServletActionContext.getResponse();