在struts2中配置自定义拦截器放行多个方法
2024-09-20 16:35:05 216人阅读
源码:
自定义的拦截器类:
//自定义拦截器类: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 ){ //log.debug("Skipping Interceptor... Method [" + doIntercept(null) + "] found in exclude list."); 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; }
|
在struts2中配置自定义拦截器放行多个方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。