• Spring中RequestContextHolder以及HandlerInterceptorAdapter的使用


    1 . RequestContextHolder 的使用

    想要使用RequestContextHolder,要在web.xml中配置RequestContextListener的监听才能使用。

    //全局获取session的方法:
    
    HttpSession session = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession();

    同时 这样可以获取request和response。

    2 . HandlerInterceptorAdapter的使用

    在实现跳转到需要登录的页面时,除了用Shiro权限外,还可以通过在登录的方法上添加注解,如果有注解,发现没有登录的话,就跳转到登录页面。

    比如做一个登录拦截器

    /**
     * 前台专门用于登陆检查的拦截器
     */
    public class LoginCheckInterceptor extends HandlerInterceptorAdapter {
    
        //或者也可以用  implement  HandlerInterceptor 来做
    
        //适配器实现了HandlerInterceptor的所有方法  我们只需去覆盖需要用到的方法即可
    
        @Override
        public boolean preHandle(HttpServletRequest request,
                                 HttpServletResponse response, Object handler) throws Exception {
            //判断登陆逻辑
            //判断当前请求的方法
            if (handler instanceof HandlerMethod) {  //HandlerMethod包装了我这次请求要访问的controller里的具体方法
                HandlerMethod hm = (HandlerMethod) handler;
                RequireLogin rl = hm.getMethodAnnotation(RequireLogin.class);//获取到当前方法上是否有注解
                //rl != null  说明该方法需要登陆才能访问
                if (rl != null && UserContext.getCurrent() == null) {
                    response.sendRedirect("/login.html");
                    return false; //阻止继续执行
                }
            }
            return super.preHandle(request, response, handler);   //正常的放行
        }
    }

    需要在applicationContext中配置拦截

    <!-- 配置拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/*"/>
            <bean class="com.yl.p2p.base.util.LoginCheckInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
  • 相关阅读:
    513. Find Bottom Left Tree Value(LeetCode)
    647. Palindromic Substrings(LeetCode)
    537. Complex Number Multiplication(LeetCode)
    338. Counting Bits(LeetCode)
    190. Reverse Bits(leetcode)
    Java多线程核心技术
    正则表达式
    linux 怎么把^M去掉
    分片与分区的区别
    《MYSQL技术精粹》读书笔记
  • 原文地址:https://www.cnblogs.com/Jeely/p/10811945.html
Copyright © 2020-2023  润新知