`

Struts2 获取session《转》

    博客分类:
  • SSI
阅读更多

在Struts2里,如果需要在Action中使用session,可以通过下面两种方式得到   

1.通过ActionContext class中的方法getSession得到   

2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作   

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

package s2.ex.action;
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;
    }
}   

在这个例子中,通过ActionContext得到session,并往session里放置一个key为USER_NAME,值为Test User的内容。
下面是一个实现org.apache.struts2.interceptor.SessionAware接口来对session操作的例子   

package s2.ex.action;
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;
    }
}   

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

<%@ page contentType="text/html; charset=UTF-8" %>
<%@page pageEncoding=
"utf-8" %>
<%@taglib prefix="s" uri=
"/struts-tags" %>
<html>
<head>
<title>Session Test</title>
</head>
<body>
    <h1><s:property value=
"#session.USER_NAME"/></h1>
</body>
</html>  

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

分享到:
评论

相关推荐

    struts2 获取request

    struts2 获取request session对象

    struts2中request和session的获取

    这两种方式都是通过`ActionContext`来获取Session对象,第一种直接通过`getSession()`方法得到,第二种则通过`getContext()`方法后,再根据`ActionContext.SESSION`获取。 ### 应用场景示例 1. **用户认证**:在...

    Struts2中的session用法

    Struts2 中的 Session 用法 Struts2 框架中,Session 是一个非常重要的概念,它允许开发者在服务器端存储一些数据,以便在多个请求之间共享这些数据。在 Struts2 中,Session 的使用主要通过实现 SessionAware 接口...

    struts2访问application、session以及request等web资源的示例代码

    在Struts2中,访问Web资源,如application、session和request,是常见的操作,这有助于实现数据共享和传递。本示例代码将帮助开发者更好地理解和运用这些功能。 一、Application域对象 Application域对象在所有用户...

    STRUTS2获得session和request

    在探讨STRUTS2框架中如何获取session和request这一核心知识点时,我们首先需要理解STRUTS2框架的运行机制以及session与request在Web开发中的基础概念。 ### STRUTS2框架简介 STRUTS2是Apache软件基金会下的一个...

    Struts2的Action中获得request response session几种方法

    以下将详细介绍如何在Struts2的Action中获取request、response、session。 ### 1. 使用ActionContext获取request、response、session Struts2的Action可以通过`ActionContext`来间接获取`request`、`response`和`...

    Struts2访问request,session,application的四种方式

    在Action中,`ognl.get("session[key]")`可以获取session中的数据,非常方便。 4. **Interceptor(拦截器)**: 拦截器是Struts2的另一个核心特性,它们可以在Action执行前后进行额外的操作。开发者可以自定义拦截...

    struts2访问request,session,application作用域

    在 Struts2 中,处理用户请求时经常需要使用到 Servlet 的内置对象,比如 Request、Session 和 Application,这些对象可以帮助开发者存储和获取数据。然而,在实际应用中,为了避免代码与 Servlet API 过度耦合,...

    简单的struts2拦截器利用session拦截用户登录.docx

    通过这样的配置,Struts2框架会在执行任何需要登录的Action之前,先检查用户是否已经登录(通过Session中的 `systemUser` 对象)。如果未登录,会重定向到登录页面。这种方式可以有效地保护应用程序的资源,防止未...

    Struts2 的Action使用session的方法

    对于Struts2,我们不需要使用Spring的注解,而是直接在Action方法中获取session。 2. **获取session**:在Action方法中,可以通过`ActionContext`来获取当前的session。例如: ```java ActionContext context = ...

    struts2获取response的方法

    以下是对"struts2获取response的方法"的详细说明。 1. **ActionSupport类的实现** Struts2中的Action类通常会继承自`org.apache.struts2.interceptor.StrutsPrepareAndExecuteInterceptor`或`...

    jsp,struts,EL,session等注意总结集合

    JSP和Struts组合提供了动态网页和业务逻辑的处理能力,EL简化了页面表达,Session保证了用户会话的连贯性,JavaMail实现了邮件功能,而Eclipse作为开发工具,提高了开发效率和代码质量。学习并熟练运用这些技术,能...

    struts2 学习重点笔记

    - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类中的 setter 方法相匹配的请求参数,并调用这些方法填充数据。 **3.3 数据传递...

    马士兵Struts2笔记2013

    OGNL是一种强大的表达式语言,用于在Struts2中获取和设置对象属性,以及执行复杂的逻辑操作。在视图层,它可以用来动态地渲染页面内容。 14. **Struts投影** 投影是Struts2中将对象属性映射到视图组件的方式,...

    struts2使用request、response

    在Struts2中,可以使用`SessionAware`接口或者通过`ActionContext`来获取session对象。 1. **使用SessionAware接口:** - 通过实现`SessionAware`接口,可以自动注入session对象。 ```java import org.apache....

    Hibernate与struts2结合使用的demo

    首先,在Struts2的Action中注入Hibernate的SessionFactory,通过SessionFactory获取Session。然后,使用Session执行CRUD操作,处理业务逻辑。Action执行完毕后,通过Result将处理结果转发到相应的JSP页面显示。 ...

    Struts2学习笔记(三) Struts2中访问request,session,和application对象

    在Struts2中,访问request、session和application对象是进行数据共享和传递的重要手段。这篇学习笔记主要探讨了如何在Struts2框架下有效地利用这三种域对象。 首先,request对象代表一次HTTP请求,它存储的数据仅...

    Struts2经典小例题

    在Action类中,可以创建一个getter方法来获取存储在session中的用户名,并通过Struts2的值栈(Value Stack)将其传递给JSP页面。在JSP页面上,我们可以使用OGNL(Object-Graph Navigation Language)表达式来访问并...

    struts2和shiro完美整合解决方案

    Subject代表当前操作的主体(如用户),SecurityManager管理Subject的所有安全操作,Realm是数据源,负责从数据库或其他存储中获取验证和授权信息,而SessionManager则处理会话相关的事务。 整合Struts2和Shiro的...

    struts2-tags-API,struts2标签api

    Struts2是一个强大的Java web框架,它极大地简化了MVC(模型-视图-控制器)应用的开发。在Struts2框架中,标签库是其重要组成部分,它提供了丰富的标签来帮助开发者更方便地构建用户界面。`struts2-tags-API`就是...

Global site tag (gtag.js) - Google Analytics