struts獲取request和response的兩種不同的方法

在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方式

這種方式主要是利用了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了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章