在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标签概述 Struts2标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列预定义的标签,...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web框架,由Apache软件基金会维护。在深入理解`struts2-core-2.3.7`源码之前,我们先概述一下Struts2的基本概念和核心组件。 1. **Action**: Struts2...
请注意,由于Struts2的生命周期和依赖注入特性,可能需要在测试中对某些对象(如Session、Request、Response)进行模拟或配置。此外,如果你的应用使用了Spring等依赖注入框架,可能还需要额外的配置来使Struts2 ...
Struts2标签经常与OGNL(Object-Graph Navigation Language)表达式一起使用,允许动态访问和操作对象的属性。例如,`s:property value="%{#session.user.name}"`将显示Session中的user对象的name属性值。 **7. ...
6. **OGNL表达式语言(OGNL)**:Struts2使用OGNL作为默认的表达式语言,用于在Action和视图之间传递数据。`ognl`包中的类和接口实现了OGNL的解析和执行。 7. **异常处理(Exception Handling)**:在`struts2-core...
4. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,允许在JSP页面、Action类和配置文件中方便地访问和操作对象属性。 5. **Freemarker和Velocity模板**:Struts2支持使用这两...
10. **注解支持(Annotations)**:从Struts2.1版本开始,框架引入了注解支持,允许开发者在Action类和方法上使用注解进行配置,这部分代码位于`org.apache.struts2.convention.annotation`包中。 在研究源码时,...
5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为表达式语言,用于在Action与视图之间传递数据。 6. **ActionContext**:ActionContext是Struts2中上下文对象,存储了当前请求的相关信息,如...
标签库还包括其他有用的功能,比如条件渲染(`<s:if>`和`<s:else>`)、循环(`<s:iterator>`)、以及对Struts2内置对象(如`action`、`session`和`request`)的访问。 Struts2-layout还支持自定义布局,你可以创建...
4. **表达式语言(OGNL)**:Struts2使用OGNL(Object-Graph Navigation Language)作为默认的表达式语言,用于在Action、ValueStack和视图层之间传递数据。例如,`#{user.name}`可以在JSP中直接访问Action中的user...
Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型转换、数据验证和国际化等功能。在这个压缩包中,包含了该核心库的源代码,对于学习和理解Struts2的工作原理及其内部机制极具...
6. **模型验证**:Struts2支持数据验证,可以在Action类中或者使用注解来定义验证规则。例如,我们可以验证用户名和密码不能为空,长度是否符合要求等。 7. **Session管理**:在登录成功后,一般会将用户信息存储在...
5. **OGNL(Object-Graph Navigation Language)**:Struts2默认使用OGNL作为表达式语言,用于在Action与视图之间传递数据。通过OGNL,可以在JSP页面中直接访问Action属性,或者在Action中动态设置模型数据。 6. **...
在 Struts2 中,Session 的使用主要通过实现 SessionAware 接口来实现,本文将详细介绍 Struts2 中的 Session 用法。 一、Session 概念 在 Web 应用程序中,Session 是指服务器端用于存储用户数据的存储空间。...
除了ActionSupport,Struts2还提供了ActionContext,它封装了请求、响应、session以及应用上下文等关键信息,使得在Action中访问这些对象变得简单。另外,`com.opensymphony.xwork2.ObjectFactory`负责创建对象,...
Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建企业级Java Web应用程序。这个"struts2-3-1常用包"集合包含了Struts2与Spring和Hibernate集成时所需的常用库,帮助开发者高效地搭建和管理基于这三个...
开发者可能使用Hibernate或MyBatis这样的持久层框架来管理数据库操作,同时结合Struts2的Action和Service层实现业务逻辑,最后通过JSP页面展示图书信息。 4. **购物车模块**:购物车模块负责处理用户的选购行为,...
接着,在Struts2的配置文件中,我们可以使用Spring插件(struts2-spring-plugin)来声明Action类,并指定其由Spring容器创建和管理。 在Action类中,通过@Autowired注解注入SessionFactory,然后通过SessionFactory...
5. **验证用户输入**: 当用户提交表单时,Struts2会调用另一个Action来验证用户输入的验证码是否与session中的值匹配。如果匹配,验证成功;如果不匹配,提示用户重新输入。 6. **安全考虑**: 为了增加安全性,...
4. **OGNL**: Struts2使用OGNL作为默认表达式语言,用于在Action、值栈(Value Stack)和视图之间传递数据。OGNL能方便地访问对象的属性,执行方法,以及进行动态表达式计算。 5. **ActionContext**: 保存了当前...