struts2 拦截器

时间:2022-07-29 08:27:31

拦截器:对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>