最近要在工作中用到拦截器(Interceptor),故写一个简单的interceptor
我在springmvc的项目中新建的拦截器,也就是接上一篇《idea 创建 Maven + SpringMVC项目》
https://blog.csdn.net/liuying1802028915/article/details/90643364
一。首先我们写了一个 Controller
package com.taoj.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("hi")
public class HelloController {
@RequestMapping("hello")
@ResponseBody
public String sayHello(){
System.out.println("进入Controller的sayHello方法");
System.out.println("退出Controller的sayHello方法");
return "jjjjjjjjjjjjjjjj";
}
}
二。新建一个
com.taoj.interceptor.InterceptorDemo
package com.taoj.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 InterceptorDemo implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println("进入preHandle方法");
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
String url = httpServletRequest.getServletPath();//获取当前url
String contextPath = httpServletRequest.getContextPath();//获取当前项目的根目录
System.out.println("url:"+url);
System.out.println("contextPath:"+contextPath);
System.out.println("进入postHandler 方法");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println("进入afterCompletion 方法");
}
}
然后在applicationContext.xml 中 配置该Interceptor
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="interceptorDemo" class="com.taoj.interceptor.InterceptorDemo"/>
</mvc:interceptor>
</mvc:interceptors>
</beans>
然后启动项目,访问 http://localhost:8080/mvc/hi/hello.form
输出为:
进入preHandle方法
进入Controller的sayHello方法
退出Controller的sayHello方法
url:/hi/hello.form
contextPath:/mvc
进入postHandler 方法
进入afterCompletion 方法
由此可见Interceptor的作用
源码见:https://github.com/taoxiaotao6/springmvcdemo14.git
这一片学习了在springmvc 中 拦截器(Interceptor)的简单使用
不积跬步,无以至千里
不积小流,无以成江海