Struts 2的拦截器(Interceptor)总结

 什么是Struts 2拦截器?

从软件构架上来说,拦截器是实现了面向方面编程的组件。它将影响了多个业务对象的公共行为封装到一个个可重用的模块,减少了系统的重复代码,实现功能的高度内聚,确保了业务对象的整洁和纯度。

从Java代码上来说,它就是一个普度的Java对象,它只需要实现一个名为Interceptor的接口。

Struts 2的工作原理又是什么呢?我们可以同两张图来看看

对于Stuts 2的执行原理我就不做过多的解释了,接下来我们就来看看怎么去具体实现吧。开始就说了,Struts 2的拦截器只是一个普度的java对象,只需要给它实现一个Interceptor接口即可。

需要注意的是:

实现Interceptor接口还要必须实现三个方法,如果学过Servlet应该就更能明白为什么要这样了。三个方法分别为:初始化拦init()、destroy()、最后呢就是我们需要去实现的拦截器方法intercept(),具体的实现功能上面已经有了。

拦截器功能是实现了,但是我们该怎么去让它跟Action类去关联呢?我们都知道拦截器最主要的就是去拦截Action的一些代码问题,返回出来的就是一个逻辑视图名,即被指明为放行的Action。

那我们可以先把之前的登录案列完善以便更好让Interceptor与Action更好关联。

看完这些,我们就来看看具体配置文件xml吧!既然说到xml文件,先说说Struts2xml配置文件几个重要的顺序吧。

对于xml配置文件中一些常量的设置,它是由上至下的顺序把之前的设置覆盖掉,也就是说谁是最后设置的,就以那个设置值为准,所以就有了我们接下来要设置拦截器栈会将默认的拦截器栈冲掉然后再重新去引导默认拦截器栈名为defaultStack

相信大家也能明白了一些了吧,最后顺便给大家拦截器的一些注意点知识吧。

时间: 2024-10-26 01:48:42

Struts 2的拦截器(Interceptor)总结的相关文章

Struts拦截器Interceptor

Struts2 拦截器 [Interceptor] 拦截器的工作原理如上图,每一个Action请求都包装在一系列的拦截器的内部.拦截器可以在Action执行直线做相似的操作也可以在Action执行直后做回收操作. 每一个Action既可以将操作转交给下面的拦截器,Action也可以直接退出操作返回客户既定的画面. 如何自定义一个拦截器? 自定义一个拦截器需要三步: 1 自定义一个实现Interceptor接口(或者继承自AbstractInterceptor)的类. 2 在strutx.xml中

Struts2自定义拦截器Interceptor以及拦截器登录实例

1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor{ private static final long serialVersionUID = 1L; public void destroy() { } public void init() {} public String intercept(ActionInvocation arg0) throws

Struts 2 之拦截器

拦截器概述 Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP(Aspect Oriented Programming,面向切面编程)的一种实现 拦截器栈(InterceptorStack).Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链.在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用. Struts2规定用户自定义拦截器必须实现com.opensy

struts2拦截器interceptor的三种配置方法

struts2拦截器interceptor的三种配置方法方法1. 普通配置法 <struts>     <package name="struts2" extends="struts-default">         <interceptors>             <interceptor name="myInterceptor" class="edu.hust.interceptor.

Flume-NG源码阅读之SourceRunner,及选择器selector和拦截器interceptor的执行

在AbstractConfigurationProvider类中loadSources方法会将所有的source进行封装成SourceRunner放到了Map<String, SourceRunner> sourceRunnerMap之中.相关代码如下: 1 Map<String, String> selectorConfig = context.getSubProperties( 2 BasicConfigurationConstants.CONFIG_SOURCE_CHANNE

Kafka producer拦截器(interceptor)

Producer拦截器(interceptor)是个相当新的功能,它和consumer端interceptor是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于producer而言,interceptor使得用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息等.同时,producer允许用户指定多个interceptor按序作用于同一条消息从而形成一个拦截链(interceptor chain).Intercetpor

详述 Spring MVC 框架中拦截器 Interceptor 的使用方法

1 前言 昨天新接了一个需要,"拦截 XXX,然后 OOO",好吧,说白了就是要用拦截器干点事(实现一个具体的功能).之前,也在网络上搜了很多关于Interceptor的文章,但感觉内容都大同小异,而且知识点零零散散,不太方便阅读.因此,正好借此机会,整理一篇关于拦截器的文章,在此分享给大家,以供大家参考阅读. 2 拦截器 2.1 概念 Java 里的拦截器是动态拦截 action 调用的对象.它提供了一种机制可以使开发者可以定义在一个 action 执行的前后执行的代码,也可以在一个

Flume 拦截器(interceptor)详解

flume 拦截器(interceptor)1.flume拦截器介绍拦截器是简单的插件式组件,设置在source和channel之间.source接收到的事件event,在写入channel之前,拦截器都可以进行转换或者删除这些事件.每个拦截器只处理同一个source接收到的事件.可以自定义拦截器.2.flume内置的拦截器 2.1 时间戳拦截器flume中一个最经常使用的拦截器 ,该拦截器的作用是将时间戳插入到flume的事件报头中.如果不使用任何拦截器,flume接受到的只有message.

五 、 Kafka producer 拦截器(interceptor) 和 六 、Kafka Streaming案例

五 Kafka producer 拦截器(interceptor) 5.1 拦截器原理 Producer 拦截器(interceptor)是在 Kafka 0.10 版本被引入的,主要用于实现 clients 端的定 制化控制逻辑. 对于 producer 而言,interceptor 使得用户在消息发送前以及 producer 回调逻辑前有机会 对消息做一些定制化需求,比如修改消息等.同时,producer 允许用户指定多个 interceptor 按序作用于同一条消息从而形成一个拦截链(in