Struts2访问session的两种方法

 Struts2 的Action中若希望访问Session对象,可采用两种方式:

    1、从ActionContext中获取;

    2、实现SessionAware接口。

1、从ActionContext中获取:

    import java.util.Map;

    import com.opensymphony.xwork2.ActionContext;

    import com.opensymphony.xwork2.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;

    }

    }

2、实现SessionAware接口:

    import java.util.Map;

    import org.apache.struts2.interceptor.SessionAware;

    import com.opensymphony.xwork2.ActionSupport;

    public class SessionTest1Action 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 1");

    return SUCCESS;

    }

    }

进一步阅读Struts2.1.8.1源码,SessionAware接口的实现方式如下:

struts-default.xml配置:

  <interceptors>

    …

    <interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/>

    …

    </interceptors>

    <interceptor-stack name="defaultStack">

    …

    <interceptor-ref name="servletConfig"/>

    …

    </interceptor-stack>

打开ServletConfigInterceptor.java源码:

 public String intercept(ActionInvocation invocation) throws Exception {

    final Object action = invocation.getAction();

    final ActionContext context = invocation.getInvocationContext();

    …

    if (action instanceof SessionAware) {

    ((SessionAware) action)。setSession(context.getSession());

    }

    …

    return invocation.invoke();

    }

即在拦截器处理过程中发现目标Action实现了SessionAware接口,便会调用Action中已经实现的setSession(…) 方法,将ActionContext中包装的Session注入目标Action中。目标Action也就可以进一步对Session进行操作了。

版权声明:感觉我写的还算不错的的话希望你能够动动你的鼠标和键盘为我点上一个赞或是为我奉献上一个评论,在下感激不尽!_______________________________________________________欢迎转载,希望在你转载的同时,添加原文地址,谢谢配合

时间: 2024-10-12 12:30:23

Struts2访问session的两种方法的相关文章

Struts2中使用Session的两种方法

在Struts2里,如果需要在Action中使用到session,可以使用下面两种方式: 通过ActionContext 类中的方法getSession得到 Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作 下面先看一个采用第一种方式,在action中得到session的例子 public class SessionTestAction extends ActionSupport { public Stri

c#访问数据库的两种方法以及事务的两种方法

1 //2015/07/03 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Data; 8 using System.Data.SqlClient; 9 10 namespace Ado.netstart_1 11 { 12 class Program 13 {

SpringMVC存取Session的两种方法

方法一:使用servlet-api @Controller public class ManagerController { @Resource private ManagerService managerServiceImpl; @RequestMapping(value = "manager/login.do",method = RequestMethod.GET) public ModelAndView login(ManagerModel managerModel,HttpSe

SpringMVC存取Session的两种方法 转

方法一:使用servlet-api [java] view plain copy print? @Controller public class ManagerController { @Resource private ManagerService managerServiceImpl; @RequestMapping(value = "manager/login.do",method = RequestMethod.GET) public ModelAndView login(Ma

Struts学习笔记(三)struts2中获得request、response和session的三种方法

struts2中获得request.response和session的三种方法   (1)非IoC方式 方法一:使用org.apache.struts2.ActionContext类,通过它的静态方法getContext()获取当前Action的上下文对象. ActionContext ctx = ActionContext.getContext(); ctx.put("liuwei", "andy"); //request.setAttribute("l

实现登录状态保持的两种方法 cookie、session和token

实现登录状态保持的两种方法:第一种,cookie和session的配合使用实现原理:当用户请求页面,一般需要先登录,用户第一次输入用户名和密码之后,前台发送post请求,后台获取用户信息,通过查询数据库来验证用户信息是否正确,如果验证通过,则会开辟一块session空间来储存用户数据,并且同时生成一个cookie字符串,由后台返回给前台,前台接收后,会把这个cookie字符串储存到浏览器的cookie空间中,这个cookie就相当于一把钥匙,可以打开后台存储对应用户信息的锁,当用户下一次请求的时

HTTPS的证书未经权威机构认证的情况下,访问HTTPS站点的两种方法

注意一下文章中提到的jsse在jdk1.4以后已经集成了,不必纠结. 摘 要 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点.本文在简要介绍JSSE的基础上提出了两种解决该问题的方法. 引言 过去的十几年,网络上已经积累了大量的Web应用.如今,无论是整合原有的Web应用系统,还是进行新的Web开发,都要求通过编程来访问某些Web页面.传统的方法是使

(转)linux访问windows共享文件夹的两种方法

有时需要在linux下访问window的共享文件,可以使用mount挂载或使用samba连接. 1,mount挂载 $ mkdir windows 将共享文件夹挂载到windows文件夹: mount -t cifs -o username=user,password=pwd //172.18.191.194/VWare_Systems hgfs 其中几个参数表示含义: cifs:Common Internet File System(微软出的,不必多深究),可以理解为网络文件系统 userna

linux访问windows共享文件夹的两种方法

有时需要在linux下需要访问windows的共享文件夹,可以使用mount挂载或者使用samba连接. 1.mount挂载 首先创建被挂载的目录: $ mkdir windows 将共享文件夹挂载到windows文件夹: $ sudo mount -t cifs -o username=share,password=share //192.168.66.198/share ./windows 其中几个参数表示含义: cifs:Common Internet File System,可以理解为网