`

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

相关推荐

    struts2连接数据库实现用户登录.pdf

    HTTP会话用于跟踪用户的访问,确保用户在整个会话期间可以维持状态。例如,在success.jsp页面上可能会读取sessionM中的信息来展示登录用户的个性化内容。 通过上述知识点的详细介绍,可以看出一个基于Struts2框架...

    struts2 课程设计

    在Struts2中,可以创建Action类处理HTTP请求,返回相应的商品数据,然后通过JSP页面进行展示。同时,Ajax技术可以用来实现无刷新的动态加载,提高用户体验。 2. **购物车管理**:购物车功能涉及添加商品、修改数量...

    struts2_core-jar

    在Struts2中,使用commons-logging可以方便地进行日志记录,帮助开发者调试和跟踪应用程序的运行状态。 在压缩包文件名称列表中的"struts2-jar"可能包含了所有这些组件的集合,即Struts2的核心库,这将使开发者能够...

    Struts2调试方法

    4. **跟踪Action调用**:理解Struts2的Action调用流程。请求到达后,Struts2会根据URL映射找到对应的Action,然后通过ActionInvocation对象依次执行拦截器和Action方法。 5. **理解拦截器**:拦截器是Struts2的重要...

    struts2 bookstore 网上书店 jsp 课程设计

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用,尤其在构建企业级应用程序时。在这个“struts2 bookstore 网上书店 jsp 课程设计”项目中,我们将深入理解Struts2如何与JSP(Java...

    struts2实现的OA协同办公系统

    3. 工作流管理:支持任务分配、审批流程、状态跟踪等,可能利用Struts2的Action和Interceptor实现流程控制和状态管理。 4. 通知提醒:当有新的任务或消息时,系统应能及时通知用户,这可能需要邮件服务或消息队列的...

    基于Struts2的班级网站

    总的来说,这个基于Struts2的班级网站项目涵盖了Struts2框架的多个关键方面,对于初学者来说,这是一个很好的实践平台,可以深入理解MVC架构、Action、拦截器、结果类型、文件上传以及用户状态管理等核心概念。...

    struts2-ebook 网上购书系统

    在Struts2中,订单创建可能通过表单提交Action,支付处理可能对接第三方支付API,而订单状态更新则依赖于后台服务的异步处理。此外,邮件通知、短信提醒等增值服务也可能在此模块实现。 6. **JSP视图层**:JSP文件...

    struts2+cookies实现购物车

    这一特性使得Cookies成为保存用户状态、个性化设置以及跟踪用户行为的有效手段。 ### 使用Cookies实现购物车 #### 背景 在电子商务网站中,购物车是一个核心功能,它允许用户在多次浏览商品后选择性购买。然而,...

    struts2登录,以及输入校验的demo

    - **会话管理**:登录成功后,创建一个会话来跟踪用户状态,防止未授权访问。 - **错误处理**:对可能出现的异常进行捕获和处理,提供友好的错误提示。 通过分析这个示例,你可以学习到如何在Struts2环境中搭建基本...

    Struts2解决未更新会话标识

    在Web应用开发中,会话标识(Session ID)是一个至关重要的概念,它用于跟踪用户在整个应用程序中的状态。当用户登录后,服务器通常会为该用户创建一个会话,并分配一个唯一的会话ID,通过这个ID来识别用户。然而,...

    struts2实现ajax

    在Struts2中实现Ajax(Asynchronous JavaScript and XML)可以极大地提升Web应用的用户体验,因为它允许部分页面动态更新,而无需整个页面刷新。以下是对Struts2实现Ajax的详细解释: 1. **Ajax基础**: Ajax的...

    Struts2 Request Process Procedure

    请求首先到达的是Struts2的过滤器Dispatcher,它通常是web应用部署描述符(web.xml)中的一个Filter。过滤器Dispatcher负责拦截所有请求,检查是否属于Struts2的请求。 3. **ActionContext初始化**: 在请求被...

    文件的断点上传struts2

    这个模块可能包括Action类、配置文件、前端界面代码等组件,帮助开发者快速集成断点上传功能到Struts2应用中。 总之,实现Struts2的断点上传需要对文件上传流程进行深入理解和定制,涉及文件分块、服务器存储、...

    struts2+spring+ibatis用户管理

    6. **会话管理**:Spring的Session管理可以帮助跟踪用户的登录状态,防止未授权的访问。 7. **数据库连接管理**:Spring的DataSource配置可以管理数据库连接,提供事务控制,确保数据的一致性。 这个项目不仅展示...

    Spring+hibernate+Struts2电子商城设计

    1. 用户模块:Struts2处理登录、注册、用户信息修改等请求,Spring管理用户会话状态,Hibernate负责存储和查询用户数据。 2. 商品模块:用户浏览商品,搜索、排序、过滤等功能,这些可以通过Struts2的Action和Spring...

    网上书店(struts2+hibernate3.2+Mysql)

    购物车状态的管理可以通过session范围的属性在Struts2中实现。 4. 订单处理:用户确认购买后,系统会生成订单,保存订单详情,包括书籍信息、价格、数量、收货地址等。这里会涉及多个数据库表的操作,如订单表、...

    struts2_session_权限检查并控制重复登录源码

    2. **Session检查**:在Web应用中,Session是一种常用的技术来跟踪用户的登录状态。当用户成功登录后,服务器会在用户的浏览器上创建一个唯一的Session ID,并将用户信息(如用户名、角色等)存储在服务器端的...

    广运物流(struts2+jsp+mysql)

    在物流系统中,Struts2负责接收用户通过浏览器发送的请求,根据配置的Action映射,调用对应的业务逻辑方法,处理完业务后,再将结果返回给用户。Struts2提供了一套完整的拦截器机制,可以方便地实现请求验证、权限...

    JSP+Struts2开发诚欣企业免费电子商城网站系统源代码

    4. 订单处理:下单、支付、订单状态跟踪,确保交易流程顺畅。 5. 客户服务:常见问题解答、在线客服、售后服务等,提高用户满意度。 6. 管理后台:商品管理、订单管理、用户管理等,便于商家对商城运营进行有效控制...

Global site tag (gtag.js) - Google Analytics