码迷,mamicode.com
首页 > 其他好文 > 详细

struts2入门之拦截器

时间:2017-06-26 23:54:44      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:自定义   拦截器   exception   action   cep   入门   success   cte   添加   

1、拦截器的执行时间:在action对象创建之后,在具体的方法执行之前;

2、拦截器底层实现原理:用到AOP思想和责任链模式;AOP:面向切面编程,通俗的讲就是当某个功能模块要增加某一项功能时,尽可能不去修改源代码而是通过其他的方式来达到相同的效果,比如通过配置文件等方式;责任链模式和过滤链模式有点相似,过滤链模式是指比如,一个请求由多个过滤器进行过滤,每个过滤器进行放行之后才能到下一个过滤器,最后实现目的;但是责任链模式,比如要执行多个操作,有添加,修改,删除三个操作,首先执行添加操作,添加操作完成后,做类似于放行的操作;然后执行修改操作,修改完成后又做个类似于放行的操作;最后执行删除操作。

3、拦截器和过滤器的区别:

  过滤器原则上是可以过滤掉任何内容的,比如html、jsp、图片等,它是在服务器创建的时候就有了;

  拦截器只能拦截action中的方法,或者说只能拦截action。

4、自定义拦截器:(show my codes)另外说一下步骤:创建一个类继承MethodFilterInterceptor,然后实现里面未实现的方法,如下:

 

 1 import com.opensymphony.xwork2.ActionInvocation;
 2 import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
 3 
 4 public class MyIncepter extends MethodFilterInterceptor {
 5 
 6     @Override
 7     protected String doIntercept(ActionInvocation arg0) throws Exception {
 8         // 这里面进行逻辑判断
 9         // 如果可以通过,就执行
10         // arg0.invoke();
11         // 如果不能通过,就返回你将要跳转的页面
12         return null;
13     }
14 
15 }

最后配置action和这个自定义拦截器的联系如下:

 1 <package name="demo1" extends="struts-default" namespace="/">
 2         <!-- 自定义拦截器 -->
 3         <interceptors>
 4             <interceptor name="interceptor1" class="com.cczhao.struts.MyInceptor"></interceptor>
 5         </interceptors>
 6         <action>
 7             <!-- 调用自己的拦截器 -->
 8             <interceptor-ref name="interceptor1">
 9                 <!-- 自定义该action中的某些方法不拦截 -->
10                 <param name="excludeMethods">login,add,update</param>
11             </interceptor-ref>
12             <!-- 倘若你在该action中用到了struts2的默认拦截器了,自己又定义了拦截器,这里需要引用一下struts2的默认拦截器,否则,只会调用自己的拦截器,而不调用struts2默认拦截器-->
13             <interceptor-ref name="defaultStack"></interceptor-ref>
14             <result name="success">/hello.jsp</result>
15         </action>
16     </package>

 注意上面配置自定义拦截器和action的关系的时候,着重看我的注释。。。

 

struts2入门之拦截器

标签:自定义   拦截器   exception   action   cep   入门   success   cte   添加   

原文地址:http://www.cnblogs.com/ZT-SummerRain/p/7082742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!