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接口的实现方式如下:
- <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进行操作了。
本文转载自http://blog.csdn.net/puffCN/article/details/5607557
相关推荐
在 Struts2 中,要使用 Session,需要实现 SessionAware 接口,该接口提供了一个 setSession 方法,用于将 Session 对象传递给 Action。在 Login.java 文件中,我们可以看到,Login 类实现了 SessionAware 接口,并...
当用户访问`/hello.action`时,Struts2会调用这个Action,如果执行成功,将会跳转到`/HelloWorld.jsp`页面。 ### 创建Action类 在`src/main/java/com/example`目录下创建`HelloWorldAction.java`,实现一个简单的...
在传统的Struts2应用中,开发者需要在多个XML文件中配置Action、结果页面、拦截器等,而“零配置”则是对这种繁琐配置的优化。 **一、Struts2框架基础** Struts2是一个基于MVC(Model-View-Controller)设计模式的...
在Struts2中,我们通常会用到`@Action`、`@Result`等注解来定义一个Action类和其结果。要返回JSON,我们需要引入Struts2的JSON插件。该插件提供了处理JSON输出的能力,使Action可以直接返回Java对象,而无需手动构建...
在传统的Struts2配置中,这些Action类和方法会在struts.xml文件中定义。 然而,通过“零配置”或“注解驱动”的方式,我们可以避免创建struts.xml文件,而是直接在Action类上使用注解来定义行为。例如,@Action注解...
import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport implements SessionAware { private static final long ...
import org.apache.struts2.interceptor.SessionAware; import java.util.Map; public class MyAction extends ActionSupport implements SessionAware { private Map, Object> session; @Override public ...
在Struts2框架中,Action类是业务逻辑的核心,它负责处理用户请求并返回相应的结果。然而,与Struts1.x不同,Struts2的Action类不再直接接收HttpServletRequest和HttpServletResponse对象作为execute方法的参数。这...
4. 在`itstudy/WEB-INF/classes`目录下创建`struts.xml`文件,这是Struts2的核心配置文件,它定义了Action、结果和其他配置。基础配置可能如下: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software ...
在Struts2框架中,Action是核心组件,它负责处理用户的请求并控制应用程序的行为。当我们说“初始化执行action完成数据库操作”,这意味着我们将创建一个Action类,该类将在应用程序启动时被调用,用于执行与数据库...
import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; import java.util.Map; public class HelloWorldAction extends ActionSupport implements SessionAware { ...
Struts2的主配置文件是struts.xml,这个文件用于定义Action、结果类型、拦截器等。在项目的src/main/resources目录下创建struts.xml文件,内容如下: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software ...
5. **配置struts.xml**:在`src/main/resources/`下创建`struts.xml`文件,这是Struts2的配置文件,用来定义Action和结果映射。例如: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD ...
2. **配置Struts2**: 在src/main/webapp/WEB-INF目录下创建struts.xml文件,这是Struts2的配置文件,用来定义Action和结果。一个简单的配置可能如下: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software ...
Action类通常包含一个或多个表示业务逻辑的方法,这些方法与Struts 2配置文件中的Action映射相关联。例如,我们可以创建一个`BookAction`类,如下所示: ```java package tutorial.action; import org.apache....
这个接口定义了一个方法`setServletResponse(HttpServletResponse response)`,当Action实例被创建时,Struts2框架会自动调用这个方法将`HttpServletResponse`对象注入到Action中。 下面是一个具体的示例代码: ``...
import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; import java.util.Map; public class DisplayUsersAction extends ActionSupport implements SessionAware {...
在Struts2框架中,Action类是业务逻辑的核心,它接收来自前端页面的请求并执行相应的操作。为实现登录功能,我们需要创建一个名为`LoginAction`的类。这个类通常会继承自`ActionSupport`,因为它提供了很多内置的...
在实现了这个接口后,STRUTS2会在执行Action之前自动调用`setServletRequest`方法,将`HttpServletRequest`对象注入到Action中。 示例代码: ```java public class UserLoginAction extends ActionSupport ...
import org.apache.struts2.interceptor.SessionAware; public class MyAction implements Action, ApplicationAware, SessionAware { private Map, Object> session; @Override public void setSession(Map, ...