Struts2拦截器设置例外情况

本文介绍了一个基于Struts框架的权限拦截器实现方法,该拦截器能够拦截非登录用户的访问并将其重定向到登录页面。配置中包含了自定义拦截器及拦截器栈的定义,并展示了如何设置默认Action及全局视图。

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

权限拦截器如下:

/**
 * 权限拦截器
 * 拦截非登录用户
 * @author Administrator
 *
 */
public class AuthorInterceptor extends AbstractInterceptor{
	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		
		//如果是登录请求则直接放行
		Object o = arg0.getAction();
		System.out.println(o.getClass());
		if(o instanceof LoginAction){
			return arg0.invoke();
		}
		
		//拦截非登录用户
		//获取Session
		Map session = arg0.getInvocationContext().getSession();
		
		//判断用户是否已登录
		Users u = (Users)session.get("user");
		if(u==null){
			//未登录用户,将被拦截到登录页面
			System.out.println("非法请求已被拦截,系统将跳转到登录页面!!!!!!!");
			return "login";
		}else{
			//放行
			return arg0.invoke();
		}
		
	}
}

配置如下:

<struts>
	
	
	<!-- 配置编码(防止中文乱码) -->
	<constant name="struts.i18n.encoding" value="utf-8"></constant>
	
	<package name="default" extends="struts-default" namespace="/">
		
		<!-- 拦截器定义 -->
		<interceptors>
			<!--注册自定义的拦截器 -->
			<interceptor name="auth" class="com.hr.interceptor.AuthorInterceptor"></interceptor>
			<!-- 自定义拦截器栈 -->
			<interceptor-stack name="myStack">
				<!-- 自定义拦截器栈的第一个拦截器一定要配置成系统默认拦截器 -->
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<!-- 将自定义的拦截器加入到自定义的拦截器栈 -->
				<interceptor-ref name="auth"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 将自定义拦截器栈设置为默认拦截器 -->
		<default-interceptor-ref name="myStack"/>
		
		<!-- 配置默认Action(当其他Action不能匹配的时候自动匹配此Action -->
		<default-action-ref name="defaultAction"/>
		<!-- 定义全局视图 -->
		<global-results>
			<result name="error">error.jsp</result>
			<result name="404">/404.jsp</result>
			<result name="login">/login.jsp</result>
		</global-results>
		<!-- 定义默认Action -->
		<action name="defaultAction">
			<!-- name属性默认值为 success -->
			<result>/404.jsp</result>
		</action>		
		<action name="login" class="com.action.LoginAction">
			<result name="index">index.jsp</result>
		</action>
		<!-- 用户处理Action -->
		<action name="user" class="com.action.UserAction">
			<!-- 动态结果 -->
			<result type="redirectAction">${nextPos}</result>
			<result name="index">/index.jsp</result>
			<result name="ok">/ok.jsp</result>
			<!-- redirectAction类型用于Action之间的转发 -->
			<result name="m" type="redirectAction">/manage!mt.action</result>
			<result name="update_user">/user_update.jsp</result>
		</action>
		<!-- 管理Action -->
		<action name="manage" class="com.action.ManageAction">
			<result>/ok.jsp</result>
		</action>
	</package>
</struts>    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值