在Struts
裡
如果需要在Action中使用session
可以通過下面兩種方式得到
通過ActionContext class中的方法getSession得到
Action實現org
apache
struts
interceptor
SessionAware接口的方式來對session進行操作
下面先看一個采用第一種方式
在action中得到session的例子
package s
ex
action;
import java
util
Map;
import com
opensymphony
xwork
ActionContext;
import com
opensymphony
xwork
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
struts
interceptor
SessionAware接口來對session操作的例子
package s
ex
action;
import java
util
Map;
import org
apache
struts
interceptor
SessionAware;
import com
opensymphony
xwork
ActionSupport;
public class SessionTest
Action 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
)
return SUCCESS;
}
}
在這個例子中實現了接口SessionAware中的setSession方法
上面兩種方式都可以得到session
能實現的功能都是一樣的
這裡推薦通過第二種方式來使用session
原因是便於做單體測試
用第二種方式
只需要構造一個Map就可以對action class進行單體測試了
在一個項目中可能會有很多action都需要用到session
如果每個action都來實現 org
apache
struts
interceptor
SessionAware這個接口
可能會顯得比較麻煩
所以建議作一個抽象的 BaseAction類來實現org
apache
struts
interceptor
SessionAware接口
以後所有的action只要繼承這個BaseAction就可以了
下面是一個如何在JSP中使用session的例子
<%@ page contentType=
text/html; charset=UTF
%>
<%@page pageEncoding=
utf
%>
<%@taglib prefix=
s
uri=
/struts
tags
%>
<html>
<head>
<title>Session Test</title>
</head>
<body>
<h
><s:property value=
#session
USER_NAME
/></h
>
</body>
</html>
一般在項目中往往會往session裡放置一個Object
必如說user
user裡有個boolean admin和String userName
如果user裡存在isAdmin的方法
在jsp中可以通過<s:if test=
#session
user
admin
>來判斷用戶有沒有管理權限
通過<s:property value=
#session
user
userName
>或者來取得用戶名
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27858.html