本文主要介绍java中Struts2拦截器的简单理解。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。
最近在学习struts拦截器,现在总结一下。
1、拦截器是什么?
拦截器相当于过滤器:就是去掉不想要的,留下想要的。拦截器抽象出的一部分代码可以用来完善原来的动作。同时可以减少代码冗余,提高复用率。通俗地说,就是一张网,把不想要的沙子过滤掉,留下水。
2、拦截器的作用:
拦截器可以构成特定的函数。如授权认证、登录和登录判断。
3、拦截器的原理:
每个动作请求都在拦截器里,每个动作都可以把操作传递给下面的拦截器,或者直接退出接口。
4、定义拦截器:
(1)自定义一个接口实现拦截器(但我初学者一般直接在框架中实现拦截器)
(2)在struts.xml中注册已定义的拦截器
(3)可以参考所需动作中的拦截器。
拦截器接口声明了三个方法。
公共接口侦听器扩展Serializable {
void destroy();
void init();
字符串截获(ActionInvocation调用)引发异常;
}
在动作之前调用Init方法,就是开始对烂机进行初始化操作。
Destory方法在拦截器被垃圾回收之前被调用,以恢复由init方法初始化的资源。
拦截器方法是拦截器的主要操作。如果需要调用后续的动作或者拦截器,只需要调用这个方法中的invocation.invoke()方法。在这个方法调用前后,可以插入拦截器在动作调用前后需要做的方法。
现在用下面的代码拦截用户登录:
公共字符串截获(ActionInvocation调用)引发异常{
System.out.println('执行操作前');
action context action context=invocation . getinvocationcontext();
MapString,Object session=action context . getsession();
object currentUser=session . get(' currentUser ');
字符串结果=null
if(currentUser!=null){
result=invocation . invoke();
}否则{
http servlet request request=(http servlet request)invocation . getinvocationcontext()。get(ServletActionContext。HTTP _ REQUEST);
Request.setAttribute('error ','请先登录');
结果=“错误”;
}
System.out.println('result '结果);
System.out.println('动作执行后');
返回结果;
}
注册拦截器:
截击机
拦截器名称='myInterceptor '
class=' com . Fang Chao . interceptor . my interceptor '/interceptor
拦截器名称='loginInterceptor '
class=' com . Fang Chao . interceptor . log in interceptor '/interceptor
拦截器堆栈名称='myStack '
interceptor-ref name=' log in interceptor '/interceptor-ref
interceptor-ref name=' default stack '/interceptor-ref
/拦截器堆栈
/拦截器
上面代码中的拦截器堆栈是一个拦截器堆栈。至此,方便引用如下。一般来说,每个动作都会用到defaultStack。
拦截器参数:
配置参数:
ExcludeMethods:过滤掉不使用拦截器的方法。
IncludeMethods:使用拦截器的方法。
有两种配置:
拦截器-ref name='validation '
param name=' exclude methods ' myvalidationexcutedemethod/param
/interceptor-ref
拦截器-引用名称='工作流'
param name=' exclude methods ' myworkflowexclude method/param
/interceptor-ref
或者
interceptor-ref name=' default stack '
param name=' validation . exclude methods ' myvalidationexclude method/param
param name=' workflow . exclude methods ' myworkflow exclude method/param
/interceptor-ref
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。