`
mysecondgod
  • 浏览: 18609 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Struts2-session的使用[转]

 
阅读更多
在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>

<h1></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">或者来取得用户名。


2.------------->>>>>>>>>>>>>
在ActionSupport子类的execute方法中存储session
Map session = ActionContext.getContext().getSession();
session.put("logged-in","true");



同样在execute方法中,可以清除session变量
Map session = ActionContext.getContext().getSession();
session.remove("logged-in");



在jsp的head部分引入css文件
<head>
     <link href="<s:url value="/css/main.css"/>" rel="stylesheet" type="text/css"/> 
</head>

在jsp访问session
session Time: </b><%=new Date(session.getLastAccessedTime())%>

<a href="<%= request.getContextPath() %>/roseindia/logout.action">Logout</a>

jsp中使用struts-tag访问session变量
<s:if test="#session.login != 'admin'">
<jsp:forward page="/pages/uiTags/Login.jsp" /> 
</s:if>

分享到:
评论

相关推荐

    struts2-tags-API,struts2标签api

    `struts2-tags-API`就是这样一个资源,它包含了Struts2标签API的详细文档,帮助开发者理解和使用这些标签。 一、Struts2标签概述 Struts2标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列预定义的标签,...

    struts2-core-2.3.7源码

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web框架,由Apache软件基金会维护。在深入理解`struts2-core-2.3.7`源码之前,我们先概述一下Struts2的基本概念和核心组件。 1. **Action**: Struts2...

    struts2-junit-plugin-2.1.8.1.jar

    请注意,由于Struts2的生命周期和依赖注入特性,可能需要在测试中对某些对象(如Session、Request、Response)进行模拟或配置。此外,如果你的应用使用了Spring等依赖注入框架,可能还需要额外的配置来使Struts2 ...

    struts2-tags-API.rar

    Struts2标签经常与OGNL(Object-Graph Navigation Language)表达式一起使用,允许动态访问和操作对象的属性。例如,`s:property value="%{#session.user.name}"`将显示Session中的user对象的name属性值。 **7. ...

    struts2-core-2.1.8.1 xwork-core-2.1.6源码

    6. **OGNL表达式语言(OGNL)**:Struts2使用OGNL作为默认的表达式语言,用于在Action和视图之间传递数据。`ognl`包中的类和接口实现了OGNL的解析和执行。 7. **异常处理(Exception Handling)**:在`struts2-core...

    struts2-core-2.0.11.jar

    4. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,允许在JSP页面、Action类和配置文件中方便地访问和操作对象属性。 5. **Freemarker和Velocity模板**:Struts2支持使用这两...

    struts2-core-2.0.11源码

    10. **注解支持(Annotations)**:从Struts2.1版本开始,框架引入了注解支持,允许开发者在Action类和方法上使用注解进行配置,这部分代码位于`org.apache.struts2.convention.annotation`包中。 在研究源码时,...

    struts2-jar包

    5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为表达式语言,用于在Action与视图之间传递数据。 6. **ActionContext**:ActionContext是Struts2中上下文对象,存储了当前请求的相关信息,如...

    struts2-layout

    标签库还包括其他有用的功能,比如条件渲染(`&lt;s:if&gt;`和`&lt;s:else&gt;`)、循环(`&lt;s:iterator&gt;`)、以及对Struts2内置对象(如`action`、`session`和`request`)的访问。 Struts2-layout还支持自定义布局,你可以创建...

    struts2-core-2.1.6.jar

    4. **表达式语言(OGNL)**:Struts2使用OGNL(Object-Graph Navigation Language)作为默认的表达式语言,用于在Action、ValueStack和视图层之间传递数据。例如,`#{user.name}`可以在JSP中直接访问Action中的user...

    struts-xwork-core源码

    Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型转换、数据验证和国际化等功能。在这个压缩包中,包含了该核心库的源代码,对于学习和理解Struts2的工作原理及其内部机制极具...

    struts2-login-example.rar_struts2 example_struts2 login

    6. **模型验证**:Struts2支持数据验证,可以在Action类中或者使用注解来定义验证规则。例如,我们可以验证用户名和密码不能为空,长度是否符合要求等。 7. **Session管理**:在登录成功后,一般会将用户信息存储在...

    starting-struts2-chinese.rar

    5. **OGNL(Object-Graph Navigation Language)**:Struts2默认使用OGNL作为表达式语言,用于在Action与视图之间传递数据。通过OGNL,可以在JSP页面中直接访问Action属性,或者在Action中动态设置模型数据。 6. **...

    Struts2中的session用法

    在 Struts2 中,Session 的使用主要通过实现 SessionAware 接口来实现,本文将详细介绍 Struts2 中的 Session 用法。 一、Session 概念 在 Web 应用程序中,Session 是指服务器端用于存储用户数据的存储空间。...

    struts2-api-2.0.1.jar.zip

    除了ActionSupport,Struts2还提供了ActionContext,它封装了请求、响应、session以及应用上下文等关键信息,使得在Action中访问这些对象变得简单。另外,`com.opensymphony.xwork2.ObjectFactory`负责创建对象,...

    struts2-3-1常用包

    Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建企业级Java Web应用程序。这个"struts2-3-1常用包"集合包含了Struts2与Spring和Hibernate集成时所需的常用库,帮助开发者高效地搭建和管理基于这三个...

    struts2-ebook 网上购书系统

    开发者可能使用Hibernate或MyBatis这样的持久层框架来管理数据库操作,同时结合Struts2的Action和Service层实现业务逻辑,最后通过JSP页面展示图书信息。 4. **购物车模块**:购物车模块负责处理用户的选购行为,...

    struts2-spring-hibernate

    接着,在Struts2的配置文件中,我们可以使用Spring插件(struts2-spring-plugin)来声明Action类,并指定其由Spring容器创建和管理。 在Action类中,通过@Autowired注解注入SessionFactory,然后通过SessionFactory...

    struts2-生成图片验证码

    5. **验证用户输入**: 当用户提交表单时,Struts2会调用另一个Action来验证用户输入的验证码是否与session中的值匹配。如果匹配,验证成功;如果不匹配,提示用户重新输入。 6. **安全考虑**: 为了增加安全性,...

    struts2-API.rar

    4. **OGNL**: Struts2使用OGNL作为默认表达式语言,用于在Action、值栈(Value Stack)和视图之间传递数据。OGNL能方便地访问对象的属性,执行方法,以及进行动态表达式计算。 5. **ActionContext**: 保存了当前...

Global site tag (gtag.js) - Google Analytics