struts2拦截器

做一个项目时遇到一个问题,需要拦截未登录的用户通过地址栏直接访问网络上的资源,解决办法是定义自己的拦截器,但要放过登录的action,把自定义的拦截器和默认的拦截器栈重新组合定义成默认的拦截器栈

拦截器的代码:

package chao.tool;

import java.util.Map;

//判断用户是否登录
public class MyInterceptor extends AbstractInterceptor
{

	@Override
	public String intercept(ActionInvocation invocation) throws Exception
	{
		// 获得拦截到的action名称
		String actionName = invocation.getInvocationContext().getName();
		// 如果拦截到的action是请求登录的action,则放行.
		if ("login".equals(actionName))
		{
			return invocation.invoke();
		}
		//从Session中取得用户信息,判断用户是否登录
		Map session = invocation.getInvocationContext().getSession();
		Dlb user = (Dlb) session.get("user");
		if (user == null)
		{       
			return Action.LOGIN;
		}
		// 执行下一个拦截器或执行Action的Execute方法
		return invocation.invoke();
	}

}

struts.xml中的配置:

 <package name="default" extends="struts-default">
        <!-- 判断用户是否登录的拦截器 定义成默认的拦截器栈 -->
         <interceptors>
             <interceptor name="myInterceptor" class="chao.tool.MyInterceptor"/>
             <interceptor-stack name="mystack">
             <!-- 自定义的拦截器和默认的拦截器栈组合成新的拦截器栈 -->
               <interceptor-ref name="myInterceptor"></interceptor-ref>
               <interceptor-ref name="defaultStack"></interceptor-ref>
             </interceptor-stack>
         </interceptors>
         <!-- 定义默认拦截器为上面定义的拦截器栈 -->
         <default-interceptor-ref name="mystack"/>
         <!-- 全局结果 如果用户没有登录通过地址栏访问其他页面,返回登录页面 -->
         <global-results>
             <result name="login">/login.jsp</result>
             <result name="error">/error.jsp</result>
         </global-results>



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值