springMVC--(讲解7)拦截器

原创
2016/09/08 18:00
阅读数 719

####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,说明请求完成,此时视图已经显示出来了
拦截器输出:处理器返回信息后------
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部