一、自定义拦截器

Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口。

二、HandlerInterceptor接口的三个方法

1.preHandler():

此方法在业务处理器(Controller)处理请求之前被调用。在此方法中可以对用户请求request进行处理。

若返回值为true,则继续调用后续的拦截器和目标方法。若返回值为false,则不会再调用后续的拦截器和目标方法。

* 常用来做权限。日志,事务等。

2.postHandler():

此方法在业务处理器处理完请求后,在DispatcherServlet向客户端返回响应前(调用目标方法之后,渲染视图之前)被调用,在该方法中对用户请求request进行处理。

* 常用来对请求域中的属性或视图做出修改。

3.afterCompletion():

此方法在DispatcherServlet完全处理完请求后被调用

* 常用来做资源释放

三、拦截器和过滤器在执行先后顺序图:

四、拦截器使用举例

用户登录状态检查例子:通过用户发送的请求,判断用户是否登录,若未登录则不允许访问被保护资源

步骤:

1.创建拦截器类

一般拦截器类直接实现HandlerInterceptor接口,重写HandlerInterceptor接口的三个方法就可以了,

但由于此处只需要用到 HandlerInterceptor接口的preHandler()方法,所以我们可以选择继承HandlerInterceptor接口的抽象实现类HandlerInterceptorAdapter,重写其中的preHandler()方法。

在preHandler()方法中我们只需要从session中查询用户信息是否为null,就可以知道用户是否已登录了。

public class LoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Admin admin = (Admin) session.getAttribute("loginAdmin");
if (admin == null){
throw new AccessForbiddenException("请登录后再访问!");
}
return true;
}
}

2.注册拦截器

在web.xml中注册拦截器,配置需要拦截和不需要拦截的请求

<!--注册拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!--mvc:mapping配置要拦截的资源-->
<!-- /* 对应一层路径,比如:/aaa -->
<!-- /** 对应多层路径,比如:/aaa/bbb 或 /aaa/bbb/ccc 或 /aaa/bbb/ccc/ddd-->
<mvc:mapping path="/**"/>
<!--mvc:exclude- mapping配置不拦截的资源-->
<!--去登陆页面,不拦截-->
<mvc:exclude-mapping path="/admin/to/login/page.html"/>
<!--执行登陆操作,不拦截-->
<mvc:exclude-mapping path="/admin/do/login.html"/>
<!--执行退出登录操作,不拦截-->
<mvc:exclude-mapping path="/admin/do/Logout.html"/>
<bean id="loginInterceptor" class="com.atguigu.crowd.mvc.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>

springmvc自定义的拦截器以及拦截器的配置的更多相关文章

  1. SpringMVC——自定义拦截器、异常处理以及父子容器配置

    自定义拦截器: 一.若想实现自定义拦截器,需要实现 org.springframework.web.servlet.HandlerInterceptor 接口. 二.HandlerIntercepto ...

  2. SSM框架之SpringMVC(6)异常处理及拦截器

    SpringMVC(6)异常处理及拦截器 1.异常处理 1.1.异常处理的思路 ​ 系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主 ...

  3. SpringBoot2.X自定义拦截器实战及新旧配置对比(核心知识)

    简介: 讲解拦截器使用,Spingboot2.x新版本配置拦截拦截器和旧版本SpringBoot配置拦截器区别讲解 1.@Configuration 继承WebMvcConfigurationAdap ...

  4. Spring实现自定义注解并且配置拦截器进行拦截

    有时候我们会自定义注解,并且需要配置拦截器对请求方法含有该自定义注解的方法进行拦截操作 自定义注解类 NeedToken.java import java.lang.annotation.Docume ...

  5. Spring boot自定义拦截器和拦截器重定向配置简单介绍

    大家好: 本文简单介绍一下用于权限控制的Spring boot拦截器配置,拦截器重定向问题. 开发工具:jdk1.8   idea2017(付费版,网上找的破解教程) 1,首先使用idea创建一个Sp ...

  6. struts2拦截器interceptor的三种配置方法

    1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...

  7. Struts2-整理笔记(五)拦截器、拦截器配置

    拦截器(Interceptor) 拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制. 拦截器的优点 简化了Action的实现 ...

  8. SpringMCVC拦截器不拦截静态资源

    SpringMCVC拦截器不拦截静态资源 SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下 ...

  9. SpringBoot系列(十一)拦截器与拦截器链的配置与使用详解,你知道多少?

    往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静 ...

  10. SpringMVC_04 拦截器 【拦截器的编程步骤】【session复习?】

    待更新... 2017年5月13日22:45:31 1 什么是拦截器  spring提供的一个特殊组件,前端控制器 DispacherServlet 在收到请求之后,会先调用拦截器,再调用处理器(Co ...

随机推荐

  1. POJ3070矩阵快速幂简单题

    题意:       求斐波那契后四位,n <= 1,000,000,000. 思路:        简单矩阵快速幂,好久没刷矩阵题了,先找个最简单的练练手,总结下矩阵推理过程,其实比较简单,关键 ...

  2. Django中的表单

    目录 表单 Django中的表单 用表单验证数据 自定义验证 表单 HTML中的表单是用来提交数据给服务器的,不管后台服务器用的是 Django  还是 PHP还是JSP还是其他语言.只要把 inpu ...

  3. Node-Web模块

    创建服务端------------------------------------------------------ var http = require('http'); var fs = req ...

  4. Python练习2-基本聊天程序-虚拟茶会话

    基本聊天程序 先来个基本的测试例子: Main.py from asyncore import dispatcher import socket,asyncore PORT = 11223 class ...

  5. 【ECharts】报表联动,动态数据设计

    说明: 数据没有拉取后台数据,仅仅前端模拟数据,Copy即可有效果.联动后台时,使用异步获取数据即可.鼠标点击,动态展示点击项的数据.有关更多实例,请移步到echarts官网查看. 成果展示: 相关代 ...

  6. SpringBoot配置切换

    切换需求 有时候在本地测试是使用8080端口,可是上线使用的又是80端口. 此时就可以通过多配置文件实现多配置支持与灵活切换. 多配置文件 3个配置文件: 核心配置文件:application.pro ...

  7. Vulnerability: Cross Site Request Forgery (CSRF)

    CSRF跨站请求伪造 这是一种网络攻击方式,也被称为one-click attack或者session riding 攻击原理 CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web ...

  8. babylin使用思路

  9. powercli The SSL connection could not be established, see inner exception. 问题解决

    Connect-VIServer -Server 这里是"SSL连接不能建立......"这实际上意味着你没有一个有效的证书.如果你想连接到vCenter没有一个有效的证书,您必须 ...

  10. 寻找CPU使用率高的进程方法

    寻找CPU使用率高的进程方法 发布时间:  2017-07-13 浏览次数:  1362 下载次数:  0 问题描述 节点报CPU使用率高,甚至出现"ALM-12016 CPU使用率超过阈值 ...