Struts2拦截器配置

本文详细介绍了Struts2框架中拦截器的配置方法,包括自定义全局拦截器、在Action中使用拦截器及配置默认拦截器等内容,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts2框架的大部分功能都是通过拦截器来完成的。默认情况下所以的package都会继承默认的struts-default包,这样就可以使用Struts的大量默认拦截器。
<package name="userModel" namespace="/" extends="struts-default">
<!-- struts2拦截器 拦截该包的所有action-->
<interceptors>
<interceptor name="myLogin" class="oms.odc.eq.intercept.LoginIntercept"></interceptor>
<interceptor-stack name="myInterceptor">
<interceptor-ref name="myLogin"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myInterceptor"/>

<!-- struts2拦截器 -->
<!-- 全局跳转到登陆页面 -->
<global-results>
<result name="loginFail">/login.jsp</result>
</global-results>
<!-- 全局跳转到登陆页面 -->
</package>

public class LoginIntercept extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub

Object username = invocation.getInvocationContext().getSession().get(
"username");
Object password = invocation.getInvocationContext().getSession().get(
"password");
System.out.println(username+"intercept"+password);
if (username == null || password == null) {

return "loginFail";//失败调回login.jsp页面

} else {

String result = invocation.invoke();//通过
System.out.println(result);
return result;
}
}
}
web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
///////////////////////////


1、自定义全局拦截器
在Struts.xml里增加 <interceptor name="拦截器别名" class="拦截器实现类" >
为其他包引用的方便可以把多个拦截器放在一起,组成拦截器栈:

<interceptor-stack name="拦截器栈别名">
<interceptor name="拦截器别名1" class="拦截器实现类" >
<interceptor name="拦截器别名2" class="拦截器实现类" >
</interceptor-stack>

2、在action中使用拦截器
<action name="" class="" extends="struts-default">
<interceptor-ref="拦截器栈别名">
</action>

3、配置默认的拦截器(每个包只能定义一个默认拦截器)
当配置一个包后,可以为其指定特定的拦截器。这样如果该包中的ACTION没有配置拦截器,那么默认的拦截器将起作用
<default-interceptor-ref name="拦截器栈别名">

4、实现拦截器需继承AbstractInterceptor类

5、在默认情况下,如何某个Action定义了拦截器,这个拦截器会拦截Action的所以方法,如果不想拦截所以方法,可以使用Struts2的方法过滤特性。
<action name="" class="" extends="struts-default">
<interceptor-ref="拦截器栈别名">
<param name="excludeMethods">拦截器别名1,拦截器别名2</param> < ————屏蔽的拦截
<param name="includeMethods">拦截器别名2</param> <————开启拦截
</action>
6、Struts2拦截器的执行顺序
并不是先配置的先拦截,在execute方法执行前的动作按顺序拦截,在execute方法执行之后的动作逆序执行,也就是说配置在后面的先执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值