`

Struts2拦截器控制session失效

阅读更多
com.opensymphony.xwork2.interceptor.AbstractInterceptor; 

import javax.servlet.http.HttpServletResponse; 
import org.apache.struts2.ServletActionContext; 
import com.huangt.bean.SystemUser; 
/* session过期、登录有效性及操作的权限验证拦截器 */ 
@SuppressWarnings("serial") 
public class LoginedCheckInterceptor extends AbstractInterceptor { 
/** 拦截请求并进行登录有效性验证 */ 
public String intercept(ActionInvocation ai) throws Exception { 
HttpServletRequest request = (HttpServletRequest)ai.getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
//取得请求的URL 
String url = ServletActionContext.getRequest().getRequestURL().toString(); 
HttpServletResponse response = ServletActionContext.getResponse(); 
response.setHeader("Pragma","No-cache"); 
response.setHeader("Cache-Control","no-cache"); 
response.setHeader("Cache-Control", "no-store"); 
response.setDateHeader("Expires",0); 
//对登录与注销请求直接放行,不予拦截 
if (url.indexOf("login.action")!=-1 || url.indexOf("logout.action")!=-1){ 
return ai.invoke(); 
} 
else{
//验证Session是否过期 
if(!ServletActionContext.getRequest().isRequestedSessionIdValid()){ 
//session过期,转向session过期提示页,最终跳转至登录页面 
return "tologin"; 
} 
else{ 
HttpSession session = request.getSession();
String userId = (String)session.getAttribute(SessionConstant.SESSION_USER)
//验证是否已经登录 
if (userId == null){ 
//尚未登录,跳转至登录页面 
return "tologin"; 
}else{ 
return ai.invoke(); 

} 
} 
} 
} 
} 
分享到:
评论

相关推荐

    struts2拦截器使用(用户session失效后的统一页面指向).docx

    在这个文档中,我们关注的是Struts2的拦截器(Interceptor)的使用,特别是如何在用户Session失效后将其重定向到一个统一的页面。拦截器是Struts2框架的核心组件之一,它在Action执行前后执行特定的逻辑,提供了扩展...

    struts2拦截器和验证框架(适合初学者-经藏版)

    如果在具体的控制器中显式引用了拦截器,那么默认的拦截器栈将失效。 #### 六、拦截器栈的作用 拦截器栈可以包含多个拦截器,这些拦截器按照配置的顺序依次执行。拦截器栈提供了一种灵活的方式来组合不同的拦截器...

    Spring+Struts2+hibernate+Redis整合

    - Struts2拦截器:如果需要在Struts2中使用缓存,可以自定义拦截器,实现请求前检查缓存,请求后更新缓存的功能。 6. **优化与实践**: - 使用Redis的发布/订阅(Pub/Sub)功能进行消息通信,例如通知缓存更新。 -...

    Ajax Session失效跳转登录页面的方法

    本文主要针对该问题提供了详细的解决方案,并以Struts2框架为例,讲解了如何通过拦截器来实现这一功能。 首先,Session失效拦截器的建立是解决该问题的关键步骤。拦截器的工作原理是在用户的请求到达服务器端后,由...

    struts2与cookie实现自动登录

    - Struts2的拦截器或自定义过滤器会检测到这个Cookie,读取其值并解密。 - 检查解密后的Token是否存在于服务器的Session中。如果存在,说明该用户已经通过了身份验证,可以直接跳转到主页面,实现自动登录效果;...

    struts2令牌

    例如,在`struts-default.xml`文件中定义了一个默认的拦截器栈`defaultStack`,其中包含了`actionTokenInterceptor`和`TokenSessionStoreInterceptor`两个拦截器,用于执行令牌的验证工作。 ```xml ...

    Struts2 图片验证码

    在实际应用中,Struts2的拦截器(Interceptor)机制也可以用来增强验证码的处理。例如,可以编写一个专门的拦截器,对每个请求检查是否需要验证码,以及验证用户输入的验证码是否正确。 总的来说,Struts2图片...

    ajax请求Session失效问题

    因此,我们可以在服务器端的拦截器(如Struts2的Interceptor)中检查这个字段,以此来区分AJAX请求和普通请求。 以下是一个简单的示例,展示了如何在Struts2拦截器中处理这个问题: ```java public String ...

    struts做的登陆

    - **预处理**:可以使用Struts2的内置拦截器或自定义拦截器,在Action执行前进行一些操作,如权限检查。 - **后处理**:在Action执行后,拦截器可以做一些收尾工作,如记录日志。 8. ** session管理** - **登录...

    完美解决ajax访问遇到Session失效的问题

    以下是一个简单的Struts2拦截器示例,用于处理Ajax请求和Session失效的情况: ```java public String intercept(ActionInvocation invocation) throws Exception { ActionContext ac = invocation....

    JSP和Struts解决用户退出问题

    Struts提供了ActionServlet和ActionForm类,可以在用户退出时清理相关数据,并结合Interceptor拦截器来控制页面流向。Struts的配置文件可以设定拦截器链,确保用户在未验证的情况下无法访问受保护的页面。 总的来说...

    struts下的多台web服务器登陆处理

    对于Struts框架,可以利用Struts的拦截器实现自定义的登录验证逻辑,结合上述方法实现跨服务器的登录状态一致性。 总之,处理多台Web服务器的登录问题,需要考虑系统的扩展性、性能和安全性,选择合适的技术方案并...

    struts token机制解决表单重复提交

    1. **配置Action**:在Struts的配置文件(struts.xml或struts.properties)中,为需要防止重复提交的Action添加一个拦截器,通常是`token`和`tokenSession`拦截器。 2. **生成Token**:在Action的准备方法(Prepare...

    struts 令牌机制(Token)

    `<interceptor-ref name="token">`表示使用了令牌拦截器,`<param name="strict">true</param>`表示开启严格模式,即当令牌失效时,会抛出异常,而不是简单地返回输入页面。 此外,`TokenAwareActionSupport`类是...

    Struts2+Spring3.0+Hibernate开发问题总结+知识讲解

    其核心概念包括拦截器(Interceptor)、结果类型(Result)和Action配置。在实际开发中,可能会遇到如Action调用异常、视图解析错误等问题,解决方法通常涉及检查配置文件、依赖注入及Action类的编写。 2. **Spring...

    SSH整合项目中容易出现的错误

    统一异常处理策略,如使用Spring的@ControllerAdvice或Struts2的全局异常拦截器。 以上只是部分常见的SSH整合错误,实际开发中可能还会遇到其他问题。解决这些问题需要对SSH框架有深入理解,熟悉其内部原理和配置...

    struts1的令牌解决页面重复提交问题

    在struts-config.xml中,添加`token`拦截器到Action配置中,确保它在`execute`拦截器之前: ```xml ``` #### 2.3 表单处理 在JSP页面上,添加一个隐藏字段来存放令牌值: ```jsp <!-- form fields -->...

    struts token的例包

    - 在Action类中,可以使用`TokenSessionStore`拦截器,它会在用户请求时生成Token,并将其存入Session。 - 在JSP页面中,通过`s:token`标签生成隐藏字段,将Token放入表单中。 - 提交表单时,`TokenSessionStore`...

Global site tag (gtag.js) - Google Analytics