struts2中session使用
在Struts2裡,如果需要在Action中使用session,可以透過下面兩種方式得到
1.透過ActionContext class中的方法getSession得到
2.Action實現org.apache.struts2.interceptor.SessionAware介面的方式來對session進行操作
下面先看一個採用第一種方式,在action中得到session的例子
package s2.ex.action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class SessionTestAction extends ActionSupport {
public String execute() {
ActionContext actionContext = ActionContext.getContext();
Map session = actionContext.getSession();
session.put("USER_NAME", "Test User");
return SUCCESS;
}
}
在這個例子中,透過ActionContext得到session,並往session裡放置一個key為USER_NAME,值為Test User的內容。
下面是一個實現org.apache.struts2.interceptor.SessionAware介面來對session操作的例子
package s2.ex.action;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class SessionTest1Action extends ActionSupport implements SessionAware {
private Map session;
public void setSession(Map session) {
this.session = session;
}
public String execute() {
this.session.put("USER_NAME", "Test User 1");
return SUCCESS;
}
}
在這個例子中實現了介面SessionAware中的setSession方法。
上面兩種方式都可以得到session,能實現的功能都是一樣的。
這裡推薦透過第二種方式來使用session,原因是便於做單體測試,用第二種方式,只需要構造一個Map就可以對action class進行單體測試了。
在一個專案中可能會有很多action都需要用到session,如果每個action都來實現org.apache.struts2.interceptor.SessionAware這個介面,可能會顯得比較麻煩,所以建議作一個抽象的BaseAction類來實現org.apache.struts2.interceptor.SessionAware介面,以後所有的action只要繼承這個BaseAction就可以了。
下面是一個如何在JSP中使用session的例子。
"text/html; charset=UTF-8" %>
@page pageEncoding="utf-8" %>
@taglib prefix="s" uri="/struts-tags" %>
>
"#session.USER_NAME"/>
一般在專案中往往會往session裡放置一個Object,必如說user,user裡有個boolean admin和String userName,如果user裡存在isAdmin的方法,在jsp中可以透過
------------------------------->>struts2清除session的方法
第一種方法(繼承SessionAware類來取得session,然後用invalidate()方法清理)
public class ExitAction extends ActionSupport implements SessionAware{
@Override
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session1 = request.getSession();
session1.invalidate();
return super.execute();
}
public void setSession(Map arg0) {
}
}
//第二種方法(用ActionContext取session,然後用clear()方法清理)
public class ExitAction extends ActionSupport{
@Override
public String execute() throws Exception {
ActionContext ac = ActionContext.getContext();
Map session = ac.getSession();
session.clear();
return super.execute();
}
}
//第三種方法(一樣用ActionContext取session,然後取一個Session的KEY,清除該KEY的session,這種辦法可以選擇性的清理你要清理的session)
public class ExitAction extends ActionSupport{
@Override
public String execute() throws Exception {
ActionContext ac = ActionContext.getContext();
Map session = ac.getSession();
session.remove("buser");
session.remove("guser");
session.remove("fuser");
return super.execute();
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1177554/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Struts2中使用Session的兩種方法Session
- 【Struts2】Session的獲取Session
- STRUTS2獲得session和requestSession
- 在Struts2中ValueStack、ActionContext、ServletContext、request、session關係分析ContextServletSession
- php中Session使用方法詳解PHPSession
- 在asp.net handler 中 使用 sessionASP.NETSession
- Session 使用Session
- session bean中的session如何理解?SessionBean
- 如何使用bean:write輸出session中的資訊BeanSession
- 分散式中使用 Redis 實現 Session 共享(中)分散式RedisSession
- Struts2框架的基本使用框架
- struts2 使用Maven搭建Struts2框架的開發環境Maven框架開發環境
- Oracle中Kill sessionOracleSession
- .Net Core 使用SessionSession
- PHP session的使用PHPSession
- android中HttpClient獲取Session然後使用 WebView共享session的解決辦法(轉)AndroidHTTPclientSessionWebView
- JavaWeb使用Struts2的簡單案例JavaWeb
- ORACLE中的KILLED SESSIONOracleSession
- servlet中如何保留session???ServletSession
- v$session中的serverSessionServer
- struts中session丟失Session
- Oracle中Kill session [轉]OracleSession
- struts2中的6大配置檔案
- Struts2中 Result型別配置詳解型別
- Struts2中請求引數校驗
- Struts2中獲取請求引數
- struts2 action中result引數詳解
- 限制使用者使用session數Session
- cookie與session的使用CookieSession
- Session使用的經驗Session
- JAVAEE框架學習——Struts2——Action API 使用Java框架API
- struts2的execAndWait攔截器使用AI
- 【SESSION】v$session and v$license 中sessions_current 的區別Session
- struts2 標籤的使用之一 s:if,siterator使用
- flask中的session物件方法FlaskSession物件
- Oracle中Kill session的研究OracleSession
- 在Struts2中寫介面,返回json格式JSON
- struts2配置中的method{數字}屬性