实例功能:当用户登陆后,session超时后则返回到登陆页面重新登陆。
为了更好的实现此功能我们先将session失效时间设置的小点,这里我们设置成2分钟,其中默认为30分钟
1、修改web.xml
<session-config>
<session-timeout>2</session-timeout>
</session-config>
2、实现自定义拦截器类
public class SessionInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
Map session=actionInvocation.getInvocationContext().getSession();
Action action = (Action) actionInvocation.getAction();
if (action instanceof LoginAction) {
return actionInvocation.invoke();
}
String userId = (String) session.get("userId");
//如果用户为空则跳到LOGIN页面,否则退出拦截
System.out.println("用户ID"+userId);
if(userId==null){
return "error";
}else{
return actionInvocation.invoke();
}
}
}
3、struts.xml中定义并使用此拦截器
<!-- 定义一个拦截器 -->
<interceptors>
<interceptor name="sessionout" class="com.base.interceptor.SessionInterceptor"></interceptor>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="sessionout"/>
</interceptor-stack>
</interceptors>
<!-- 定义全局Result -->
<global-results>
<!-- 当返回login视图名时,转入/login.jsp页面 -->
<result name="error" >/login.jsp</result>
</global-results>
4、在其他struts2.xml配置文件中引用此拦截器配置
<action name="sign" class="com.huge.email.sign.SignAction">
<interceptor-ref name="mydefault"/>
</action>
其中需要注意的是当自定义拦截器的时候由于没有对登录的action进行拦截,自定义拦截器中通过代码
Action action = (Action) actionInvocation.getAction();
if (action instanceof LoginAction) {
return actionInvocation.invoke();
}
没有对登录进行拦截,如果对登录进行了拦截则永久无法登录,所以这里import了
import com.opensymphony.xwork2.Action;
所以这里就需要其他的action类继承actionSupport类,因为actionSupport同样继承与action类!
分享到:
相关推荐
在Struts2中,拦截器是实现业务逻辑和表示层解耦的重要工具,它们允许开发者在请求到达Action之前或之后执行特定的操作。在这个实例中,我们将探讨如何创建一个自定义拦截器来处理未登录用户的非法请求。 首先,...
2. **配置拦截器**:然后,在Struts2的配置文件(通常为`struts.xml`或`struts-default.xml`)中注册这个拦截器。 ```xml <!-- 其他拦截器配置 --> <default-interceptor-ref name="defaultStack"/> <!-- 引入...
在Struts2中,拦截器扮演着非常重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如验证、日志、事务管理等。本话题主要探讨如何利用拦截器实现在用户成功登录后,将其重定向到登录前访问的页面。 首先,...
dwz框架实现拦截器 session超时跳转登陆页面 DWZ框架 struts2拦截器 session超时
在权限控制方面,Struts2提供了拦截器机制,允许我们自定义拦截器实现用户权限的验证。 2. **Session检查**:在Web应用中,Session是一种常用的技术来跟踪用户的登录状态。当用户成功登录后,服务器会在用户的...
4. 在Struts2的配置文件中,将这个拦截器添加到默认的拦截器链或者自定义拦截器链中。 5. 编写Action,对需要进行权限控制的方法,可以在方法上添加注解,指定需要的权限。 6. 当用户访问受保护的资源时,Struts2的...
### Java Struts2 拦截器知识点解析 #### 一、Struts2拦截器概述 **知识点1:拦截器的概念** - **定义**: 拦截器(Interceptor)是Struts2框架的一个核心特性。它负责在Action执行前后进行一系列操作。 - **功能*...
2. **全局拦截器**:为了在整个应用程序中统一处理登录检查,可以创建一个自定义的Struts2拦截器。这个拦截器将在每个请求处理之前运行,检查session中是否存在用户信息。 ```java public class AuthInterceptor ...
### Struts拦截器防止未登录访问内部系统的详细解析 在基于SSH2框架(Struts2、Spring、Hibernate)的Web应用程序开发中,确保系统安全至关重要,尤其是防止未授权访问内部资源。本文深入探讨如何利用Struts2的拦截...
可以创建自定义的拦截器来检查Session中是否有已登录的用户,或者直接在Action中进行验证。 5. **数据验证**:在Action的`login()`方法中,需要对用户输入的数据进行校验。可以使用Struts2的Validator框架,通过...
**拦截器(Interceptor)**是Struts2框架的核心特性之一,它允许开发者在Action执行前后插入自定义逻辑。拦截器可以用来实现日志记录、权限检查、事务处理等跨切面的功能。在登录场景中,拦截器通常用于验证用户的...
1. **使用拦截器(Interceptors)**:Struts2的核心特性之一是拦截器,它们可以在Action执行前后执行特定的任务。可以自定义拦截器来处理会话更新,例如在用户登录成功后,更新会话ID,并设置相关的用户信息。 2. *...
Struts2的拦截器(Interceptor)可以进一步增强这些操作,如添加事务控制、日志记录等。 2. **国际化**: Struts2支持国际化(i18n)功能,允许根据用户的语言环境显示相应的文本。这通过在资源包(如message....
- **预处理**:可以使用Struts2的内置拦截器或自定义拦截器,在Action执行前进行一些操作,如权限检查。 - **后处理**:在Action执行后,拦截器可以做一些收尾工作,如记录日志。 8. ** session管理** - **登录...
3. **配置Struts2**:在Struts2的配置文件`struts.xml`中,添加Shiro拦截器,并将它添加到默认的或自定义的栈中。 4. **编写控制器**:在Struts2的Action类中,可以通过`Subject`对象进行登录、登出等操作。例如,`...
6. **使用拦截器**:Struts2提供了丰富的拦截器,如Validation拦截器可以自动进行字段验证,LoginInterceptor可以检查用户是否已登录。你可以在配置文件中添加这些拦截器以增强功能。 7. **安全考虑**:在实际项目...
1. **启用Token插件**:在Struts2的配置文件`struts.xml`中,需要启用Token拦截器栈,如下所示: ```xml <package name="default" extends="struts-default"> <!-- 是否将错误信息放入session,以便在JSP...
可以使用Struts2的拦截器来实现登录检查,拦截所有需要登录才能访问的Action。 2. **Cookie管理**:在用户成功登录后,我们在服务器端生成一个唯一的Session ID,并将其存储在Cookie中。这个Cookie将在用户每次访问...
在Struts2中,我们首先需要配置`struts.xml`文件,它是整个应用的核心配置文件,定义了动作映射、拦截器和结果类型等。对于登录验证,我们会在其中创建一个对应于登录操作的动作类映射。例如,可以定义一个名为`...