zoukankan      html  css  js  c++  java
  • java之spring mvc之拦截器

    1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的。

    2. 自定义实现一个拦截器的步骤:

    a). 定义一个实现 HandlerInterceptor 接口 的类

    public class MyInterceptor implements HandlerInterceptor{
        /**
         * 在处理方法之前执行,一般用来做一些准备工作:比如日志,权限检查
         * 如果返回false 表示被拦截,将不会执行处理方法
         * 返回true继续执行处理方法
         */
        @Override
        public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {
            System.out.println("执行preHandler---------"+req.getRemoteHost()+req.getRemoteUser());
            resp.sendRedirect("index.jsp");
            return false;
        }
        /**
         * 在处理方法执行之后,在渲染视图执行之前执行,一般用来做一些清理工作
         */
        @Override
        public void postHandle(HttpServletRequest req, HttpServletResponse resp, Object handler, ModelAndView mv)
                throws Exception {
            System.out.println("执行postHandler");
        }
        /**
         * 在视图渲染后执行  一般用来释放资源
         */
        @Override
        public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
                throws Exception {
            System.out.println("执行afterCompletion");
        }
    }

    b) 在 springmvc 的配置文件中 ,添加拦截器配置

    <mvc:interceptors>
            <!-- 定义一个拦截器的配置 -->
            <mvc:interceptor>
                <!-- mapping 指定哪些url被拦截 
                    /*表示根路径下的所有请求被拦截-/hello.do
                    /**表示根路径及其子路径下的所有请求被拦截/user/add.do
                -->
                <mvc:mapping path="/**"/>
                <!-- 配置拦截器的路径 -->
                <bean class="cn.sxt.interceptor.MyInterceptor"></bean>
            </mvc:interceptor>
        </mvc:interceptors>

    c) 测试

    3. 登录拦截器实现

    public class LoginInterceptor extends HandlerInterceptorAdapter{
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            
            //验证请求的地址是否是登录地址  如果是继续往下执行
            String uri=request.getRequestURI();
            uri = uri.substring(uri.lastIndexOf("/")+1);
            if(uri.equals("login.do")){
                return true;
            }
            //验证session中是否有用户存在 如果有  继续执行
            if(request.getSession().getAttribute("username")!=null){
                return true;
            }
            //执行跳转到登录页面
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return false;
        }
    }
  • 相关阅读:
    PHP中逻辑运算符and/or与||/&&的一个坑
    PHP usort 使用用户自定义的比较函数对数组中的值进行排序
    php编写TCP服务端和客户端程序
    Redis系列-php怎么通过redis扩展使用redis
    国内镜像源收集
    双通道内存技术简介
    收集些日本的VPS
    建站相关关键词快速普及
    bash 的漏洞,你们中招了吗?
    戴维·卡梅伦(David William Donald Cameron)经典语录
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/11280240.html
Copyright © 2011-2022 走看看