拦截器
Struts2中提供了很多特性都是通过拦截器实现的,例如异常处理,文件上传,生命周期回调和验证。拦截器从概念上来讲和Servlet过滤器或JDK的Proxy类是一样的。提供了一种对Action进行预处理和事后处理的功能。
自定义拦截器
要自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口:
public class PermissionInterceptor implements Interceptor {
private static final long serialVersionUID = -5178310397732210602L;
public void destroy() {
}
public void init() {
}
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("进入拦截器");
if(session里存在用户){
String result = invocation.invoke();
}else{
return “logon”;
}
//System.out.println("返回值:"+ result);
//return result;
}
}
<package name="xabc" namespace="/test" extends="struts-default">
<interceptors>
<interceptor name=“permission" class="net.xabc.aop.PermissionInterceptor" />
<interceptor-stack name="permissionStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name=" permission " />
</interceptor-stack>
</interceptors>
<action name="helloworld_*" class="net.xabc.action.HelloWorldAction" method="{1}">
<result name="success">/WEB-INF/page/hello.jsp</result>
<interceptor-ref name="permissionStack"/>
</action>
</package>
因为struts2中如文件上传,数据验证,封装请求参数到action等功能都是由系统默认的defaultStack中的拦截器实现的,所以我们定义的拦截器需要引用系统默认的defaultStack,这样应用才可以使用struts2框架提供的众多功能。
如果希望包下的所有action都使用自定义的拦截器,可以通过<default-interceptor-ref name=“permissionStack”/>把拦截器定义为默认拦截器。注意:每个包只能指定一个默认拦截器。另外,一旦我们为该包中的某个action显式指定了某个拦截器,则默认拦截器不会起作用
分享到:
相关推荐
在SpringBoot框架中,拦截器是一个非常重要的组件,它能够在请求到达控制器(Controller)之前或者之后对请求进行拦截,以完成一些预处理或后处理操作。拦截器通常用于权限检查、日志记录、性能监控等场景。 拦截器...
1. **CXF拦截器基础**:CXF的拦截器是基于JAX-WS规范的Handler Chain模型,分为In-bound(请求进来时触发)和Out-bound(响应出去时触发)两类。拦截器可以通过在服务配置中指定,或者通过编程方式动态添加。 2. **...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而WebService之自定义拦截器的实现,无论是对于服务器端还是客户端,都是为了增强服务的功能性和安全性。本文将深入探讨自定义拦截器的概念、作用以及...
MyBatis拦截器是MyBatis框架中的一种插件机制,允许用户自定义代码来扩展MyBatis的功能。在这个特定的实例中,我们讨论的是一个用于给参数对象属性赋值的拦截器。这个拦截器的主要目标是在执行增删改操作时,自动为...
MyBatis拦截器实现通用权限字段添加的方法 MyBatis拦截器是一种非常实用的技术,可以用来实现各种复杂的数据库操作。本文将详细介绍如何使用MyBatis拦截器来实现通用权限字段添加,达到灵活、可靠、可维护的数据库...
MyBatis 分页拦截器是实现数据库查询分页效果的一种高效解决方案。在传统的SQL查询中,我们通常需要手动编写分页语句,但这容易出错且不易维护。通过使用分页拦截器,我们可以将分页逻辑封装起来,使得在编写Mapper...
请求拦截器和响应拦截器 请求拦截器和响应拦截器是 Axios 库中提供的一种机制,用于在发送请求之前和响应数据返回之前对数据进行处理。下面是对这两个概念的详细解释: 请求拦截器 请求拦截器是指在发送请求之前...
拦截器允许我们在请求被处理之前或之后执行自定义逻辑,比如身份验证、日志记录、权限检查等。在本文中,我们将专注于如何使用SpringBoot拦截器来处理404和500等错误。 首先,创建自定义拦截器类并实现`...
### 拦截器与过滤器的区别 #### 一、概念简介 在现代软件开发过程中,特别是Web应用程序中,为了实现灵活高效的业务逻辑处理及控制流管理,常常会使用到两种设计模式:拦截器(Interceptor)与过滤器(Filter)。...
【uni-app请求拦截器】是基于uni-app框架实现的一种机制,它允许开发者在发送网络请求前和接收到响应后执行自定义的操作。这种机制对于统一处理请求头、数据格式、错误处理以及添加全局的请求前后的逻辑非常有用,极...
然而,在使用拦截器时,可能会遇到拦截器误拦截静态资源文件(如js、css、图片等)的问题。这不仅会影响网页的加载速度,还可能导致页面呈现异常。 在本文中,我们讨论了三种解决SpringMVC拦截器拦截静态资源文件的...
"拦截器解决中文乱码问题"这个主题,主要关注的是如何通过使用拦截器(Interceptor)这一技术手段来预防或解决乱码现象。拦截器是Spring MVC框架中的一个重要组件,它可以对HTTP请求进行预处理和后处理,从而在数据...
在Spring Boot应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...
【理解拦截器】 拦截器是面向切面编程(AOP)的一个重要概念,它允许在方法或字段被访问之前或之后插入额外的操作。这提供了一种灵活的方式,可以在不修改原有代码的情况下,增强或控制程序的行为。在Web开发框架如...
在某些场景下,我们可能需要对SQL进行动态修改或者实现分页功能,这时MyBatis的拦截器机制就显得尤为重要。拦截器允许我们在SQL执行前后插入自定义的行为,例如添加分页条件、修改SQL参数等。 在"MyBatis拦截器分页...
拦截器通过配置文件或者注解与Action关联,形成一个拦截器栈,每个Action的执行都会经过这个栈中的每个拦截器。 JPA(Java Persistence API)是Java平台上的对象关系映射(ORM)标准,用于处理数据库操作。在这个...
- XML配置:在`struts.xml`文件中,使用`<interceptor>`元素定义拦截器,`<interceptor-stack>`元素组合多个拦截器,`<package>`元素下的`interceptors`属性指定拦截器栈。 ```xml <!-- 可以添加其他内置或...
在Java Web开发中,拦截器(Interceptor)是一个重要的概念,特别是在使用MVC框架如Struts2时。拦截器可以理解为一种预处理和后处理机制,它在请求到达控制器之前和离开控制器之后进行操作,例如日志记录、权限检查...
在IT安全领域,IP黑白名单拦截器是一种常见的技术手段,用于增强网络安全,防止恶意或不受信任的IP地址访问系统资源。以下将详细讲解基于Java实现的IP黑白名单拦截器及其核心概念。 首先,我们来看标题提及的“ip...
拦截器在CXF中的工作原理基于JAX-WS规范,可以分为两种类型:`InInterceptors`(入站拦截器)和`OutInterceptors`(出站拦截器)。入站拦截器处理从客户端到服务器的消息,而出站拦截器则处理从服务器返回到客户端的...