在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">或者来取得用户名。