structs2中interceptor(拦截器)的种类

Structs2的Interceptor是AOP实现策略,用于在Action执行前后插入额外操作,如数据校验、类型转换等。拦截器的种类包括Alias、Chaining、Create Session、Exception、File Upload、I18n、Debugging、Prepare、Scope和Timer等。通过在structs.xml配置拦截器和拦截器栈,可以实现自定义的拦截行为,例如权限控制,确保用户已登录并具备执行操作的权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拦截器的理解

        Interceptor是Structs2的基石,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。框架的许多功能都是构建在在拦截器的基础之上, 比如数据校验、类型转换、文件上传与下载的文件类型限制、国际化等。并且Struts2还提供了大量的内置拦截器,这些拦截器完成了框架的大部分任务。

    在Webwork的中文文档的解释为——Interceptor是Structs2的一种类,它可以动态拦截Action调用的对象、它提供了一种机制使开发者可以在一个Action执行之前或执行之后插入需要的代码,比如在执行之前阻止其执行,在执行后做一些相应的工作。

拦截器的实现原理

    structs2的拦截器,当请求到达Structs2的ServletDispatcher时,Structs2会查找配置文件,并根据其配置,实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器。    

拦截器的种类,拦截器的种类可以到structs2_default.xml中去亲自查看,structs2_defualt.xml在Web App Libraries文件夹下的structs2-core-xx.jar包中。

附截图2张

              


常用种类介绍:

Alias Interceptor——在不同请求之间将请求参数在不同名字之间转换,请求内容不变。

Chaining Interceptor——让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(result type="chain "结合使用)

Create Session Interceptor——自动创建HttpSession,用来为需要使用到的HttpSession的拦截器服务。

Exception Interceptor——将异常定位到一个画面

File Upload Interceptor——提供文件上传功能

I18n Interceptor——记录用户选择的locate

Debugging Interceptor——提供不同的调试用的页面来展示内部的数据状况

Prepare Interceptor——如果Action实现了Preparable,则该拦截器调用Action类的prepare 方法

Scope Interceptor——将Action状态存入session和application的简单方法

Timer Interceptor——输出Action的执行的时间


拦截器的使用,拦截器的拦截行为在Action的execute方法执行之前被执行。

在structs.xml文件中定义拦截器和拦截器栈:

<package name="my" extends="structs-default" namespace="/manage">

<interceptors>

<!-定义拦截器->

<interceptor name=";拦截器名" class="拦截器实现类">

<!-定义拦截器栈->

<interceptor-stack name="拦截器栈名">

<interceptor-ref name="拦截器一">

<interceptor-ref name-"拦截器二">

</interceptor-stack>

</interceptors>

.....

</package>


使用自定义拦截器——实现权限控制拦截器类:

问题描述:当浏览者需要请求执行某个操作时,应用需要先检查浏览者是否登录,以及是否有足够的权限来执行该操作。




本文内容多有借鉴百度文档。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值