JSP 开发之开发之Struts2内建自定义拦截器内建自定义拦截器
主要介绍了JSP 开发之Struts2内建自定义拦截器的相关资料,需要的朋友可以参考下
JSP 开发之开发之Struts2内建自定义拦截器内建自定义拦截器
Struts2的自定义拦截器主要用于解析请求参数,将请求参数赋值给Action属性,执行数据校验,文件上传等等操作。当需要扩
展Struts2的功能时,我们只需要提供相应的拦截器并将它配置到Struts2容器中即可;当我们不需要使用的时候,只需要取消
它在Struts2容器中的配置就行了。
1>配置拦截器主要使用四个配置元素:
:用于配置自定义拦截器
:用于引用拦截器或者拦截器栈
:用于配置自定义拦截器栈,一个拦截器栈由多个拦截器构成,也可以包含其他的拦截器栈
:拥有配置参数
<!--配置自定义拦截器-->
<interceptor name="拦截器名" class="实现类">
<param name>..</param>
...
</interceptor>
<!--配置拦截器栈,用于一次性过引用多个拦截器-->
<interceptor-stack name="拦截器栈名">
<interceptor-ref name="拦截器1" />
<interceptor-ref name="拦截器2">
<param name>..</param>
...
</interceptor-ref>
<!--也可以引用拦截器栈-->
<interceptor-ref name="拦截器栈名" />
</interceptor-stack>
2>配置好了拦截器之后,就可以在元素中使用该拦截器了,使用自定义拦截器时,还必须显示使用系统默认的拦截器
defaultStack。
<package ..>
<!--配置包下所有Action的默认拦截器--》
<!--如果Action配置了自己的拦截器,那么默认拦截器将不会配置到该Action下-->
<default-interceptor-ref name="defaultStack" />
<action ...>
<!--配置自己的interceptor拦截器-->
<interceptor-ref name="myInterceptor" />
<!--因为已经配置了自己的拦截器,所以包默认配置拦截器将不作用,因此需要自己显示配置defaultStack系统默认拦截器-->
<interceptor-ref name="defaultStack" />
</action>
</package>
3>用户自定义拦截器:Struts2提供了Interceptor拦截器原生接口:
public interface Interceptor extends Serializable
{
//初始化拦截器的回调方法
void init() ;
//实现拦截的处理方法
String intercept(ActionInvocation invocation) throws Exception ;
//销毁拦截器之前的回调方法
void destroy() ;
}
因此,用户自定义拦截器类需要实现该接口并提供该接口中的所有抽象方法的实现。不过Struts2还提供了该接口的一个直接
实现类:AbstractInterceptor,该类提供了init()和destroy()方法的实现,我们只需要重写intercept()拦截方法即可:
public class simpleInterceptor extends AbstractInterceptor
{
private String username ;
private String password ;
//omit setter and getter methods
@Override
public String intercept(ActionInvocation invocation) throws Exception
{
//获取被拦截的Action实例
LoginAction action = (LoginAction)invocation.getAction() ;
System.out.println("开始拦截:" + new Date()) ;
//取得开始执行Action处理方法的时间
评论0
最新资源