在struts2中配置自定义拦截器放行多个方法
来源:互联网 发布:消防接线网络 编辑:程序博客网 时间:2024/06/05 03:52
在struts2中配置自定义拦截器放行多个方法
配置struts2 拦截器属性excludeMethods、includeMethods进行方法过滤时发现不起作用。
要想使方法过滤配置起作用,拦截器需要继承MethodFilterInterceptor类。
MethodFilterInterceptor类是AbstractInterceptor的子类
自定义的拦截器类:
//自定义拦截器类:LoginInterceptor ;
package com.java.action.interceptor;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class LoginInterceptor extends MethodFilterInterceptor {
private static final long serialVersionUID = -5315714306081057062L;
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//Logger log = LoggerFactory.getLogger(getClass());
HttpSession session = ServletActionContext.getRequest().getSession();
Object obj = session.getAttribute("boperator");
if(null != obj ){
return invocation.invoke();
}else{
//log.debug("Skipping Interceptor... Method [" + doIntercept(null) + "] found in exclude list.");
return null;
}
}
}
在struts2.xml中配置:
<!-- package标签下 -->
<package name="helloactionpkg" extends="struts-default" namespace="/">
<!-- 自定义 拦截器 -->
<interceptors>
<interceptor name="login" class="com.java.action.interceptor.LoginInterceptor"></interceptor>
</interceptors>
<!-- package标签内容 标签尾 -->
<!-- action标签下 -->
<action name="hello_*" class="com.java.action.UserAction" method="{1}" >
<!-- 配置拦截器 -->
<interceptor-ref name="login">
<!-- param 标签下 name="excludeMethods" 放行多个方法 方法名1,方法名2 用逗号隔开即可 -->
<param name="excludeMethods">toLogin,login</param>
</interceptor-ref>
<!-- 由于使用了自定义拦截器,应再次加载使用框架默认拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<!-- action标签内容 标签尾 -->
原因--源码(部分):
protected Set<String> excludeMethods = Collections.emptySet();
protected Set<String> includeMethods = Collections.emptySet();
public void setExcludeMethods(String excludeMethods) {
this.excludeMethods = TextParseUtil.commaDelimitedStringToSet(excludeMethods);
}
public static Set<String> commaDelimitedStringToSet(String s) {
Set<String> set = new HashSet<String>();
String[] split = s.split(",");
for (String aSplit : split) {
String trimmed = aSplit.trim();
if (trimmed.length() > 0)
set.add(trimmed);
}
return set;
}
阅读全文
0 0
- 在struts2中配置自定义拦截器放行多个方法
- struts2自定义拦截器注解配置方法
- struts2中自定义拦截器的配置
- 关于Struts2配置多个拦截器
- struts2配置自定义拦截器
- Struts2 自定义拦截器(方法拦截器)
- Struts2 自定义拦截器(方法拦截器)
- Struts2 自定义拦截器(方法拦截器)
- Struts2 自定义拦截器(方法拦截器)
- Struts2 自定义拦截器(方法拦截器)
- Struts2 自定义拦截器(方法拦截器)
- Struts2中自定义拦截器
- struts2 中自定义拦截器
- struts2中自定义拦截器
- Struts2中自定义拦截器
- Struts2中自定义拦截器
- struts2多个自定义拦截器的栈
- struts2中拦截器的全局拦截和自定义拦截
- oracle---sqlplus搜索结果输出到文件
- 测试用例设计_如何提高测试覆盖率
- struts2 之注解开发(05)
- python的datetime模块
- 2017.07.26工作日记
- 在struts2中配置自定义拦截器放行多个方法
- C#泛型委托
- KaliLinux 安装失败/TARGET没有挂载系统
- SSD Single Shot MultiBox Detector
- 矩阵快速幂+倍增法(纯模板)
- 32位64位Eclipse和jdk对应关系
- JAVA微信公众号开发之客服消息
- Jvm垃圾回收机制
- 二十二天