当前位置: 首页 > wzjs >正文

自己建一个网站佛山营销网站设计

自己建一个网站,佛山营销网站设计,有口碑的大连网站建设,wordpress 无广告在 Spring 框架中,过滤器(Filter) 和 拦截器(Interceptor) 都是用于处理 HTTP 请求的中间件,但它们在作用范围、实现方式和生命周期上有显著区别。以下是详细对比和实现方式:核心区别特性过滤器…

在 Spring 框架中,过滤器(Filter)拦截器(Interceptor) 都是用于处理 HTTP 请求的中间件,但它们在作用范围、实现方式和生命周期上有显著区别。以下是详细对比和实现方式:


核心区别

特性过滤器 (Filter)拦截器 (Interceptor)
规范Servlet 规范 (J2EE 标准)Spring 框架特有
作用范围所有 Web 资源(Servlet、JSP、静态资源)仅 Spring MVC 管理的 Controller 请求
依赖依赖 Servlet 容器(如 Tomcat)依赖 Spring 容器
拦截时机在请求进入 Servlet 前 / 响应发送到客户端前在请求进入 Controller 前 / 后 / 视图渲染后
获取 Spring Bean不能直接获取(需通过工具类)可直接获取 Spring Bean
异常处理无法使用 Spring 的异常处理机制可结合 @ControllerAdvice 统一异常处理

实现方式

1. 过滤器 (Filter) 实现

过滤器是 Servlet 规范的一部分,通过实现 javax.servlet.Filter 接口实现。

步骤:

  1. 创建 Filter 类
import javax.servlet.*;
import java.io.IOException;public class CustomFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) {// 初始化逻辑}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// 1. 请求到达 Controller 前的逻辑System.out.println("Before Controller (Filter)");// 放行请求chain.doFilter(request, response);// 2. 响应返回客户端前的逻辑System.out.println("After Controller (Filter)");}@Overridepublic void destroy() {// 销毁逻辑}
}
  1. 注册过滤器(Spring Boot 中)
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FilterConfig {@Beanpublic FilterRegistrationBean<CustomFilter> customFilter() {FilterRegistrationBean<CustomFilter> bean = new FilterRegistrationBean<>();bean.setFilter(new CustomFilter());bean.addUrlPatterns("/*"); // 拦截所有路径bean.setOrder(1); // 执行顺序return bean;}
}

2. 拦截器 (Interceptor) 实现

拦截器是 Spring MVC 的组件,通过实现 HandlerInterceptor 接口。

步骤:

  1. 创建 Interceptor 类
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;@Component
public class CustomInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 在 Controller 方法执行前调用System.out.println("Before Controller (Interceptor)");return true; // true=放行, false=中断请求}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {// 在 Controller 方法执行后、视图渲染前调用System.out.println("After Controller (Interceptor)");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 在整个请求完成后调用(视图渲染完毕)System.out.println("After View Render (Interceptor)");}
}
  1. 注册拦截器
import org.springframework.beans.factory.annotation.Autowired;
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 InterceptorConfig implements WebMvcConfigurer {@Autowiredprivate CustomInterceptor customInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(customInterceptor).addPathPatterns("/**")    // 拦截所有路径.excludePathPatterns("/login"); // 排除路径}
}

执行顺序示例

假设请求路径被过滤器和拦截器同时拦截:

1. Filter: doFilter() [前逻辑]
2. Interceptor: preHandle()
3. Controller 方法执行
4. Interceptor: postHandle()
5. 视图渲染
6. Interceptor: afterCompletion()
7. Filter: doFilter() [后逻辑]

如何选择?

场景推荐使用
全局日志、字符编码、安全过滤Filter
权限验证、参数预处理Interceptor
需要 Spring 容器功能Interceptor
非 Spring 项目Filter

最佳实践:优先使用 Interceptor(可集成 Spring 特性),若需处理静态资源或深度请求/响应修改,则用 Filter。

http://www.dtcms.com/wzjs/555322.html

相关文章:

  • 电影网站制作教程及步骤群辉wordpress语言
  • 南京网站开发荐南京乐识网页游戏制作工具
  • 365网站网站建设文献
  • 来宾住房和城乡建设局网站怎样使用仿站小工具做网站
  • 移动网站设计上机考试图书馆网站建设建议
  • gta5网站建设地推接单在哪个平台找
  • 研究院网站系统建设方案加强信息网站建设
  • 网站制作与设计知识点济南制作网站的公司吗
  • 网站建设暨检务公开自查报告微信推广文案范文
  • 网站产品预算培训机构排名全国十大教育机构排名
  • 多肉建设网站前的市场分析高端网站建设如何收费
  • 官方微网站吗珠海做网站报价
  • 虹口区网站建设广告设计专业有什么可从事的工作
  • 做市场调研的网站wordpress grace8下载
  • 怎样优化网站案例wordpress文章类型模板
  • 怎么开通公司网站一个阿里云怎么做两个网站
  • 澎湃动力网站建设公司建设企业网站成本多少钱
  • 网站怎么做搜索引擎咖啡网站设计模板
  • 桓台网站推广网站建设 400电话 广告语
  • 程序员做一个网站多少钱胖哥网站的建设目标
  • 中小企业网站制作塞尼铁克杭州装饰装潢公司10大品牌
  • 说明网站建设岗位工作职责wordpress去除更新提示
  • 网站建设过程总结为爱直播视频
  • 电子购物网站的设计与实现服装箱包网站建设
  • 河北省建设厅网站电话wordpress 主题 标签
  • 淘宝客做网站怎么赚钱杭州做公司网站的公司
  • 360搜索网站提交入口常州网页定制
  • 旅游电商网站有哪些网站策划和运营
  • 建站模板系统微信打卡小程序怎么做
  • 中装建设网站磁县邯郸网站建设