本人在实习项目时,在网上找到一个简单的拦截用户登录,总结一下:希望高手指点,继续进步和完善。
首先编写拦截类LoginedCheckInterceptor.java 如下:package com.huangt.interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import 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 {
//取得请求的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);
SystemUser systemUser = null;
//对登录与注销请求直接放行,不予拦截
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{
systemUser = (SystemUser)ServletActionContext.getRequest().getSession().getAttribute("systemUser");
//验证是否已经登录
if (systemUser==null){
//尚未登录,跳转至登录页面
return "tologin";
}else{
return ai.invoke();
}
}
}
}
}
然后用户登陆成功后,设置session的值。在LoginAction中登陆成功后加入一行:
ActionContext.getContext().getSession().put("systemUser",systemUser);
<!--EndFragment-->
<!---->
最为重要的便是struts.xml文件了,本人配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" extends="struts-default">
<!-- 配置自定义拦截器LoginedCheckInterceptor -->
<interceptors>
<interceptor name="loginedCheck" class="com.zjsoft.interceptor.LoginedCheckInterceptor"/>
<interceptor-stack name="mystack">
<interceptor-ref name="loginedCheck" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 定义全局result -->
<global-results>
<!-- 定义名为exception的全局result -->
<result name="exception">/exception.jsp</result>
<result name="tologin" type="redirect">/unlogind.jsp</result>
</global-results>
<!-- 定义全局异常映射 -->
<global-exception-mappings>
<!-- 捕捉到Exception异常(所有异常)时跳转到exception所命名的视图上 -->
<exception-mapping exception="java.lang.Exception" result="exception"/>
</global-exception-mappings>
<!-- 用户登录 -->
<action name="login" class="loginAction" >
<result name="input" >/login.jsp</result>
<result name="error" >/login.jsp</result>
<result name="success" type="redirect">/index.jsp</result>
</action>
<action name="logout" class="com.zjsoft.action.LogoutAction" >
<result name="success" type="redirect">/login.jsp</result>
</action>
<!-- 系统用户信息管理 -->
<action name="listSystemUser" class="systemUserAction" method="listSystemUser">
<result name="success">/listSystemUser.jsp</result>
<interceptor-ref name="mystack" />
</action>
</package>
</struts>
在每个需要拦截登录的action中加入<interceptor-ref name="mystack" /> 便可。
分享到:
相关推荐
在Struts2框架中,拦截器(Interceptor)是实现业务逻辑和控制流程分离的重要工具,它允许开发者在执行Action之前或之后执行某些操作,比如验证用户登录状态。在这个案例中,我们讨论的是如何使用拦截器来检查用户的...
本文将深入探讨如何利用Struts2的拦截器实现简单的登录功能。拦截器是Struts2框架的核心组件之一,它允许我们在动作执行前后插入自定义逻辑,比如权限验证、日志记录等。 首先,我们来理解一下Struts2拦截器的工作...
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...
通过上述方式,我们可以利用Struts2的拦截器机制有效地实现页面访问控制和用户注册功能,同时保持代码的清晰和模块化。在实际开发中,还可以结合其他拦截器,如性能监控、日志记录、事务管理等,进一步增强应用的...
通过这样的设置,Struts2的拦截器就能够帮助我们在用户登录成功后,将其重定向回他们最初尝试访问的页面,提供更好的用户体验。同时,这种方法也使得代码更易于维护,因为登录逻辑与具体业务Action分离,遵循了单一...
Struts2是一个强大的MVC框架,它通过使用拦截器(Interceptor)来实现业务逻辑与表现层的解耦,提供了一种灵活的扩展机制。在Struts2中,拦截器是AOP(面向切面编程)的一种实现,它可以监控、修改或增强方法调用的...
2. **配置拦截器**:然后,在Struts2的配置文件(通常为`struts.xml`或`struts-default.xml`)中注册这个拦截器。 ```xml <!-- 其他拦截器配置 --> <default-interceptor-ref name="defaultStack"/> <!-- 引入...
Struts2的核心是拦截器(Interceptor),它不仅可以用来处理用户请求,还可以进行各种预处理工作,如验证用户输入、转换数据类型等。 #### 二、拦截器基础 拦截器在Struts2中扮演着非常重要的角色,它们可以拦截...
登录验证是Web应用中常见的安全需求,Struts2通过拦截器可以实现对用户登录状态的有效控制。 在Struts2中,拦截器可以分为手动验证和自动验证两种方式。手动验证通常由开发者编写代码来检查用户是否已登录,如果未...
下面我们将详细介绍如何利用Struts2的拦截器来实现用户登录权限的验证。 #### 概念理解 - **拦截器(Interceptor)**:在Struts2框架中,拦截器是一种可以被用来执行预处理和后处理操作的对象。它们可以在Action执行...
本文档将详细介绍如何在Struts2框架中创建一个登录验证拦截器,以确保除了登录请求外,所有其他请求都会被拦截,并检查用户的登录状态。 #### 登录校验拦截器的工作原理 登录校验拦截器的主要作用是检查用户是否...
总的来说,通过 Struts2 的拦截器机制,我们可以实现高效且可复用的登录验证功能,有效地控制用户访问权限,提高系统的安全性。同时,通过合理的配置和页面设计,可以确保用户体验的流畅性。这种基于拦截器的登录...
本文将详细解析Struts2中的拦截器(Interceptor)、CRUD操作以及Action的执行流程。 首先,让我们聚焦于Struts2的拦截器机制。拦截器是Struts2的核心组件,它们在Action执行前后运行,提供了AOP(面向切面编程)的...
在这个"Struts拦截器案例——登陆"中,我们将深入探讨如何利用Struts拦截器实现用户登录功能。 首先,拦截器在Struts2框架中是一种插件机制,它允许我们在动作调用前后插入自定义的逻辑,而无需修改原有的业务代码...
在提供的压缩包`struts2_helloWorld`中,可能包含了一个简单的Struts2项目,展示了如何集成自定义拦截器到Struts2应用中。你可以通过解压文件,运行项目,观察在用户验证失败时如何跳转到“unauthorized”结果页面,...
本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现用户权限拦截。 首先,我们需要了解拦截器的工作原理。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截...
在这个“Struts2拦截器的简单登录应用”中,我们将深入理解如何利用拦截器实现用户登录验证。 首先,Struts2的拦截器机制是基于责任链模式的,它可以看作是在Action调用前后执行的一系列预定义或自定义操作。这些...
Struts2 拦截器是Struts2框架的核心组件之一,它们允许开发者在Action执行前后插入自定义逻辑,实现跨切面的功能。拦截器基于Java的动态代理机制,能够独立于Action和Struts2框架进行扩展和复用。下面我们将深入探讨...
在这个文档中,我们关注的是Struts2的拦截器(Interceptor)的使用,特别是如何在用户Session失效后将其重定向到一个统一的页面。拦截器是Struts2框架的核心组件之一,它在Action执行前后执行特定的逻辑,提供了扩展...