在Struts2中访问Servlet API有三种方式:
一、通过ActionContext访问Servlet API,该方式只能获得在request、session、application中数据的Map集合,不能操作这些对象本身的方法.
步骤:
1).创建一个ActionContext
- ActionContext context=ActionContext.getContext();
2).通过context对象获取Servlet API
- Map<String,Object> getApplication():获取的是application中存储的数据;
- Map<String,Object> getParameters():相当于request.getParameterMap();
- Map<String,Object> getSession():获取的是session中存储的数据;
- put(String key,Object value):相当于request.setAttribute();
- Object get(String key):相当于request.getAttribute()
二、通过接口注入的方式
通过实现相应的接口获得Servlet API,比如:
- ServletContextAware:注入ServletContext对象
- ServletRequestAware:注入 request对象
- ServletResponseAware:注入response对象
比如获取HttpServletRequest对象:
1 public class TestAction extends ActionSupport implements ServletRequestAware { 2 HttpServletRequest request; 3 @Override 4 public String execute() { 5 request.setAttribute("name", "requestTest"); 6 return "success"; 7 } 8 9 @Override 10 public void setServletRequest(HttpServletRequest request) { 11 this.request = request; 12 } 13 }
三、通过原生的方式访问Servlet的API
通过ServletActionContext类中提供了静态方法可以直接获取Servlet的API:
1 //获取request 2 HttpServletRequest request = ServletActionContext.getRequest(); 3 //获取session 4 HttpSession session = request.getSession(); 5 //获取context 6 ServletContext context = ServletActionContext.getServletContext();