`

Struts2中跟踪用户状态

阅读更多
应用系统中,用户登录后,通常需要把相关登录信息添加为Session的状态信息。
为了访问request、response以及session等Servlet对象,在struts2中可以有两类方法,分别是IoC方式和非IoC方式:
1.非IoC方式
Struts 2提供了ActionContext类(com.opensymphony.xwork2.ActionContext)和ServletActionContext(org.apache.struts2.ServletActionContext)。
a)获得session:
ActionContext类提供了一个getSession方法,但该方法返回的类型不是HttpSession,而是Map。这与Struts2的设计哲学有关,Struts2为了简化Action类的测试,将Action类和Servlet API完全分离,因此getSession方法的返回值类型是Map,而不是HttpSession。
虽然ActionContext的getSession方法返回的不是HttpSession对象,但struts2的系列拦截器会负责该Session和HttpSession之间的转换。
修改Action类的execute方法,在execute中通过ActionContext访问Web应用的Session。
ActionContext.getContext().getSession().put("user" , getUsername()); 

b)获得request对象:
HttpServletRequest request = ServletActionContext.getRequest ();  

ActionContext ct= ActionContext.getContext()  
HttpServletRequest request=(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST); 


2.IoC方式:

a)获得request对象:
第一步:让action实现ServletRequestAware接口
第二步:在action中声明一个HttpServletRequest类型的实例变量
第三步:在action中实现ServletRequestAware接口的setServletRequest方法,实现方式很简单,如下所示。
private HttpServletRequest request;
public void setServletRequest(HttpServletRequest request) {
    this.request = request;
} 

b)获得Session对象(注意,此时的session是SessionMap类型):
第一步:让action实现SessionAware接口
第二步:在action中声明一个HttpServletRequest类型的实例变量
第三步:在action中实现SessionAware接口的setSession方法,实现方式很简单,如下所示。
private Map session;
publicvoid setSession(Map session) {
    this. session = session;
} 


一般情况下SessionMap已经可以完成所有的工作,我们不必再去碰底层的session了
分享到:
评论
1 楼 蔡华江 2009-09-18  
补充:
implementsSessionAware

相关推荐

    java_jsp项目源码_项目申报系统(Struts2+Spring+Hibernate++Mysql5).rar

    项目申报系统是一个基于Struts2、Spring、Hibernate和MySQL5技术的综合信息平台,旨在简化项目申报流程,提高管理效率。该系统适用于各类企事业单位、政府部门和其他组织,支持多用户同时在线操作,实现信息的集中...

    java_jsp项目源码_网上订餐系统(struts+spring+hibernate).rar

    * 订单处理:餐厅可以查看、接受或拒绝顾客的订单请求,并实时跟踪订单状态。 * 顾客反馈:餐厅可以查看顾客的评价和反馈,以便改进服务质量。 3. **管理员模块:** * 餐厅审核:管理员可以审核新注册的餐厅,...

    毕业设计,基于SSH2+MySql+Bootstrap+EasyUI开发的物流企业订单管理系统,含Java完整源代码,数据库脚本

    后台技术:Struts2 + Spring + Hibernate 本系统主要针对物流工作人员,管理员等用户的需求进行设计,最终实现企业物流制度等的网上完成。该系统实现了工作人员登记订单等信息。系统分为4个模块,分别是登录模块、...

    JSP基于SSH2物流企业订单管理系统毕业源码+数据库.zip

    后台技术:Struts2 + Spring + Hibernate 本系统主要针对物流工作人员,管理员等用户的需求进行设计,最终实现企业物流制度等的网上完成。该系统实现了工作人员登记订单等信息。系统分为4个模块,分别是登录模块、...

    JSP基于SSH2物流企业订单管理系统

    ## 后台技术:Struts2 + Spring + Hibernate 本系统主要针对物流工作人员,管理员等用户的需求进行设计,最终实现企业物流制度等的网上完成。该系统实现了工作人员登记订单等信息。系统分为4个模块,分别是登录模块...

    JSP基于SSH2物流企业订单管理系统设计

    ## 后台技术:Struts2 + Spring + Hibernate 本系统主要针对物流工作人员,管理员等用户的需求进行设计,最终实现企业物流制度等的网上完成。该系统实现了工作人员登记订单等信息。系统分为4个模块,分别是登录模块...

    实验室预约管理系统(ssh+jsp+mysql5.x)含运行截图

    实验室预约管理系统(SSH+JSP+MySQL5.x) 是为学术机构和教育机构设计的一款预约平台,它的核心功能包括实验室的预约、管理、使用状态跟踪以及资源优化分配。该系统致力于简化实验室的预约流程,提高实验室的使用效率...

    JSP基于SSH2物流企业订单管理系统源码.7z

    后台技术方面,我们采用Struts2负责请求转发与响应,Spring进行业务逻辑处理,Hibernate实现数据持久化。 本系统专为物流工作人员和管理员量身打造,旨在实现企业物流制度的在线化操作。系统包含四个核心模块:登录...

    JSP基于SSH2物流企业订单管理系统+源代码+文档说明+数据库.zip

    后台技术:Struts2 + Spring + Hibernate 本系统主要针对物流工作人员,管理员等用户的需求进行设计,最终实现企业物流制度等的网上完成。该系统实现了工作人员登记订单等信息。系统分为4个模块,分别是登录模块、...

    龙门物流管理系统(Ext+SSH).rar

    通过这些模块,用户可以方便地跟踪货物的状态、管理库存、生成报表和分析数据。此外,系统的界面设计简洁明了,操作流程直观易懂,大大提高了用户的工作效率。同时,由于采用了模块化的设计,系统具有良好的扩展性...

    J2EE应用开发详解

    104 第8章 Struts2框架 105 8.1 Web应用的发展 105 8.2 Struts2的起源和体系结构 106 8.3 Struts2核心部分详解 108 8.3.1 核心控制器FilterDispatcher 108 8.3.2 业务逻辑控制器Action 111 8.3.3 业务逻辑组件 116 ...

    办公系统源代码(sturts2,hibernate,mysql)

    开发语言:java +jsp +struts2+hibernate 开发环境:MyEclipse 数据库: MySQL 系统架构:B/S架构 服务器:Apache Tomcat 二、系统包含模块 1、档案管理系统 2、联系人管理系统 3、费用管理系统 4、库存管理系统 5、...

    办公管理系统

    开发语言:java +jsp +struts2+hibernate 开发环境:MyEclipse 数据库: MySQL 系统架构:B/S架构 服务器:Apache Tomcat 1、档案管理系统 2、联系人管理系统 3、费用管理系统 4、库存管理系统 5、客户管理系统 1...

    java面试题

    72.5. Struts 2框架的大致处理流程如下: 68 72.6. Struts体系结构中的组件 69 72.7. struts如何实现国际化 70 72.8. struts2.0的常用标签 71 72.9. action是单实例还是多实例,为什么? 73 72.10. Struts的validate...

    Java面试宝典2010版

    18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他用户。...

    最新Java面试宝典pdf版

    18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...

    Java面试笔试资料大全

    18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...

    JAVA面试宝典2010

    18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...

    Java面试宝典-经典

    18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...

Global site tag (gtag.js) - Google Analytics