使用拦截器判断用户是否登录与是否登录超时,struts2中
1.struts中的配置
<interceptors>
<!-- 声明拦截器 -->
<interceptor name="logInterceptor" class="com.oa.util.LogInterceptor"></interceptor>
<!-- 配置新的拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="logInterceptor">
</interceptor-ref>
<!-- 引入defaultStack -->
<!-- 全局的每个action都会拦截 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<global-results>
<result name="logout" type="redirect">/jsp/login.jsp</result>
</global-results>
<action name="*_*" class="{1}Action" method="{2}">
<!-- 使用拦截器 -->
<interceptor-ref name="myStack"></interceptor-ref>
<result name="success">/jsp/{1}/{1}_{2}.jsp</result>
</action>
2.拦截器类:
import org.apache.struts2.ServletActionContext;
import com.oa.pojo.system.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LogInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation ai) throws Exception {
// TODO Auto-generated method stub
User user=(User) ServletActionContext.getRequest().getSession().getAttribute("login");
if(user==null){
ServletActionContext.getRequest().getSession().setAttribute("info", "用户已下线,请重新登录");
return "logout";
}else{
return ai.invoke();
}
}
}
3.拦截器与过滤器比较:
1、拦截器是基于java的反射机制的,而过滤器是基于函数回调
2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
执行顺序 :过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。
个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);
过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;
Action处理完成返回后,拦截器还可以做其他过程,再向上返回到过滤器的后续操作。
分享到:
相关推荐
本文根据java代理实现CXF拦截器异常时只能进入fault拦截器而不能继续向下执行的问题。 利用java代理让RMI具有拦截器的功能。
在Java拦截器中,每个拦截器可以视为链上的一个节点,当请求到来时,它会依次经过每个拦截器。如果拦截器决定处理请求,它可以直接返回结果,否则将请求传递给下一个拦截器。这种方式使得拦截器可以灵活地组合和解耦...
### Java Struts 实现拦截器的关键知识点 #### Struts2框架概述 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。它利用一系列的组件来处理用户请求并生成响应。其中,拦截器...
拦截器是Java开发中的一种常见技术,尤其在Spring MVC框架中,它扮演着重要角色。拦截器是一种动态拦截方法调用的机制,基于AOP(面向切面编程)思想,能够实现在指定方法调用前后插入额外的逻辑,或者阻止方法的...
例如,你可能需要在拦截器中检查`User-Agent`头来确定用户是使用了Chrome、Firefox还是其他浏览器。这样,你可以对不同浏览器提供兼容性处理,如调整页面样式、禁用某些功能或发送特定的提示信息。 **四、Struts2...
- 可以在拦截器中增加对跨域的支持。 - **如何扩展拦截器的功能?** - 可以通过继承`HandlerInterceptor`并重写方法来实现。 - **如何避免注解被误用?** - 可以通过严格的代码审查流程或在注解中添加更多的约束...
这个压缩包可能包含了一个示例项目,展示了如何在SpringBoot中配置和使用过滤器或拦截器进行登录验证。你可能需要解压并导入到IDE中,按照提供的说明运行和测试,以便更好地理解和学习这个功能。 通过深入理解这些...
以下将详细讲解基于Java实现的IP黑白名单拦截器及其核心概念。 首先,我们来看标题提及的“ip黑白名单拦截器java示例”。IP拦截器的主要任务是检查请求的源IP地址,如果该地址存在于黑名单中,拦截器会阻止其访问;...
本文将深入探讨Struts2拦截器的原理以及它与Java中的动态代理之间的联系。 首先,让我们了解Struts2拦截器的基本工作原理。拦截器在Action执行前后被调用,形成一个拦截器链。每当一个HTTP请求到达,Struts2的...
2. **配置拦截器**:在Spring的配置文件(如`web.xml`或`spring-mvc.xml`)中,我们需要注册这个拦截器,将其添加到拦截器链中。 3. **设置请求编码**:在`preHandle`方法中,我们可以获取到HttpServletRequest对象...
Java拦截器(Interceptor)是Java应用开发中一种重要的设计模式,尤其在企业级应用和框架中,如Spring、Struts2、MyBatis等。它主要用于在方法执行前后添加额外的功能,比如日志记录、性能统计、事务管理、权限验证...
1. **Java拦截器**: - AOP(面向切面编程)基础:Spring框架中的拦截器是基于AOP的概念,它允许开发者定义“切面”来封装横切关注点,如事务管理。 - 拦截器链:多个拦截器可以形成一个链,每个拦截器在目标方法...
在Java企业级应用开发中,Spring MVC框架提供了一种名为拦截器(Interceptor)的功能,它与Servlet中的过滤器(Filter)类似,但有其独特的用法和功能。拦截器主要用于在用户请求到达控制器处理逻辑之前或之后进行...
在Struts框架中,拦截器扮演着关键角色,它们提供了AOP(面向切面编程)的能力,使得开发者可以在不修改业务逻辑的情况下,对请求处理流程进行增强或监控。 1. **Struts拦截器**: - 拦截器是Struts2的核心组件之...
在Java Web开发中,拦截器(Interceptor)是一个重要的概念,特别是在使用MVC框架如Struts2时。拦截器可以理解为一种预处理和后处理机制,它在请求到达控制器之前和离开控制器之后进行操作,例如日志记录、权限检查...
在这个“java拦截器小实验(银行账户)”中,我们将探讨如何使用Java的动态代理机制来实现一个简单的银行账户操作拦截器。 首先,让我们理解什么是代理(Proxy)。代理模式是结构型设计模式,它提供了一种对目标...
如果你希望在拦截器中处理404错误,你可以在`preHandle`或`postHandle`方法中检查请求路径,如果找不到对应的Controller方法,可以手动设置响应状态码为404并返回自定义的错误信息。 对于500错误,SpringBoot同样...