拦截器:对Action的访问.可以拦截到Action中某个方法.与过滤器不同,过滤器过滤的是请求.过滤JSP、html.但是拦截器不能拦截jsp、html的访问.
Struts2 拦截器在访问某个 Action 方法之前或之后实施拦截, Struts2 拦截器是可插拔的, 拦截器是 AOP 的一种实现.
开发拦截器的步骤:
1.继承AbstractInterceptor.抽象的拦截器中提供了对init和destroy方法的空的实现.
2.注册拦截器:
案例:
1.登录功能:
* 图书CRUD的操作:(没有登录,点击链接会被拦截器拦截.已经登录可以访问.)
2.拦截器的配置的方式两种:
* 第一种:
<package name="book" extends="struts-default">
<!-- 配置拦截器 -->
<interceptors>
<interceptor name="privilege" class="cn.itcast.struts2.interceptor.PrivilegeInterceptor"/>
</interceptors>
<action name="book_*" class="cn.itcast.struts2.action.BookAction" method="{1}">
<!-- 在Action中使用了自定义的拦截器,那么Struts2中提供的默认拦截器栈就都不执行了. -->
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="privilege"/>
</action>
</package>
* 第二种
<package name="book" extends="struts-default">
<!-- 配置拦截器 -->
<interceptors>
<interceptor name="privilege" class="cn.itcast.struts2.interceptor.PrivilegeInterceptor"/>
<!-- 自定义一个拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="privilege"/>
</interceptor-stack>
</interceptors>
<action name="book_*" class="cn.itcast.struts2.action.BookAction" method="{1}">
<!-- 在Action中使用了自定义的拦截器,那么Struts2中提供的默认拦截器栈就都不执行了. -->
<interceptor-ref name="myStack"/>
</action>
</package>