在Strut2中访问Servlet API有三种方式:
1、通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API。
步骤:
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();
2、通过注入方式(真正的Servlet API)
通过实现*Aware接口获得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
14 }
3、通过ServletActionContext(真正的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();