拦截器的拦截地址中*和**的区别

本文提供了一个优快云博客的链接示例,尽管具体内容未给出,但通常这类博客会包含丰富的编程和技术相关内容,涉及各种编程语言、工具及技术领域的讨论。
### Spring Boot 添加拦截器的方法 在 Spring Boot 中添加拦截器,可按以下步骤操作: 1. **创建拦截器**:创建一个类实现 `HandlerInterceptor` 接口,重写其中的方法,如 `preHandle`、`postHandle` `afterCompletion` 方法,用于在请求处理的不同阶段进行拦截处理。示例代码如下: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行调用(Controller方法调用之前) System.out.println("preHandle被调用"); return true; // 只有返回true才会继续向下执行,返回false取消当前请求 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) System.out.println("postHandle被调用"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) System.out.println("afterCompletion被调用"); } } ``` 2. **注册拦截器**:创建一个配置类实现 `WebMvcConfigurer` 接口,重写 `addInterceptors` 方法,将自定义的拦截器注册到 Spring 中,并指定拦截的路径。示例代码如下: ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()) .addPathPatterns("/**"); // 拦截所有请求 } } ``` 也可以使用以下方式注册拦截器: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletContextInitializer; import org.springframework.context.annotation.Bean; import org.springframework.web.servlet.HandlerInterceptor; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public HandlerInterceptor myInterceptor() { return new MyInterceptor(); } } ``` ### 拦截器过滤器的区别 在 Spring Boot 中,拦截器(Interceptor)过滤器(Filter)都是用于对请求进行预处理后处理的机制,但它们存在一些区别,具体如下: 1. **定义用途**:两者都是处理请求的机制,但工作原理应用场景不同 [^2]。 2. **修改请求**:过滤器可以修改 `request`,而拦截器不能 [^3]。 3. **实现环境**:过滤器需要在 Servlet 容器中实现,拦截器可以适用于 Java EE、Java SE 等各种环境 [^3]。 4. **依赖调用**拦截器可以调用 IOC 容器中的各种依赖,而过滤器不能 [^3]。 5. **拦截粒度**:过滤器只能在请求的前后使用,而拦截器可以详细到每个方法 [^3]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值