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;
        }
    }
  • 相关阅读:
    8.移动和重命名文件
    7.复制文件和目录
    22.变基
    21.拉取&删除远程分支
    程序员必备课程——网络编程入门
    正则表达式——Java程序员懂你
    编程语言的基础——搞定JavaIO
    需加装饰——装饰模式
    结合提供者模式解析Jenkins源码国际化的实现
    算法族的集中管理——策略模式
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/11280240.html
Copyright © 2011-2022 走看看