在java项目中如何使用Struts2拦截器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强> 1,拦截器是什么? 强>
拦截器相当于过滤器:就是将不想要的去掉,想要的留下。拦截器抽象出一部分代码可以用来完善原来的行动。同时可以减轻代码冗余,提高重用率。通俗地讲就是一张网,过滤掉不需要的沙子,留下水。
<强> 2,拦截器的作用:强>
拦截器可以构成特定的功能,比如权限认证,日志记录和登陆判断。
<强> 3,拦截器的原理强>:
其每一个行动请求都在拦截器中,每一个动作可以将操作转交给下面的拦截器,也可以直接退出到界面上。
<强> 4,定义拦截器:强>
(1)自定义一个实现拦截器接口(不过我初学者一般直接实现框架中的拦截器)
(2)在struts。xml中注册定义的拦截器
(3)可以需要的行动中引用拦截器
拦截器接口声明了三个方法
公共接口拦截器扩展了可序列化的{ 空白摧毁(); 无效的init (); 字符串截取(ActionInvocation调用)抛出异常; }
初始化方法是在行动作用之前调用,就是开始给烂机器的初始化操作。
毁坏方法在拦截器被垃圾回收之前调用,用来回收初始化方法初始化的资源。
拦截方法是拦截器的主要操作。如果需要调用后续的行动或者拦截器,只需要在该方法中调用invocation.invoke()方法即可,在该方法调用的前后可以插入动作调用前后拦截器需要做的方法。
现在对用户登录进行拦截,代码如下:
注册拦截器:
& lt; interceptors> & lt;拦截器的名字=癿yInterceptor" 类=癱om.fangchao.interceptor.MyInterceptor"祝辞& lt;/interceptor> & lt;拦截器的名字=發oginInterceptor" 类=癱om.fangchao.interceptor.LoginInterceptor"祝辞& lt;/interceptor> & lt; interceptor-stack name=癿yStack"祝辞 & lt; interceptor-ref name=發oginInterceptor"祝辞& lt;/interceptor-ref> & lt; interceptor-ref name=癲efaultStack"祝辞& lt;/interceptor-ref> & lt;/interceptor-stack> & lt;/interceptors>上述代码中的interceptor-stack是个拦截器栈。到目前为止,就是在下面引用时,比较方便,一般来讲,每个行动都会使用defaultStack。
拦截器参数:
配置参数:
- <李> excludeMethods:过滤掉不使用拦截器的方法李> <李> includeMethods:使用拦截器的方法。李>
有两种配置方式:
& lt; interceptor-ref name=皏alidation"比; & lt;参数名称=癳xcludeMethods"祝辞myValidationExcudeMethod & lt;/interceptor-ref> & lt; interceptor-ref name=皐orkflow"祝辞 & lt;参数名称=癳xcludeMethods"祝辞myWorkflowExcludeMethod & lt;/interceptor-ref>
或者
& lt; interceptor-ref name=癲efaultStack"比; & lt;参数名称=皏alidation.excludeMethods"祝辞myValidationExcludeMethod & lt;参数名称=皐orkflow.excludeMethods"祝辞myWorkflowExcludeMethod & lt;/interceptor-ref>
看完上述内容,你们掌握在java项目中如何使用Struts2拦截器的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!