struts2_拦截器的使用
2017-07-03 22:47
274 查看
1. 什么是拦截器?
拦截器是java中动态拦截action调用的对象。它提供了一种机制,能够保证我们在action访问前后访问后进行增强。我们可以通过拦截器进行控制的访问,比如权限控制。拦截器引用的是AOP思想。而AOP的底层实现就是使用了动态代理。
并且在拦截其中使用的是责任链模式。在责任链模式中,很对对象由每一个对象对其下家的引用而连接起来形成一条链。在责任链每一个链点,都可以继续调用下一个节点,也可以阻止流程继续执行。
2. 拦截器的声明
struts2在struts-default.xml文件中声明了所有的拦截器。
而struts2框架默认使用的是defaultStack这个拦截器栈。而在这个拦截器栈中使用了18个拦截器。默认的情况下,struts2会加载这18个拦截器。
3. 自定义拦截器步骤
<1>创建一个类,实现com.opensymphony.xwork2.interceptor.Interceptor接口
在这个接口中,有三个方法,init方法、destory方法和intercept方法。其中,intercept才是真正实现拦截的方法。
在intercept方法中如果要向下继续执行,通过其参数ActionInvocation调用它的invoke()方法就可以。
如果想要对方法的执行进行终止,我们可以通过返回某个视图进行终止。视图就是result标签下的input、login等等5个视图。
<2>声明拦截器
找到struts-default.xml文件,在这个文件中对其进行声明。
<3>在action中指定使用哪些拦截器。
在action视图下,配置子标签
注意:只要显示声明使用了一个拦截器。那么默认的拦截器就不在加载。
4. 怎样解决只控制action中某些方法的拦截?
拦截器是java中动态拦截action调用的对象。它提供了一种机制,能够保证我们在action访问前后访问后进行增强。我们可以通过拦截器进行控制的访问,比如权限控制。拦截器引用的是AOP思想。而AOP的底层实现就是使用了动态代理。
并且在拦截其中使用的是责任链模式。在责任链模式中,很对对象由每一个对象对其下家的引用而连接起来形成一条链。在责任链每一个链点,都可以继续调用下一个节点,也可以阻止流程继续执行。
2. 拦截器的声明
struts2在struts-default.xml文件中声明了所有的拦截器。
而struts2框架默认使用的是defaultStack这个拦截器栈。而在这个拦截器栈中使用了18个拦截器。默认的情况下,struts2会加载这18个拦截器。
3. 自定义拦截器步骤
<1>创建一个类,实现com.opensymphony.xwork2.interceptor.Interceptor接口
在这个接口中,有三个方法,init方法、destory方法和intercept方法。其中,intercept才是真正实现拦截的方法。
在intercept方法中如果要向下继续执行,通过其参数ActionInvocation调用它的invoke()方法就可以。
如果想要对方法的执行进行终止,我们可以通过返回某个视图进行终止。视图就是result标签下的input、login等等5个视图。
<2>声明拦截器
找到struts-default.xml文件,在这个文件中对其进行声明。
//自己声明一个interceptor可以在struts.xml文件中声明 <interceptors> <interceptor name="起个别称" class="全类名"/> </interceptors>
<3>在action中指定使用哪些拦截器。
在action视图下,配置子标签
<interceptor-ref name="别称"/>
注意:只要显示声明使用了一个拦截器。那么默认的拦截器就不在加载。
4. 怎样解决只控制action中某些方法的拦截?
1.创建类不在实现Interceptor接口,而是继承其下的一个子类.MethodFilterInterceptor,不用在重写intercept方法,而是重写 doIntercept方法。 2.在struts.xml文件中声明 <interceptors> <intercept name="" class=""> <param name="includeMethods">add,update,delete(这些是要进行拦截的方法)</param> <param name="excludeMethods">search(不进行拦截的方法)</param> </intercept> </interceptors>
相关文章推荐
- Struts2拦截器的使用
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- Struts2使用15 -- 拦截器5 -- 实例
- Struts2拦截器的使用(详解)
- 使用Struts2的拦截器实现权限控制
- struts2拦截器的使用
- Struts2拦截器的使用
- Struts2使用13 -- 拦截器3 -- 内置拦截器
- Struts2使用12 -- 拦截器2 -- 配置
- Struts2拦截器的使用
- Struts2拦截器的使用 (详解)
- Struts2拦截器的使用收藏
- struts2:使用拦截器注解
- Struts2使用14 -- 拦截器4 -- 自定义拦截器
- Struts2的拦截器使用
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- struts2:使用拦截器注解
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- struts2使用拦截器时产生java.lang.IllegalStateException异常解决办法
- Struts2拦截器的使用