java

位置:IT落伍者 >> java >> 浏览文章

struts2 session使用


发布日期:2019年08月21日
 
struts2 session使用
在Struts如果需要在Action中使用session可以通过下面两种方式得到

通过ActionContext class中的方法getSession得到

Action实现orgapachestrutsinterceptorSessionAware接口的方式来对session进行操作

下面先看一个采用第一种方式在action中得到session的例子

package sexaction;

import javautilMap;

import comopensymphonyxworkActionContext;

import comopensymphonyxworkActionSupport;

public class SessionTestAction extends ActionSupport {

public String execute() {

ActionContext actionContext = ActionContextgetContext()

Map session = actionContextgetSession()

sessionput(USER_NAME Test User

return SUCCESS;

}

}

在这个例子中通过ActionContext得到session并往session里放置一个key为USER_NAME值为Test User的内容

下面是一个实现orgapachestrutsinterceptorSessionAware接口来对session操作的例子

package sexaction;

import javautilMap;

import orgapachestrutsinterceptorSessionAware;

import comopensymphonyxworkActionSupport;

public class SessionTestAction extends ActionSupport implements SessionAware {

private Map session;

public void setSession(Map session) {

thissession = session;

}

public String execute() {

thissessionput(USER_NAME Test User

return SUCCESS;

}

}

在这个例子中实现了接口SessionAware中的setSession方法

上面两种方式都可以得到session能实现的功能都是一样的

这里推荐通过第二种方式来使用session原因是便于做单体测试用第二种方式只需要构造一个Map就可以对action class进行单体测试了

在一个项目中可能会有很多action都需要用到session如果每个action都来实现 orgapachestrutsinterceptorSessionAware这个接口可能会显得比较麻烦所以建议作一个抽象的 BaseAction类来实现orgapachestrutsinterceptorSessionAware接口以后所有的action只要继承这个BaseAction就可以了

下面是一个如何在JSP中使用session的例子

<%@ page contentType=text/html; charset=UTF %>

<%@page pageEncoding=utf %>

<%@taglib prefix=s uri=/strutstags %>

<html>

<head>

<title>Session Test</title>

</head>

<body>

<h><s:property value=#sessionUSER_NAME/></h>

</body>

</html>

一般在项目中往往会往session里放置一个Object必如说useruser里有个boolean admin和String userName如果user里存在isAdmin的方法在jsp中可以通过<s:if test=#sessionuseradmin>来判断用户有没有管理权限通过<s:property value=#sessionuseruserName>或者来取得用户名

上一篇:简单概括Hibernate批量操作

下一篇:Tomcat运行Java Web内存溢出总结