SpringMVC学习笔记(八)拦截器

SpringMVC学习笔记(八)

文章目录

  • SpringMVC学习笔记(八)
    • 一、拦截器介绍
    • 二、拦截器的简单使用
      • 1.创建定义拦截器
      • 2.将拦截器配置到SpringMVC的配置文件中
      • 3.创建控制类controller
      • 4.创建请求页面测试

一、拦截器介绍

  拦截器(Interceptor )是依赖于 Spring 框架,是 aop 的一种表现,基于 Java 的动态代理实现的。拦截器的实现原理和过滤器类似,都可以对用户发出的请求或者对服务器做出的响应进行拦截。SpringMVC提供了一个支持拦截器的HandlerInterceptor的接口,此接口的实现类就是一个拦截器。

方法 介绍
boolean preHandle (HttpServletRequest request,HttpServletResponse response,Object handler)throws Exception 用于拦截客户端发出的请求,此方法会在request到达前调用。如果拦截处理后,需要放行的话,返回ture;如果需要结束请求,则返回false。
void postHandle HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView)throws Exception 用于拦截服务器发出的响应。此方法会在请求处理方法之完request请求之后、服务器发出response响应到达DispatcherServlet的渲染方法之前被调用。
void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex)throws Exception 此方法会在DispatcherServlet将response响应的视图渲染完毕之后被调用。
HandlerInterceptor接口中的方法


  1.声明拦截器的类:通过实现 HandlerInterceptor 接口,实现 preHandle、postHandle 和 afterCompletion 方法。
  2. 通过配置类配置拦截器:通过实现 WebMvcConfigurer 接口,实现 addInterceptors 方法。

SpringMVC学习笔记(八)拦截器_第1张图片

二、拦截器的简单使用

1.创建定义拦截器

  创建一个类,并实现HandlerIntercptor接口:

package com.springmvc.interceptor;

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

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

public class Interceptor implements HandlerInterceptor{
	//拦截客户短发出的请求
	public  boolean perHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception{
		System.out.println("拦截器的preHandler方法");
		return true;//放行	
	}
	
	//用于拦截服务器发出的请求
	public void perHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView)
			throws Exception{
		System.out.println("拦截器的postHandler方法");
	}
	//视图渲染完毕后使用
	@Override
	public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex)throws Exception{
		System.out.println("拦截器的afterCompletion()方法");
	}
	}

2.将拦截器配置到SpringMVC的配置文件中


      <mvc:interceptors>
      	<mvc:interceptor>
      		
      		<mvc:mapping path="/**/"/>
      		
      		<mvc:exclude-mapping path="/g/testFileUpload"/>
      		<bean class="com.springmvc.interceptor.Interceptor">
      		bean>
      	mvc:interceptor>
      mvc:interceptors>

3.创建控制类controller

 //拦截器的控制器
    @RequestMapping(value="/testInterceptor")
    public String testInterceptor() {
    	System.out.println("请求处理方法");
    	return "s";
    }

4.创建请求页面测试

 <a href="g/testInterceptor">超连接测试8:testInterceptora>

查看结果:
SpringMVC学习笔记(八)拦截器_第2张图片

你可能感兴趣的:(spring,java,过滤器,spring,springmvc)