1. 拦截器用途

  (1)拦截未登录用户直接访问某些链接

  (2)拦截日志信息

  (3)拦截非法攻击,比如sql注入

2. 涉及jar、类

  (1)spring-webmvc.jar

  (2)HandlerInterceptor(org.springframework.web.servlet:接口)、

      AsyncHandlerInterceptor(org.springframework.web.servlet:接口)、 

      HandlerInterceptorAdapter(org.springframework.web.servlet.handler.HandlerInterceptorAdapter:抽象类)

3.业务类

  (1)实现(implements) 实现HandlerInterceptor接口或者子接口

  (2)继承(extends) 继承HandlerInterceptor接口子类(抽象类)

  (3)涉及的方法

      preHandle、postHandle、afterCompletion

4.测试代码

LoginInterceptor

 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler throws Exception {
  LOGGER.info("--------preHandle-------" + request.getRequestURI());
  HttpSession session = request.getSession();
  String login_account = String.valueOf(session.getAttribute(CommonConstants.SESSION_KEY+session.getId()));
  if(!request.getRequestURI().contains("/baselogin/")){
    if (StringUtils.isBlank(login_account) || "null".equalsIgnoreCase(login_account)) {
      response.sendRedirect("/baselogin/loginPage.htm");
      return false;
9     }
  }
  return true;
} public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)throws Exception {
  LOGGER.info("--------postHandle-------" + request.getRequestURI());
} public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  LOGGER.info("--------afterCompletion-------" + request.getRequestURI());
} public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
23   LOGGER.info("--------afterConcurrentHandlingStarted-------" + request.getRequestURI());
}

执行顺序:preHandle -> controller -> postHandle -> afterCompletion

配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
">
<!-- 拦截排除
<mvc:interceptors>
        <mvc:interceptor>
      <mvc:exclude-mapping path=""/>
      <bean class="org.bighead.interceptor.LoginInterceptor" />
    </mvc:interceptor>
</mvc:interceptors> -->
<!-- 拦截登录 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*/*.htm"/>
<bean class="org.bighead.interceptor.LoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
<beans>

spring拦截器(interceptor)简介的更多相关文章

  1. web 过滤器 Filter、 Spring 拦截器 interceptor

    1.过滤器(Filter)(在web.xml中注册过滤器) 首先说一下Filter的使用地方,我们在配置web.xml时,总会配置下面一段设置字符编码,不然会导致乱码问题: <filter> ...

  2. spring拦截器Interceptor

    在Spring Boot中,拦截器可以分为两种类型: 一是WebMVC,负责拦截请求,类似于过滤器,对用户的请求在Controller接收前进行处理,在Controller处理完成后加工结果等.使用时 ...

  3. spring 拦截器简介

    spring 拦截器简介 常见应用场景 1.日志记录:记录请求信息的日志,以便进行信息监控.信息统计.计算PV(Page View)等.2.权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直 ...

  4. Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系

    在我们日常的开发中,我们经常会用到Filter和Interceptor.有时同一个功能.Filter可以做,Interceptor也可以做.有时就需要考虑使用哪一个比较好.这篇文章主要介绍一下,二者的 ...

  5. 5-21 拦截器 Interceptor

    Spring MVC拦截器 什么是拦截器 拦截器是SpringMvc框架提供的功能 它可以在控制器方法运行之前或运行之后(还有其它特殊时机)对请求进行处理或加工的特定接口 常见面试题:过滤器和拦截器的 ...

  6. Spring拦截器中通过request获取到该请求对应Controller中的method对象

    背景:项目使用Spring 3.1.0.RELEASE,从dao到Controller层全部是基于注解配置.我的需求是想在自定义的Spring拦截器中通过request获取到该请求对应于Control ...

  7. java之拦截器Interceptor

    1,拦截器的概念    java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了 ...

  8. 过滤器(Filter)和拦截器(Interceptor)

    过滤器(Filter) Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序.它依赖于servlet容器,在实现上,基于函数回调,它可以对几乎所有请求 ...

  9. spring拦截器中修改响应消息头

    问题描述 前后端分离的项目,前端使用Vue,后端使用Spring MVC. 显然,需要解决浏览器跨域访问数据限制的问题,在此使用CROS协议解决. 由于该项目我在中期加入的,主要负责集成shiro框架 ...

随机推荐

  1. 【ASP.NET MVC系列】浅谈ASP.NET MVC 控制器

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  2. 第三方工具系列--Lombok常用注解

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9329798.html Lombok注解解析: @NonNull 使用在方法的参数或者构造 ...

  3. Perl的die和warn函数

    die和warn die可以在出现错误的时候停止程序,并给出消息.默认会输出出错的程序名称和出错行号 warn函数和die函数类似,但和die的区别是不会终止程序 die和warn的参数末尾如果给了\ ...

  4. 脚本解决.NET MVC按钮重复提交问题

    见于:Avoiding Duplicate form submission in Asp.net MVC by clicking submit twice 脚本代码: $(document).on(' ...

  5. [转]Laravel - Where null and Where not null eloquent query example

    本文转自: https://hdtuto.com/article/laravel-where-null-and-where-not-null-eloquent-query-example- if yo ...

  6. C#调用C++(QT5.5.1项目)的C++/CLI(CLR项目)项目技术笔记

    导航 1.编译环境 2.项目配置 1.设置附加包含目录 2.设置附加库目录 3.设置附加依赖项 3.CLR中各种定义 1.接口定义 2.类定义 3.枚举定义 4.属性定义 4.CLR中各种使用 1.类 ...

  7. pdf.js插件使用记录,在线打开pdf

    天记录一个js库:pdf.js.主要是实现在线打开pdf功能.因为项目需求需要能在线查看pdf文档,所以就研究了一下这个控件. 有些人很好奇,在线打开pdf文档浏览器不是支持吗.是的你说的都是现代浏览 ...

  8. xpath语法笔记

    xpath是在xml文档中查找信息的语言, 其语法整理如下: 路径表达式(选取节点) div div下的所有子节点 /div 根节点下的div //div 匹配所有的div . 当前节点 .. 父节点 ...

  9. angularjs-select2的使用

    1.引入文件 '/select2.css', '/select2-bootstrap.css', '/select2.min.js', ‘/angular-select2.min.js’ 2.页面 3 ...

  10. python实现简单的计算器功能

    如想实现一个计算器的功能,输入格式为字符串,不能运用python里面的内置方法,出去简单的加减乘除,设计一个相对高级的计算器: a = '1 - 2 * ( ( 6 0 -3 0 +(-40/5) * ...