Struts2中Session的使用
阿新 • • 發佈:2019-01-26
在Struts2裡,如果需要在action中使用session,可以通過以下兩種方式得到
一、通過ActionContext class中的方法getSession的到
例子如下
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class SessionTestAction extends ActionSupport{
public Stirng execute(){
ActionContexrt actionContext = ActionContext.getContext();
Map session = actionContext.getSession();
session.put("USER_NAME","Test User");
return success;
}
}
在這個例子中,通過ActionContext得到session。並往session裡面放置一個key為
USER_Name,值為Test User的內容。
二、Action實現org.apache.struts2.interceptor.SessionAware介面的方式來
對session進行操作
例子如下
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupoort;
public class SessionTest1Action extends ActionSupport implements SessionAware{
private Map session;
public void setSession(Map session){
this.session.put("USER_NAME","Test user 1");
}
}
在這個例子中實現了介面SessionAware中的setSession方法。
在這裡推薦使用第二種方式來使用session,原因是便於做單體測試,
用第二種方式,只需要構造一個Map就可以對action class 進行單體測試了。
在一個專案中可能會有很多action都需要用到session,如果每個session都來實現
org.apache.struts2.interceptor.SessionAware這個介面,可能會顯得麻煩,所以建議做一個抽象的
BaseAction類來實現org.apache.struts2.interceptor.SessionAware介面,以後
所有的action只要繼承這個BaseAction就可以了。
01
<%@ page contentType="text/html; charset=UTF-8" %>
02
<%@page pageEncoding="utf-8" %>
03
<%@taglib prefix="s" uri="/struts-tags" %>
04
<html>
05
06
<head>
07
<title>Session Test</title>
08
</head>
09
10
<body>
11
<h1><s:property value="#session.USER_NAME"/></h1>
12
<h1></h1>
13
</body>
14
</html>
一般在專案中往往會往session裡放置一個Object,比如說user,user裡面有個boolean admin和
String username。如果user裡存放在isAdmin的方法中,在jsp中可以通過
<s:if test="#session.user.admin">來判斷使用者有沒有管理許可權,
通過<s:property value="#session.user.userName">或者來取得使用者名稱。
一、通過ActionContext class中的方法getSession的到
例子如下
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class SessionTestAction extends ActionSupport{
public Stirng execute(){
ActionContexrt actionContext = ActionContext.getContext();
Map session = actionContext.getSession();
session.put("USER_NAME","Test User");
return success;
}
}
在這個例子中,通過ActionContext得到session。並往session裡面放置一個key為
USER_Name,值為Test User的內容。
二、Action實現org.apache.struts2.interceptor.SessionAware介面的方式來
對session進行操作
例子如下
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupoort;
public class SessionTest1Action extends ActionSupport implements SessionAware{
private Map session;
public void setSession(Map session){
this.session.put("USER_NAME","Test user 1");
}
}
在這個例子中實現了介面SessionAware中的setSession方法。
在這裡推薦使用第二種方式來使用session,原因是便於做單體測試,
用第二種方式,只需要構造一個Map就可以對action class 進行單體測試了。
在一個專案中可能會有很多action都需要用到session,如果每個session都來實現
org.apache.struts2.interceptor.SessionAware這個介面,可能會顯得麻煩,所以建議做一個抽象的
BaseAction類來實現org.apache.struts2.interceptor.SessionAware介面,以後
所有的action只要繼承這個BaseAction就可以了。
01
<%@ page contentType="text/html; charset=UTF-8" %>
02
<%@page pageEncoding="utf-8" %>
03
<%@taglib prefix="s" uri="/struts-tags" %>
04
<html>
05
06
<head>
07
<title>Session Test</title>
08
</head>
09
10
<body>
11
<h1><s:property value="#session.USER_NAME"/></h1>
12
<h1></h1>
13
</body>
14
</html>
一般在專案中往往會往session裡放置一個Object,比如說user,user裡面有個boolean admin和
String username。如果user裡存放在isAdmin的方法中,在jsp中可以通過
<s:if test="#session.user.admin">來判斷使用者有沒有管理許可權,
通過<s:property value="#session.user.userName">或者來取得使用者名稱。