Struts中的拦截器未登录的session配置

我用的是struts2.3版本。

先贴上struts.xml中的拦截器配置:

 <interceptors>
          <!--  配置一个自定义拦截器器 -->
            <interceptor name="loginCheck"
                class="com.tutorialspoint.logins.loginInterceptor">
            </interceptor>
            <!-- 再配置一个拦截的排列。我的理解就是先经过loginCheck拦截器器,再进行后面的操作;defaultStack代表的应该是之后的操作 -->
            <interceptor-stack name="myStack">
                <interceptor-ref name="loginCheck" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>
        <!-- 创建默认拦截排列 也就是所有的action都要接受拦截-->
        <default-interceptor-ref name="myStack"></default-interceptor-ref>

再贴上拦截器指向的类:这个类把所有未登录session的账号拦截,返回到登录页面。

public class loginInterceptor extends AbstractInterceptor{
    @Override
    public String intercept(ActionInvocation actionInvocation) throws Exception
    {
            Map session = actionInvocation.getInvocationContext().getSession();

            if(null == session.get("email")){
                System.out.println("Session未登陆");
                return "unlogin";
            }
            return actionInvocation.invoke();               
    }
}

下面这个也就是unlogin所映射的jsp。

<global-results>
            <result name="unlogin">/templets/login.jsp</result>
            <result name="error">/error.jsp</result>
        </global-results>

上面配置完也就是对所有的action 进行拦截。如果不想让aciton被拦截,
则要像下面的配置action ,例如:在登录页面已经明白是未登录的,不需要拦截。。

<action name="login" class="com.tutorialspoint.logins.LoginAction"
            method="execute">
            <!-- 自定义排列 应该是优先级大于上面的 myStack排列。所以它不需要经过loginCheck拦截器-->
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result name="success">/templets/login.jsp</result>
        </action>

拦截器的会在action的方法实现之前进行拦截,也可以在之后进行拦截。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值