1.配置SpringMVC环境
2.创建拦截器类
创建一个类实现HandlerInterceptor接口
package cn.msg.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
/**
* 当前端向后端访问时触发
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//可以使用此方法获取本次请求的地址
System.out.println(request.getRequestURI());
//可以使用此方法获取请求参数
System.out.println("preHandle已执行并获取到前端参数:"+request.getParameter("name"));
return true;
}
/**
* 当后端响应前端时触发
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//可以通过ModeladView对响应数据做操作
System.out.println("postHandle已执行并获取到响应数据"+modelAndView.getModel().get("qqq"));
}
/**
* 一次请求返回到前端后时触发一般用来关闭资源
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion已执行");
}
}
3.配置springmvc.xml文件
<!--配置拦截器-->
<mvc:interceptors>
<!--配置要拦截的文件如果要配置多个拦截器需要写多个<mvc:interceptor>来配置-->
<mvc:interceptor>
<!--要拦截那些文件 配置之后只会拦截这些文件
demo是指配置@RequestMapping 的路径-->
<mvc:mapping path="/demo/*"/>
<!--不拦截那些文件 配置之后除了这些文件其余的都拦截
<mvc:exclude-mapping path=""/>
-->
<!--配置拦截器地址-->
<bean id="interceptor" class="cn.msg.interceptor.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
4.响应页面
<%--
Created by IntelliJ IDEA.
User: l
Date: 2020/1/10
Time: 11:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>响应页面</h1>
<%System.out.println("响应页面已执行");%>
</body>
</html>
5.测试
测试方法:前端使用a标签向后端text方法发送请求在,text方法中向控制台输出信息在拦截器中也分别向控制台发送相应信息具体看第二步代码
拦截器已成功触发并且由此图可以看出拦截器各个方法触发得时间