zoukankan      html  css  js  c++  java
  • springMVC中拦截器

    拦截器概述:

      SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。例如:必须登录后才可以访问指定页面
    拦截器与过滤器的区别:
      拦截器主要采用aop横切进入方法的思想进行应用
      过滤器:
        servlet规范中的一部分,任何java web工程都可以使用
         在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截
       拦截器:
        ?拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
         拦截器只会拦截访问的控制器方法, 如果访问的是jsp/html/css/image/js是不会进行拦截的

    1.好处:拦截器也可以让你将通用的代码模块化并作为可重用的类。Struts2中的很多特性都是由拦截器来完成的。
    2.作用:可以构成拦截器栈,完成特定功能。比如日志记录、登录判断、权限检查等作用。


    实现一个拦截器
    · 1. 导入拦截器依赖

     1  <dependency>
     2             <groupId>org.springframework</groupId>
     3             <artifactId>spring-webmvc</artifactId>
     4             <version>5.2.7.RELEASE</version>
     5         </dependency>
     6         <dependency>
     7             <groupId>javax.servlet</groupId>
     8             <artifactId>servlet-api</artifactId>
     9             <version>2.5</version>
    10         </dependency>

     2.在springmvc.xml中配置相关

     1  <!--拦截器-->
     2     <mvc:interceptors>
     3         <mvc:interceptor>
     4             <!--/** 包括路径及其子路径--> 
     5             <!--/admin/* 拦截的是/admin/add等等这种 , /admin/add/user不会被拦截-->
     6             <!--/admin/** 拦截的是/admin/下的所有-->
     7             <mvc:mapping path="/**"/>
     8             <!--bean配置的就是拦截器项目路径-->
     9             <bean class="com.bdqn.util.MyInterceptor"/>
    10         </mvc:interceptor>
    11     </mvc:interceptors>

      

     3.编写一个类实现拦截器 HandlerInterceptor

     1     //在请求处理的方法之前执行
     2     // 如果返回true执行下一个拦截器
     3     // 如果返回false就不执行下一个拦截器
     4     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
     5         System.out.println("----------处理请求前,进行拦截判断---------");
     6         return true;
     7     }
     8     //在请求处理方法执行之后执行
     9     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    10         System.out.println("------------处理后------------");
    11     }
    12     //在dispatcherServlet处理后执行,做清理工作
    13     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    14         System.out.println("------------清理------------");
    15     }
    16 }

    注意:此处

    request.getRequestURI().contains("Login")
    表示在一个请求路径中匹配是否包含该字符串,如果包含返回true
    1    @RequestMapping("/Login")
    2     public String Login(HttpSession session,@RequestParam("user") String user,@RequestParam("pwd") String pwd,Model model){
    3        //故如果拦截放行判断没有包含该路径字符串,如果该方法被拦截就算提交也不会保存成功数据
    4         System.out.println(user);
    5         //将登录信息存放到session中
    6         session.setAttribute("isLogin",user);
    7 
    8         return "test";
    9     }
     
    要看日出必须守到拂晓。
  • 相关阅读:
    Leetcode Substring with Concatenation of All Words
    Leetcode Divide Two Integers
    Leetcode Edit Distance
    Leetcode Longest Palindromic Substring
    Leetcode Longest Substring Without Repeating Characters
    Leetcode 4Sum
    Leetcode 3Sum Closest
    Leetcode 3Sum
    Leetcode Candy
    Leetcode jump Game II
  • 原文地址:https://www.cnblogs.com/sunlang369/p/13498538.html
Copyright © 2011-2022 走看看