轉貼-STRUTS2得到session和request

在struts1中,得到到系統的request或者session對象很是方便,都是按照形參傳遞的,可是在struts2中,request和session都被隱藏了
struts提供兩種方式訪問session和request,其中比較經常使用的是利用SPRING裏面所說的IOC即控制反轉
IOC方式:
action類實現ServletRequestAware接口,並新建一個HttpServletRequest request
public class UserLoginAction extends ActionSupport implements ServletRequestAware{
   public void setServletRequest(HttpServletRequest request) {
     this.request=request;
  }
 而後能夠生成的request獲得對象,如request.getRemoteAddr()
action類實現SessionAware接口,並建立一個MAP對象session
public class UserLoginAction extends ActionSupport implements ServletRequestAware,SessionAware{
   public void setServletRequest(HttpServletRequest request) {
     this.request=request;
  }
public void setSession(Map session) {
  this.session=session;  
 }
非IOC方式
非Ioc方式web

這種方式主要是利用了 com.opensymphony.xwork2.ActionContext類以及 org.apache.struts2.ServletActionContext類,具體的方法以下所示。
得到request對象:
A    HttpServletRequest request = ServletActionContext.getRequest ();
B.ActionContext ct=  ActionContext.getContext()
    HttpServletRequest request=
(HttpServletRequest)ct.get(ServletActionContext.  HTTP_REQUEST  );
得到session對象:
在Struts2中底層的session都被封裝成了Map類型,咱們稱之爲SessionMap,而日常咱們所說的session則是指HttpSession對象,具體的得到方法以下所示。
A.Map session=ActionContext.getSession();
B.Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
獲得這個SessionMap以後咱們就能夠對session進行讀寫了, 若是咱們想獲得原始的 HttpSession 能夠首先獲得 HttpServletRequest 對象,而後經過 request.getSession() 來取得原始的 HttpSession 對象。通常狀況下SessionMap已經能夠完成全部的工做,咱們沒必要再去碰底層的session了。
相關文章
相關標籤/搜索