package com.neil;
import com.opensymphony.xwork2.interceptor.Interceptor;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.Action;
import com.derby.dms.domain.User;
import com.derby.dms.util.Constant;
import java.util.Map;
/*
要开发自己的拦截器类,必须实现com.opensympony.xwork2.interceptor.Interceptor接口,该接口必须
要实现三个方法 void destory() void init() String intercept(ActionInvocation invocation) throws Exception
init(): 在该拦截器被执行之前,系统将回调此方法,此方法只执行一次。因此,该方法的方法体主要用于打开一次性资源
例如:数据库连接等。 ,
destory(): 在该拦截器被销毁之前,系统将回调此方法。该方法用于销毁在init()方法里打开的资源。
intercept(ActionInvocation invocation) : 该方法是用户需要实现的拦截动作,就像Action的execute方法一样,
intercept会返回一个字符串作为逻辑视图。ActionInvocation参数包含了被拦截的Action的引用,可以通过调用
该参数的invoke方法,将控制权转给下一个拦截器,或者转给Action的execute方法。
struts2 还提供了一个AbstractInterceptor类,该类提供了一个init和destory方法的空实现,如果我们实现的拦截器
不需要申请资源,则可以无需实现这两个方法。继承该类就可以了
public class SimpleInterceptor implements Interceptor {
public void init() {
}
public void destroy() {
}
public String intercept(ActionInvocation actionInvocation) throws Exception {
return null;
}
}
public class SimpleInterceptor extends AbstractInterceptor {
private String name;
public String intercept(ActionInvocation actionInvocation) throws Exception {
Map session = ActionContext.getContext().getSession();
User user = (User) session.get(Constant.USER);
if (user == null) {
return Action.LOGIN;
}
//执行该拦截器的后一个拦截器,或者直接指定Action的execute方法
return actionInvocation.invoke();
}
public void setName(String name) {
this.name = name;
}
}
分享到:
相关推荐
Struts2 拦截器是Struts2框架的核心组件之一,它允许开发者在Action执行前后插入自定义的处理逻辑,实现对请求的预处理和后处理,从而增强应用程序的功能和控制流程。以下是对Struts2拦截器原理与实现的详细解析: ...
浅谈基于过滤器与拦截器的用户访问控制,stuts2中拦截器和过滤器的应用
在Spring MVC中,有两种常见的机制可以用来对访问的URL进行拦截处理:拦截器(Interceptor)和过滤器(Filter)。这两者都可以实现预处理和后处理功能,但它们的工作方式和应用场景有所不同。 ### 拦截器...
在本文中,我们将深入探讨SpringMVC的拦截器(Interceptor)和Servlet的过滤器(Filter)之间的差异和联系,以及如何配置SpringMVC的拦截器。理解这两者的区别对于开发高效且安全的Web应用程序至关重要。 首先,让我们...
进阶学习时,你需要关注的是ActionServlet的扩展,比如自定义拦截器,以及ActionForm的变种,如DynaActionForm和LazyValidatorForm,它们提供了动态属性和延迟验证功能。此外,Struts的验证框架、分发Action、...
通过 `__set()` 和 `__get()`,我们可以实现一种类似于拦截器的机制,控制对象属性的访问。例如,我们可以在这些方法中加入验证、类型检查或者日志记录等操作,增强代码的安全性和可维护性。在上述示例中,创建了一...
在拦截器链中,每个拦截器都有机会修改ValueStack中的属性值,这意味着在Action方法执行前,请求参数可以在拦截器之间传递和修改。最终,当拦截器链执行完毕,ValueStack顶层的属性值会被赋给Action类的相应属性,...
浅谈SpringMVC HandlerInterceptor诡异问题排查 SpringMVC中的HandlerInterceptor是非常重要的组件之一,它可以在请求处理的各个阶段进行干预和修改。本文将主要介绍如何排查SpringMVC HandlerInterceptor中的诡异...
浅谈Spring Cloud Ribbon的原理 Spring Cloud Ribbon是一个基于Netflix的开源项目,主要提供客户端的软件负载均衡算法,将中间层服务连接在一起。Ribbon客户端组件提供了一系列完善的配置项,如连接超时、重试等。...
浅谈Vue网络请求之interceptors实际应用 本文主要介绍了Vue网络请求之interceptors实际应用的知识点,包括使用axios request拦截器和axios response拦截器来实现token的携带和刷新。下面是详细的知识点总结: 1. ...
浅谈spring-boot允许接口跨域并实现拦截(CORS) Spring Boot中实现CORS(Cross-Origin Resource Sharing,跨域资源共享)机制是为了解决不同域名、协议或端口下的资源请求问题。在Spring Boot项目中,我们可以使用...
Java接口校验是Java开发中一个非常重要的topic,本文将为大家介绍Java三种方式实现接口校验,包括AOP、MVC拦截器等方式,并对每种方式的实现进行详细的分析和讲解。 一、AOP方式实现接口校验 AOP(Aspect-Oriented...
在《Web安全架构浅谈》中,主要讨论了Web安全的多个方面,包括安全架构、扫描器、WAF(Web应用防火墙)以及面临的挑战和解决方案。以下是详细的知识点解析: 1. **Web安全扫描器**: - 扫描器用于检测Web应用中的...
当用户发送请求时,ActionServlet首先拦截请求,依据struts.config.xml配置文件将请求转发给相应的Action对象。Action对象执行业务逻辑,更新Model状态,并可能调用其他JavaBean或EJB来处理更复杂的业务。执行完成后...
在Spring框架中,回调机制常用于拦截器(Interceptor)和AOP(面向切面编程),允许在方法调用前后插入自定义逻辑。此外,回调还可以用于线程间的通信,例如在多线程编程中,一个线程完成特定任务后通知另一个线程...
拦截器允许开发者在Action执行前后插入自定义的逻辑,如权限检查、日志记录等,提高了代码的复用性和模块化。此外,WebWork还提供了强大的数据绑定功能,能够自动将表单参数映射到Action类的属性,减少了手动处理...
5. **启动监听器和拦截器**:启动监听器和拦截器,准备接受HTTP请求。 6. **完成启动**:应用程序启动完成,监听端口并准备处理请求。 #### 五、总结 本文主要介绍了如何构建Spring Boot源码环境,并通过一个简单...
过滤器是Servlet技术的一部分,可以拦截请求和响应,在它们被进一步处理之前进行预处理或后处理。在这个例子中,我们创建了一个名为`EncodingFilter`的过滤器,其主要任务是设置请求和响应的字符编码。过滤器的核心...