首页 技术 正文
技术 2022年11月23日
0 收藏 469 点赞 4,564 浏览 1925 个字

在Struts2里,如果需要在Action中使用session,可以通过下面两种方式得到
1.通过ActionContext class中的方法getSession得到
2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作

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

  1. package s2.ex.action;
  2. import java.util.Map;
  3. import com.opensymphony.xwork2.ActionContext;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. public class SessionTestAction extends ActionSupport {
  6. public String execute() {
  7. ActionContext actionContext = ActionContext.getContext();
  8. Map session = actionContext.getSession();
  9. session.put(“USER_NAME”, “Test User”);
  10. return SUCCESS;
  11. }
  12. }

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

下面是一个实现org.apache.struts2.interceptor.SessionAware接口来对session操作的例子

  1. package s2.ex.action;
  2. import java.util.Map;
  3. import org.apache.struts2.interceptor.SessionAware;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. public class SessionTest1Action extends ActionSupport implements SessionAware {
  6. private Map session;
  7. public void setSession(Map session) {
  8. this.session = session;
  9. }
  10. public String execute() {
  11. this.session.put(“USER_NAME”, “Test User 1”);
  12. return SUCCESS;
  13. }
  14. }

在这个例子中实现了接口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的例子。

  1. <%@ page contentType=”text/html; charset=UTF-8″ %>
  2. <%@page pageEncoding=”utf-8″ %>
  3. <%@taglib prefix=”s” uri=”/struts-tags” %>
  4. <html>
  5. <head>
  6. <title>Session Test-JAVA中文网:http://www.javaweb.cc/</title>
  7. </head>
  8. <body>
  9. <h1><s:property value=”#session.USER_NAME”/></h1>
  10. <h1></h1>
  11. </body>
  12. </html>

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,985
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,501
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,345
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,128
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,763
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,839