`
newleague
  • 浏览: 1505062 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Struts2自定义拦截器实例—Session超时的处理

 
阅读更多

版本:struts2.1.6

实例功能:当用户登陆后,session超时后则返回到登陆页面重新登陆。

为了更好的实现此功能我们先将session失效时间设置的小点,这里我们设置成1分钟

修改web.xml

 

  1.  <session-config>  
  2. <session-timeout>1</session-timeout>  
  3. </session-config>  

 

 

 

此实例用到的jsp页面及登陆所涉及到的相关代码请参考:

Struts2自定义拦截器实例—登陆权限验证

 

实现自定义拦截器类

 

  1. package com.ywjava.interceptor;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import com.opensymphony.xwork2.Action;  
  6. import com.opensymphony.xwork2.ActionContext;  
  7. import com.opensymphony.xwork2.ActionInvocation;  
  8. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;  
  9. import com.ywjava.action.LoginAction;  
  10. import com.ywjava.utils.Constants;  
  11.   
  12. public class SessionIterceptor extends AbstractInterceptor {  
  13.   
  14.     @Override  
  15.     public String intercept(ActionInvocation actionInvocation) throws Exception {  
  16.         ActionContext ctx = ActionContext.getContext();  
  17.         Map session = ctx.getSession();  
  18.         Action action = (Action) actionInvocation.getAction();  
  19.         if (action instanceof LoginAction) {  
  20.             return actionInvocation.invoke();  
  21.         }  
  22.         String userName = (String) session.get(Constants.USER_SESSION);  
  23.         if (userName == null) {  
  24.             return Action.LOGIN;  
  25.         } else {  
  26.             return actionInvocation.invoke();  
  27.         }  
  28.     }  
  29.   
  30. }  

 

 

 

struts.xml中定义并使用此拦截器

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.1.dtd">  
  5. <struts>  
  6.     <package name="authority" extends="struts-default">  
  7.       
  8.         <!-- 定义一个拦截器 -->  
  9.         <interceptors>  
  10.             <interceptor name="authority"  
  11.                 class="com.ywjava.interceptor.LoginInterceptor">  
  12.             </interceptor>  
  13.             <interceptor name="sessionout"  
  14.              class="com.ywjava.interceptor.SessionIterceptor"></interceptor>  
  15.             <!-- 拦截器栈 -->  
  16.             <interceptor-stack name="mydefault">  
  17.                 <interceptor-ref name="defaultStack" />  
  18.                 <interceptor-ref name="authority" />  
  19.                 <interceptor-ref name="sessionout"/>  
  20.             </interceptor-stack>  
  21.         </interceptors>  
  22.   
  23.         <!-- 定义全局Result -->  
  24.         <global-results>  
  25.             <!-- 当返回login视图名时,转入/login.jsp页面 -->  
  26.             <result name="login">/login.jsp</result>  
  27.         </global-results>  
  28.   
  29.         <action name="loginform"  
  30.             class="com.ywjava.action.LoginFormAction">  
  31.             <result name="success">/login.jsp</result>  
  32.         </action>  
  33.           
  34.         <action name="login" class="com.ywjava.action.LoginAction">  
  35.             <result name="success">/welcome.jsp</result>  
  36.             <result name="error">/login.jsp</result>  
  37.             <result name="input">/login.jsp</result>  
  38.         </action>  
  39.   
  40.         <action name="show" class="com.ywjava.action.ShowAction">  
  41.             <result name="success">/show.jsp</result>  
  42.             <!-- 使用此拦截器 -->  
  43.             <interceptor-ref name="mydefault" />  
  44.         </action>  
  45.           
  46.     </package>  
  47. </struts>  

 

 

 

当我们登陆后一分钟不做任何操作刷新后则会跳转到登陆页面

分享到:
评论

相关推荐

    struts2自定义拦截器(处理用户未登录非法请求)

    在这个实例中,我们将探讨如何创建一个自定义拦截器来处理未登录用户的非法请求。 首先,我们需要理解Struts2拦截器的工作原理。拦截器是基于Java的动态AOP(面向切面编程)实现的,它们按照配置的顺序组成一个链,...

    struts2与shiro集成(实例)

    Struts2采用了拦截器(Interceptor)机制,开发者可以通过自定义拦截器实现诸如日志记录、权限检查等预处理或后处理操作。此外,Struts2支持多种结果类型,如JSP、FreeMarker、Velocity等,方便视图的展示。 接下来...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_9_拦截器 共32页.pptx

    ### Java Struts2 拦截器知识点解析 #### 一、Struts2拦截器概述 **知识点1:拦截器的概念** - **定义**: 拦截器(Interceptor)是Struts2框架的一个核心特性。它负责在Action执行前后进行一系列操作。 - **功能*...

    Struts2解决未更新会话标识

    可以自定义拦截器来处理会话更新,例如在用户登录成功后,更新会话ID,并设置相关的用户信息。 2. **ActionContext**:ActionContext是Struts2中用于获取和设置请求、响应、session等上下文信息的对象。在Action的...

    servlet AND Struts2笔记

    - 强大的拦截器机制:可以自定义拦截器来处理请求前后的逻辑。 - 内置表单标签库:提供了丰富的HTML表单标签,方便快速构建表单。 - 支持多种视图技术:除了传统的JSP,还支持Freemarker、Velocity等多种视图技术...

    Struts关于登陆

    5. **Interceptor拦截器**: Struts2引入了Interceptor,可以扩展框架的功能,如权限检查、日志记录等。在登录系统中,可以自定义拦截器,如LoginInterceptor,用于检查用户是否已登录,未登录则跳转到登录页面。 6....

    JAVA_ee 登录系统

    - **Interceptor**: 拦截器是Struts2的核心特性之一,允许在Action执行前后插入自定义逻辑,如登录验证、日志记录、权限检查等。在这个登录系统中,可能包含了验证用户身份的拦截器。 - **Result**: 结果是Action...

    SSH框架配置文件及web.xml jar包

    Struts2的配置文件通常为`struts.xml`,其中定义了Action(控制器)和结果页面的映射,以及拦截器等配置。在SSH框架中,Struts2会根据`struts.xml`来决定如何转发请求到对应的业务处理方法。 2. **Spring**:Spring...

    在飞实习学J2EE之路:12.9.5 Struts用DBCP连接池(登陆,注册)

    2. AOP(面向切面编程)集成:可以使用Struts的拦截器或者Spring AOP来注入数据源,使得每次数据库操作都能获取到连接池中的连接。 3. 数据访问对象(DAO)层:在DAO层的接口和实现类中,使用`BasicDataSource`获取...

    java必备知识点大全.pdf

    Ajax请求Session超时问题:Ajax请求可能会遇到Session超时的问题,需要特别处理。 Java线程池概述:Java线程池可以重用一组线程来执行多个任务,提高程序性能。 OSCache概述:OSCache用于将频繁访问的数据缓存在...

    权限分配Shiro案例(推荐)

    4. **拦截器和过滤器**:在Spring MVC或Struts2等框架中,Shiro可以集成到拦截器或过滤器链中,以控制对URL或方法的访问。例如,我们可以配置一个`shiroFilter`,设定不同的URL路径需要的权限级别。 5. **会话管理*...

    06.2、框架—其他(12题)1

    【知识点详解】 1. Hibernate的状态管理...Session一般有超时设置,超时后Session将被服务器销毁。开发者可以通过HttpSession接口在Java Web应用中操作Session,如设置、获取、移除属性,以及设置Session的有效时间。

    servlet-3-1-specification.pdf

    过滤器用于拦截请求与响应,用于执行如日志记录、加密、数据压缩等预处理和后处理操作。它们可以串联执行,形成过滤器链。 10. 会话管理(Session) Servlet通过会话跟踪机制(Session Tracking)来管理用户会话。...

    深入Java Servlet网络编程

    2. 监听器(Listener):监听web应用中的特定事件,如session创建、销毁、请求到达等,进行相应处理。 七、MVC模式与Servlet 1. Model-View-Controller:一种软件设计模式,Servlet常作为Controller处理请求,与...

    自整理Java关于基础和框架的面试题

    - **Struts2**:基于拦截器的设计模式。 ##### Struts2中result中的type类型 - **dispatcher**:转发到一个JSP页面。 - **redirect**:重定向到一个URL。 - **chain**:调用另一个Action。 ##### Struts2标签 - ...

    java面试问题汇总(非常全面)

    - **基于拦截器**:使用 Struts2 的拦截器进行数据验证。 #### 30. JavaScript起到什么样的作用,在项目中如何使用? JavaScript 用于实现网页的交互功能,如动态效果、表单验证等。在项目中通常与 HTML、CSS 结合...

    java面试知识

    ### Java面试知识详解 #### 基础篇 ##### JDK常用的包 - **java.lang**:包含所有编程必需的基础类,如String、Math等。 - **java.util**:提供了大量...##### Ajax请求Session超时问题 - **解决方法**: - 设置...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    12-java软件工程师(初级)笔试题.pdf

    Struts2是Struts1的后继者,引入了拦截器、值栈和OGNL(对象图导航语言)等概念,提供了更加灵活的控制器层。JSF(JavaServer Faces)是一个基于组件的用于构建Web用户界面的Java标准,它将页面标记与后端代码分离。...

Global site tag (gtag.js) - Google Analytics