SpringMVC学习笔记(八)拦截器

SpringMVC学习笔记(八)

一、拦截器介绍

  拦截器(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 方法。

在这里插入图片描述

二、拦截器的简单使用

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:testInterceptor</a>

查看结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值