struts2訪問HttpSession

當一個用戶登陸成功後,須要將用戶的用戶名添加爲Session狀態信息。
爲了訪問HttpSession實例,Struts 2提供了一個ActionContext類,該類提供了一個getSession的方法,但該方法的返回值類型並非HttpSession,而是 Map。這又是怎麼回事呢?實際上,這與Struts 2的設計哲學有關,Struts 2爲了簡化Action類的測試,將Action類與Servlet API徹底分離,所以getSession方法的返回值類型是Map,而不是HttpSession。
雖然ActionContext的getSession返回的不是HttpSession對象,但Struts 2的系列攔截器會負責該Session和HttpSession之間的轉換。
爲了能夠跟蹤用戶信息,咱們修改Action類的execute方法,在execute方法中經過ActionContext訪問Web應用的Session。修改後的execute方法代碼以下:html

 

  
  
           
  
  
  1. //處理用戶請求的execute方法 
  2. public String execute() throws Exception
  3. //當用戶請求參數的username等於scott,密碼請求參數爲tiger時,返回success字符串 
  4. //不然返回error的字符串 
  5.  if (getUsername().equals("scott"&& getPassword().equals("tiger") ) 
  6. //經過ActionContext對象訪問Web應用的Session 
  7. ActionContext.getContext().getSession().put("user" , getUsername()); 
  8.   return SUCCESS; 
  9.  } else 
  10.   return ERROR; 
  11.  } 
  12.  
  13. }    

 

爲了檢驗咱們設置的Session屬性是否成功,咱們修改welcome.jsp頁面,在welcome.jsp頁面中使用JSP 2.0表達式語法輸出Session中的user屬性。java

 

  
  
           
  
  
  1. <%@ page language="java" contentType="text/html; charset=GBK"%> 
  2. <html> 
  3. <head> 
  4. <title>成功頁面</title> 
  5. </head> 
  6. <body> 
  7. 歡迎,${sessionScope.user},您已經登陸! 
  8. </body> 
  9. </html>
相關文章
相關標籤/搜索