文档章节

springMVC--(讲解7)拦截器

求是科技
 求是科技
发布于 2016/09/08 18:00
字数 611
阅读 129
收藏 0

####1.连接器简介 springMVC拦截器类似于servlet中的过滤器filter,用于对处理器(controller)进行预处理和后处理。
####2.常见应用场合
1.日志记录:记录请求信息,便于对请求信息进行监控、统计等。
2.权限检查:例如登陆检测,如果没有登陆则直接跳往登陆页面。
3.通用行为:读取cookie得到用户信息,存储起来,方便程序的后续使用。
拦截器的本质也是AOP,换句话说,符合横切关注点的所有功能都可以放在拦截器实现。
####3.配置信息
在spring-mvc的配置文件中添加如下代码

	<!-- 拦截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 允许所有的请求通过 -->
			<mvc:mapping path="/**"/>
			<!-- 哪些不被拦截 -->
			<mvc:exclude-mapping path=""/>
			<bean class="com.test.spring.interceptors.MyInterceptors"></bean>
		</mvc:interceptor>
	</mvc:interceptors>

新创建一个bean,实现HandlerInterceptor接口,如下

package com.test.spring.interceptors;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptors implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub

	}

}

####4.适配器方法介绍
1.preHandle:预处理方法
所有的请求都是先到这里,返回true时,再去controller;在这里可以获取到request的所有信息,通常我们会做 登陆检查。
2.postHandle:后处理方法
处理器执行完请求信息后需要走这里(但是还没有渲染视图/没有返回json数据),在这里我们可以通过modelAndView对模型数据进行处理。
3.afterCompletion:请求/响应完毕
返回信息了,视图显示出来了/json数据返给前端了。在这里一般做一些资源清理的工作,类似于try-catch-finally中的finally一样。
####5.运行示例

拦截器输出:处理器前-------
-----进入controller-->service-->serviceImpl-->获取数据-->..>controller
-----controller 执行retuen后  
拦截器输出:处理器后-------
-----Successfully completed request,说明请求完成,此时视图已经显示出来了
拦截器输出:处理器返回信息后------

© 著作权归作者所有

上一篇: java --多线程
下一篇: spring--整合mybatis
求是科技

求是科技

粉丝 96
博文 448
码字总数 231187
作品 0
成都
后端工程师
私信 提问
Spring Security权限框架理论与实战演练

本章首先让大家学习到Spring Security权限框架的架构,之后大家可以学习到Spring Security权限框架的核心概念,包括拦截器、数据库管理、缓存、自定义决策等等,之后会手把手带大家基于Sprin...

芥末无疆sss
2018/10/18
0
0
springboot学习(二)——springmvc配置使用

以下内容,如有问题,烦请指出,谢谢 上一篇讲解了springboot的helloworld部分,这一篇开始讲解如何使用springboot进行实际的应用开发,基本上寻着spring应用的路子来讲,从springmvc以及web...

嘻哈开发者
2018/04/26
0
0
第四十九章:SpringBoot2.0新特性 - 你get到WebMvcConfigurer两种配置方式了吗?

初升级版本,在已经使用的系统内还是存在一些兼容性的问题,有很多变化!!!也存在一些过时的方法、配置文件信息以及类,我们在之前版本的中可以使用抽象类来处理相关的配置,由于版本最低支...

恒宇少年
2018/03/17
0
0
Acegi 为 Web services 的安全护航

安全,可是说是个老生常谈的话题,也可以说是个永恒的话题,无论是在那个领域,那个行业,安全都是非常的重要,写本文时正好看到一些矿难和香港游客 在印尼发生灾难的新闻,可见我们周围到处...

红薯
2011/04/22
1K
2
基于SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

2016/10/07 Spring admin 5 条评论 1587 views 一 简介 (1)过滤器: 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时...

Airship
2017/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

研究下这代码,用到了guava和线程池

import com.google.common.util.concurrent.FutureCallback;import com.google.common.util.concurrent.Futures;import com.google.common.util.concurrent.ListenableFuture;import c......

暗中观察
14分钟前
0
0
《css 揭秘》 之垂直居中的实现

最近看了 Lea Verou 的 《css揭秘》一书,让我对自己的 css学习产生了深深的怀疑。这本书真是太棒了,里面涉及到很多优雅又有趣的效果实现,真的是非常棒。如果你有时间,十分建议你去看看。...

IrisHuang
20分钟前
1
0
java 抽象类(2)

/*需求: 描述一个图形、圆形、 矩形三个类。不管哪种图形都会具备计算面积与周长的行为,但是每种图形计算的方式不一致而已。常量的命名规范:全部字母大写,单词与单词 之间 使用下...

hellation_
22分钟前
0
0
总结:堆和栈

堆 堆比较好理解,即存放对象的地方。这里的对象由GC管理 1、类变量(static修饰的变量):在程序加载时系统就为它在堆中开辟了内存,堆中的内存地址存放于栈以便于高速访问。静态变量的生命...

浮躁的码农
28分钟前
1
0
JavaScript 新语法详解:Class 的私有属性与私有方法

译者按: 为什么偏要用**#**符号? 原文:JavaScript's new #private class fields 译者:Fundebug 本文采用意译,版权归原作者所有 proposal-class-fields与proposal-private-methods定义了 ...

Fundebug
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部