Interceptor
This commit is contained in:
9
pom.xml
9
pom.xml
@@ -28,9 +28,16 @@
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- filter end -->
|
||||
<!-- interceptor -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework</groupId>-->
|
||||
<!-- <artifactId>org.springframework.web.servlet</artifactId>-->
|
||||
<!-- <version>3.1.0.RELEASE</version>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- interceptor end -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
28
src/main/java/stu/base/interceptor/MyInterceptor.java
Normal file
28
src/main/java/stu/base/interceptor/MyInterceptor.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package stu.base.interceptor;
|
||||
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @Author cuiJiaWang
|
||||
* @Create 2025-02-06 10:36
|
||||
*/
|
||||
public class MyInterceptor implements HandlerInterceptor {
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
|
||||
// 在视图渲染之前执行的逻辑
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
|
||||
// 请求完成后的逻辑,比如资源清理
|
||||
}
|
||||
}
|
||||
100
src/main/java/stu/base/interceptor/WebConfig.java
Normal file
100
src/main/java/stu/base/interceptor/WebConfig.java
Normal file
@@ -0,0 +1,100 @@
|
||||
package stu.base.interceptor;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.format.FormatterRegistry;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.validation.Validator;
|
||||
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
||||
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
|
||||
import org.springframework.web.servlet.HandlerExceptionResolver;
|
||||
import org.springframework.web.servlet.config.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author cuiJiaWang
|
||||
* @Create 2025-02-06 10:54
|
||||
*/
|
||||
@Configuration
|
||||
public class WebConfig implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addFormatters(FormatterRegistry formatterRegistry) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
// //1.需要定义一个convert转换消息的对象;
|
||||
// FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
|
||||
// //2.添加fastJson的配置信息,比如:是否要格式化返回的json数据;
|
||||
// FastJsonConfig fastJsonConfig = new FastJsonConfig();
|
||||
// fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
|
||||
// SerializerFeature.WriteMapNullValue,
|
||||
// SerializerFeature.WriteNullStringAsEmpty,
|
||||
// SerializerFeature.DisableCircularReferenceDetect,
|
||||
// SerializerFeature.WriteNullListAsEmpty,
|
||||
// SerializerFeature.WriteDateUseDateFormat);
|
||||
// //3处理中文乱码问题
|
||||
// List<MediaType> fastMediaTypes = new ArrayList<>();
|
||||
// fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
|
||||
// //4.在convert中添加配置信息.
|
||||
// fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
|
||||
// fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
|
||||
// //5.将convert添加到converters当中.
|
||||
// converters.add(fastJsonHttpMessageConverter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Validator getValidator() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry interceptorRegistry) {
|
||||
interceptorRegistry.addInterceptor(new MyInterceptor())
|
||||
.addPathPatterns("/**");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addViewControllers(ViewControllerRegistry viewControllerRegistry) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
registry.addResourceHandler("swagger-ui.html")
|
||||
.addResourceLocations("classpath:/META-INF/resources/");
|
||||
|
||||
registry.addResourceHandler("/webjars/**")
|
||||
.addResourceLocations("classpath:/META-INF/resources/webjars/");
|
||||
|
||||
registry.addResourceHandler("/swagger-resources/**")
|
||||
.addResourceLocations("classpath:/META-INF/resources/swagger-resources/");
|
||||
|
||||
registry.addResourceHandler("/swagger/**")
|
||||
.addResourceLocations("classpath:/META-INF/resources/swagger*");
|
||||
|
||||
registry.addResourceHandler("/v2/api-docs/**")
|
||||
.addResourceLocations("classpath:/META-INF/resources/v2/api-docs/");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer defaultServletHandlerConfigurer) {
|
||||
|
||||
}
|
||||
}
|
||||
17
src/main/java/stu/base/interceptor/interceptor.md
Normal file
17
src/main/java/stu/base/interceptor/interceptor.md
Normal file
@@ -0,0 +1,17 @@
|
||||
## Interceptor
|
||||
### 什么是 Interceptor
|
||||
Interceptor 是一种特殊的 Handler,它允许你拦截消息的传递,并做出一些自定义的处理,主要目的是为了减少重复代码,用于大量的程序预处理工作。
|
||||
|
||||
`Interceptor`是 `Spring MVC` 框架的一部分,是位于`org.springframework.web.servlet`包中的`HandlerInterceptor`接口,用于在请求处理之前或之后执行特定逻辑。与`Filter`不同的是,`Interceptor`不依赖于`Servlet`容器,它是 Spring 框架独有的。
|
||||
|
||||
|
||||
### 执行顺序
|
||||
|
||||

|
||||
|
||||
`postHandle` 是按照`Interceptor` 链**逆序执行**的
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
Reference in New Issue
Block a user