Struts2 拦截器过滤方法(二十八)

1.默认情况下,如果为某个Action配置拦截器,则这个拦截器将拦截Action中的所有方法。但是有时候并不是想拦截Action中的所有方法,而是值需要拦截其中某一个,或者某几个方法,此时就需要使用拦截器的方法过滤特性了。

为了实现拦截器的方法过滤特性,Struts2提供了一个MethodFiledInterceptor抽象类。这个类重写了AbstractInterceptor类中的interceptor()方法,并且提供了doInteceptor(ActionInvocation invocation)抽象方法。

2,方法过滤参数
excluedMethods:执行拦截器拒绝拦截的方法列表,如果有多个方法名之间使用英文“,”分割,例如指定该参数值为login,register 那么拦截器将不会拦截login()he register()方法。

includeMethods:指定拦截器需要拦截的方法,如果有多个方法,则用英文“,”分割。例如指定该参数值为 method1,method2,那么拦截器将拦截method1和method2方法();


定义拦截器类

package com.sh.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class MethodInterceptor extends MethodFilterInterceptor {

@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
System.out.println("拦截器起作用了!");
return invocation.invoke();
}
}


action

package com.sh.action;

import com.opensymphony.xwork2.ActionSupport;

public class MethodAction extends ActionSupport{
public String execute(){
System.out.println("execute()执行了!");
return SUCCESS;
}

public String login(){
System.out.println("login()方法执行!");
return SUCCESS;
}

public String register(){
System.out.println("register()方法");
return SUCCESS;
}
}


struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<!-- 修改请求的后缀名为.do 修改后每个请求必须要有后缀了-->
<constant name="struts.action.extension" value="do,action"/>
<!-- 对于 采用 "!方法名"这种方法有用 ,采用通配符就不需要设置这个了 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<!-- 默认的视图主题 <constant name="struts.ui.theme" value="simple"/>-->

<package name="default" extends="struts-default">
<interceptors>
<interceptor name="methodInterceptor"
class="com.sh.interceptor.MethodInterceptor"/>
</interceptors>
<action name="method" class="com.sh.action.MethodAction">
<result>/success.jsp</result>
<result name="login">/login.jsp</result>
<interceptor-ref name="methodInterceptor">
<param name="excludeMethods">execute</param>
<!--<param name="includeMethods">execute</param> -->
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
</action>
</package>

</struts>



--访问地址
http://localhost:8080/Struts2_inteceptorMethod/method!login.action
可以看到拦截器没有拦截
http://localhost:8080/Struts2_inteceptorMethod/method.action
可以看到拦截器拦截了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值