• 自定义拦截器——实现用户未登录自动跳转到登录页面


    1.用户未登录自动跳转到登录页面

    1.1 编写拦截器类

    需要继承struts2的框架的MethodFilterInterceptor

    提供的工具类(用于获取session中的数据和用户信息):

    /**
     * 
     * @Title: BOSUtils  
     * @Description:   BOS项目工具类
     * @author YuKai Fan  
     * @date 2018年5月14日
     */
    public class BOSUtils {
        //获取session对象
        public static HttpSession getSession() {
            return ServletActionContext.getRequest().getSession();
        }
        
        //获取登录用户对象
        public static User getLoginUser() {
            return (User) getSession().getAttribute("loginUser");
        }
    }

    定义拦截器类:

    /**
     * 
     * @Title: BOSLoginInterceptor  
     * @Description:  自定义拦截器,实现用户未登录自动跳转到登录页面
     * @author YuKai Fan  
     * @date 2018年5月14日
     */
    public class BOSLoginInterceptor extends MethodFilterInterceptor {
    
        /**
         * 拦截方法
         */
        @Override
        protected String doIntercept(ActionInvocation invocation) throws Exception {
            //获取拦截的url地址
            /*ActionProxy proxy = invocation.getProxy();
            String actionName = proxy.getActionName();
            String namespace = proxy.getNamespace();
            String url = actionName + namespace;*/
            //从session中获取拦截对象
            User user = BOSUtils.getLoginUser();
            if (user == null) {
                //没有登录,跳转到登录页面
                return "login";
            }
            //放行
            return invocation.invoke();
        }
    
    }

    1.2 配置拦截器

    在struts.xml中配置自定义拦截器:

    <!-- 配置拦截器 -->
            <interceptors>
                <!-- 注册拦截器 -->
                <interceptor name="bosLoginInterceptor" class="com.javaweb.bos.web.interceptor.BOSLoginInterceptor">
                    <!-- 指定哪些方法不需要拦截 -->
                    <param name="excludeMethods">login</param>
                </interceptor>
                <!-- 定义拦截器栈 -->
                <interceptor-stack name="myStack">
                    <interceptor-ref name="bosLoginInterceptor"></interceptor-ref>
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                </interceptor-stack>
            </interceptors>
            <default-interceptor-ref name="myStack"></default-interceptor-ref>
            <!-- 配置全局结果集 -->
            <global-results>
                <result name="login">/login.jsp</result>
            </global-results>
  • 相关阅读:
    win8设置无线网络共享
    设计模式学习每天一个——Decorator模式
    【转】命令模式(command pattern)
    设计模式总览
    设计模式学习每天一个——Command模式
    设计模式学习每天一个——Observer模式
    【转】UML解惑:图说UML中的六大关系
    设计模式学习每天一个——Strategy模式
    深入学习
    设计模式学习每天一个——Singleton模式
  • 原文地址:https://www.cnblogs.com/FanJava/p/9034663.html
Copyright © 2020-2023  润新知