`

[Struts2] Action Implements SessionAware

    博客分类:
  • java
阅读更多

Struts2 的Action中若希望访问Session对象,

可采用两种方式: 1、从ActionContext中获取; 2、实现SessionAware接口。

1、从ActionContext中获取:

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

2、实现SessionAware接口:

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

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

  1. <interceptors>  
  2.   ...  
  3.   <interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/>  
  4.   ...  
  5. </interceptors>  
  6. <interceptor-stack name="defaultStack">  
  7.   ...  
  8.   <interceptor-ref name="servletConfig"/>  
  9.   ...  
  10. </interceptor-stack>  

打开ServletConfigInterceptor.java源码:

  1. public String intercept(ActionInvocation invocation) throws Exception {  
  2.     final Object action = invocation.getAction();  
  3.     final ActionContext context = invocation.getInvocationContext();  
  4.       
  5.     ...  
  6.     if (action instanceof SessionAware) {  
  7.         ((SessionAware) action).setSession(context.getSession());  
  8.     }  
  9.     ...  
  10.     return invocation.invoke();  

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

本文转载自http://blog.csdn.net/puffCN/article/details/5607557

 

 

 

 

分享到:
评论

相关推荐

    Struts2中的session用法

    在 Struts2 中,要使用 Session,需要实现 SessionAware 接口,该接口提供了一个 setSession 方法,用于将 Session 对象传递给 Action。在 Login.java 文件中,我们可以看到,Login 类实现了 SessionAware 接口,并...

    Struts2 创建简单步骤

    当用户访问`/hello.action`时,Struts2会调用这个Action,如果执行成功,将会跳转到`/HelloWorld.jsp`页面。 ### 创建Action类 在`src/main/java/com/example`目录下创建`HelloWorldAction.java`,实现一个简单的...

    Struts2零配置

    在传统的Struts2应用中,开发者需要在多个XML文件中配置Action、结果页面、拦截器等,而“零配置”则是对这种繁琐配置的优化。 **一、Struts2框架基础** Struts2是一个基于MVC(Model-View-Controller)设计模式的...

    Struts2使用Annotation返回Json

    在Struts2中,我们通常会用到`@Action`、`@Result`等注解来定义一个Action类和其结果。要返回JSON,我们需要引入Struts2的JSON插件。该插件提供了处理JSON输出的能力,使Action可以直接返回Java对象,而无需手动构建...

    struts2零配置入门代码

    在传统的Struts2配置中,这些Action类和方法会在struts.xml文件中定义。 然而,通过“零配置”或“注解驱动”的方式,我们可以避免创建struts.xml文件,而是直接在Action类上使用注解来定义行为。例如,@Action注解...

    \MyEclipse8下struts2开发例程及解析

    import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport implements SessionAware { private static final long ...

    struts2使用request、response

    import org.apache.struts2.interceptor.SessionAware; import java.util.Map; public class MyAction extends ActionSupport implements SessionAware { private Map, Object&gt; session; @Override public ...

    Struts2在Action中获得Response对象的四种方法

    在Struts2框架中,Action类是业务逻辑的核心,它负责处理用户请求并返回相应的结果。然而,与Struts1.x不同,Struts2的Action类不再直接接收HttpServletRequest和HttpServletResponse对象作为execute方法的参数。这...

    配置第一个Struts2的简单登陆程序

    4. 在`itstudy/WEB-INF/classes`目录下创建`struts.xml`文件,这是Struts2的核心配置文件,它定义了Action、结果和其他配置。基础配置可能如下: ```xml &lt;!DOCTYPE struts PUBLIC "-//Apache Software ...

    struts2的简单应用

    在Struts2框架中,Action是核心组件,它负责处理用户的请求并控制应用程序的行为。当我们说“初始化执行action完成数据库操作”,这意味着我们将创建一个Action类,该类将在应用程序启动时被调用,用于执行与数据库...

    Struts2简单可运行实例

    import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; import java.util.Map; public class HelloWorldAction extends ActionSupport implements SessionAware { ...

    Struts2 环境的搭建

    Struts2的主配置文件是struts.xml,这个文件用于定义Action、结果类型、拦截器等。在项目的src/main/resources目录下创建struts.xml文件,内容如下: ```xml &lt;!DOCTYPE struts PUBLIC "-//Apache Software ...

    Struts2环境搭建

    5. **配置struts.xml**:在`src/main/resources/`下创建`struts.xml`文件,这是Struts2的配置文件,用来定义Action和结果映射。例如: ```xml &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD ...

    搭建struts2简单环境

    2. **配置Struts2**: 在src/main/webapp/WEB-INF目录下创建struts.xml文件,这是Struts2的配置文件,用来定义Action和结果。一个简单的配置可能如下: ```xml &lt;!DOCTYPE struts PUBLIC "-//Apache Software ...

    在Struts 2中实现CRUD

    Action类通常包含一个或多个表示业务逻辑的方法,这些方法与Struts 2配置文件中的Action映射相关联。例如,我们可以创建一个`BookAction`类,如下所示: ```java package tutorial.action; import org.apache....

    Struts2教程:获得HttpServletResponse对象

    这个接口定义了一个方法`setServletResponse(HttpServletResponse response)`,当Action实例被创建时,Struts2框架会自动调用这个方法将`HttpServletResponse`对象注入到Action中。 下面是一个具体的示例代码: ``...

    struts_strut2连接mysql数据库_

    import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; import java.util.Map; public class DisplayUsersAction extends ActionSupport implements SessionAware {...

    struts学习笔记

    在Struts2框架中,Action类是业务逻辑的核心,它接收来自前端页面的请求并执行相应的操作。为实现登录功能,我们需要创建一个名为`LoginAction`的类。这个类通常会继承自`ActionSupport`,因为它提供了很多内置的...

    STRUTS2获得session和request

    在实现了这个接口后,STRUTS2会在执行Action之前自动调用`setServletRequest`方法,将`HttpServletRequest`对象注入到Action中。 示例代码: ```java public class UserLoginAction extends ActionSupport ...

    传智播客struts2框架2016版视频教程笔记

    import org.apache.struts2.interceptor.SessionAware; public class MyAction implements Action, ApplicationAware, SessionAware { private Map, Object&gt; session; @Override public void setSession(Map, ...

Global site tag (gtag.js) - Google Analytics