struts2拦截器

struts2拦截器


struts.xml

<package name="test" extends="struts-default,json-default" namespace="/">
		<!-- 引入拦截器 =============================================-->
		<interceptors>
			<interceptor name="myinterceptor" class="com.ym.interceptor.MyInterceptor" ></interceptor>
			<interceptor name="mymethodeinterceptor" class="com.ym.interceptor.MyMethodInterceptor"></interceptor>
			<!-- 定义拦截栈 -->
			<interceptor-stack name="myStack">
				<!-- 引入默认拦截器和自定义拦截器  -->
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="myinterceptor">
					<!-- 参数设置 -->
					<param name="excludeActionName">login_login,switch_switchLanguage</param>		
				</interceptor-ref>
				<!-- 拦截、不拦截的方法指定 -->
				<interceptor-ref name="mymethodeinterceptor">
					<!-- 不拦截的方法 -->
					<param name="excludeMethods">login*,switch_*</param>
					<!-- 拦截的方法 -->
					<param name="includeMethods">update_*,fileUp_*,downfile_*</param>
				</interceptor-ref>
				
				<!-- 引入表单 重复提交阻止类 -->
				<interceptor-ref name="token">
					<!-- 阻止提交表单访问的方法 -->
					<param name="includeMethods">update_pwd*</param>
				</interceptor-ref>
				
			</interceptor-stack>	
		</interceptors>
		<!-- 启动拦截器 -->
		<default-interceptor-ref name="myStack" />
	

自定义拦截类

import java.util.Map;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
import com.ym.model.UserEnt;

public class MyMethodInterceptor extends MethodFilterInterceptor  {
	/**
	 * 拦截逻辑处理,判断用户必须登录系统,并且用户的权限是经理级别以上的,才能访问指定方法
	 */
	@Override
	protected String doIntercept(ActionInvocation arg0) throws Exception {
		
		Map<String ,Object> session=arg0.getInvocationContext().getSession();
		//取值
		UserEnt user=(UserEnt)session.get("userEnt");
		//这里判断条件只是测试,根据需求可重写
		if(user!=null&&user.getLog_Grade().equals("5")){
			//放行
			return arg0.invoke();
		}
			//返回到提示界面
			return "intercept";
	}
	
}

import java.util.Map;
import java.util.Set;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.TextParseUtil;
import com.ym.model.UserEnt;


public class MyInterceptor extends  AbstractInterceptor{

	private String excludeActionName;	//剔除的拦截方法 
	private String sessionName;			//存在session中 的key名称
	
	get、set方法....

	/*
	 * (重写父类方法)
	 */
	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		//获取当前访问的 action
		String actionName=arg0.getProxy().getActionName();
		String actionMethod=arg0.getProxy().getMethod();
		//通过工具类获取拦截器	的初识化参数
		Set <String> set=TextParseUtil.commaDelimitedStringToSet(excludeActionName);
		//判断集合中的内容写拦截逻辑
		if(set.contains(actionName)){
			//放行
			return arg0.invoke();
		}else{
			//获取session对象
			Map<String ,Object> session=arg0.getInvocationContext().getSession();
			//取值
			UserEnt userEnt=(UserEnt)session.get("userEnt");
			//判断
			if(userEnt==null){
				//跳转指定界面,没有登录 
				return "notPass";
			}else{
				//放行
				return arg0.invoke();
			}
		}

	}
	

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值