(七)Struts2Action访问Servlet API

第一种方式:

1
2
3
4
5
6
Struts2提供了一个ServletActionContext对象可以访问ServletAPI。
例如
    HttpServletRequest request=ServletActionContext.getRequest();
    HttpServletResponse response=ServletActionContext.getResponse();
    ServletContext context=ServletActionContext.getServletContext();
    HttpSession session=request.getSession();

第二种方式,实现ServletContextAware,ServletRequestAware,ServletResponseAware三个接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class VcodeAction extends ActionSupport implements ServletContextAware,ServletRequestAware,ServletResponseAware {
                 //定义三个参数
                 private HttpServletRequest request;
                 private HttpServletResponse response;
                 private ServletContext context;
 
                 public String execute() throws Exception {
 
                     return null;
                 }
                 //实现接口中设置参数的方法
                 @Override
                 public void setServletResponse(HttpServletResponse response) {
                     this.response=response;
 
                 }
                 @Override
                 public void setServletRequest(HttpServletRequest request) {
                     this.request=request;
 
                 }
                 @Override
                 public void setServletContext(ServletContext context) {
                     this.context=context;
 
                 }
             }
 
 
             执行流程是什么,谁调用了set方法?
             struts的内建拦截器有一个ServletConfig的拦截器。
             它会先得到我们的动作类的引用,
             然后通过instanceof方法判断我们动作类是否属于ServletContextAware,ServletRequestAware,ServletResponseAware类型
             因为我们实现了这个接口,当然属于这个类型
             然后获取request,response等
             然后调用我们动作类实现的接口方法 setServletResponse,setServletRequest,setServletContext等为我们的request,response赋值。

  

  

posted @   跃小云  阅读(218)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示