struts2 action中獲得session request response

1、非IoC方式

 

     要獲得上述對象,關鍵Struts 2中com.opensymphony.xwork2.ActionContext類。我們可以通過它的靜態方法getContext()獲取當前Action的上下文對象。有了這個對象我們想獲得其他幾個對象就好辦了 

        ActionContext ctx = ActionContext.getContext();
        Map session 
= ctx.getSession();

     細心的朋友可以發現這裏的session是個map對象在Struts2中底層的session都被封裝成了Map類型我們可以直接操作這個map 進行對session的寫入和讀取操作而不用去直接操作HttpSession對象

     另外,org.apache.struts2.ServletActionContext作爲輔助類(Helper Class),可以幫助您快捷地獲得這幾個對象。

      HttpServletRequest request = ServletActionContext.getRequest(); 
      HttpServletResponse response 
= ServletActionContext.getResponse(); 
      HttpSession session 
= request.getSession();



2、IoC方式(這種方式在tapestry中也是這樣實現的)

     要使用IoC方式,我們首先要告訴IoC容器(Container)想取得某個對象的意願,通過實現相應的接口做到這點。具體實現

public class IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {

    
private Map session;
    
private HttpServletRequest servletRequest;
    
private HttpServletResponse servletResponse;    
    
   

    
    publicvoid setSession(Map session) {
        
this.session = session;
    }
    
    publicvoid setServletRequest(HttpServletRequest servletRequest) {
        
this.servletRequest = servletRequest;
    }
    
    publicvoid setServletResponse(HttpServletResponse servletResponse) {
        
this.servletResponse = servletResponse;
    }
    

}
發佈了49 篇原創文章 · 獲贊 1 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章