拦截器的工作原理就是当有action请求的时候,拦截器就会拦截请求,在action之前执行,然后在拦截器interceptor方法内调用action类(隐形的调用,我试过就是在 String result = ai.invoke(); 这句中调用的),结果就是action类执行完返回的结果被interceptor方法接受,再由拦截器返回给jsp页面。
比较图:
1.通过拦截器验证的情况
1.拦截器的配置
< interceptors >
< interceptor name=”myinterceptor”
class=”com.li.struts2.MyInterceptor”/ >
//拦截器的定义,myinterceptor为拦截器的名字,对象是MyInterceptor。
< interceptor-stack name=”basicStack” >
< interceptor-ref name=”exception”/>
< interceptor-ref name=”servlet-config”/>
< interceptor-ref name=”prepare”/>
< interceptor-ref name=”checkbox”/>
< interceptor-ref name=”params”/>
< interceptor-ref name=”conversionError”/>
< /interceptor-stack> //设置拦截器栈,把一系列的拦截对象放在其中,可以达到多个拦截器按顺序拦截一个action的作用。
< action name=”hello” class=”com.li.struts2.MyAction”>
< interceptor-ref name=”basicStack”/>//为当前action添加拦截器
< result>view.jsp< /result>
< /action>