wyTT

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Ⅰ、和servelet API 解耦的方式:只能访问到有限的资源

  (1)通过ActionContext的getXXX方法获取相关资源

    例:

public class TestActionContext extends ActionSupport{
    
    private static final long serialVersionUID = 1L;

    @Override
    public String execute() throws Exception {
        ActionContext ac = ActionContext.getContext();
        //获取session
        Map<String, Object> session = ac.getSession();
        session.put("sessionKey", "sessionValue");
        //获取request
        Map<String, Object> request = (Map<String, Object>) ac.get("request");
        //获取application
        Map<String, Object> application = ac.getApplication();
        
        return "SUCCESS";
    }

     

  (2)通过继承XXXAware接口获取相关资源

    例:

  public class TestAware extends ActionSupport implements RequestAware,ApplicationAware,SessionAware{

    private Map<String,Object> session;
    private Map<String,Object> application;
    private Map<String,Object> request;
    
    //获取session
    @Override
    public void setSession(Map<String, Object> session) {
        this.session = session;    
    }
    
    //获取application
    @Override
    public void setApplication(Map<String, Object> application) {
        this.application = application;        
    }

    //获取request
    @Override
    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }
    @Override
    public String execute() throws Exception {
        // TODO 自动生成的方法存根
        return super.execute();
    }    
}

      

   如果类中有多个方法使用到web资源,一般使用(2)通过继承XXXAware接口获取相关资源

Ⅱ、和servelet API耦合的方式:可以访问到更多的资源和方法

  (1)通过ServletActionContext的getXXX方法获取相关资源

    例:

  public class TestServltActionContext extends ActionSupport {
    @Override
    public String execute() throws Exception {
        //获取request
        HttpServletRequest request =ServletActionContext.getRequest();
        //获取session
        HttpSession session =  ServletActionContext.getRequest().getSession();
        return "SUCCESS";
    }
}

 

   (2)通过继承ServletXXXAware接口获取相关资源

    例:

public class TestServletXXXAware extends ActionSupport implements ServletRequestAware{
    private HttpServletRequest request;
    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
}

    一般推荐使用(2)通过继承ServletXXXAware接口获取相关资源

posted on 2015-08-13 15:58  wyTT  阅读(167)  评论(0编辑  收藏  举报