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

简单的网站建设seo刷网站

简单的网站建设,seo刷网站,饮食网站模板,wordpress获取当前日期在构建Web应用时,我们经常需要在请求进入Controller之前或响应返回客户端之前进行一系列的预处理或后处理操作。比如记录请求日志、进行权限校验、实现跨域请求处理等。此时,Filter(过滤器)就成了我们常用的技术手段之一。 Sprin…

在构建Web应用时,我们经常需要在请求进入Controller之前或响应返回客户端之前进行一系列的预处理或后处理操作。比如记录请求日志、进行权限校验、实现跨域请求处理等。此时,Filter(过滤器)就成了我们常用的技术手段之一。

Spring Boot对Servlet规范提供了良好的支持,其中也包括对Filter的自动注册和自定义配置。在本文中,我们将深入讲解Spring Boot中Filter的工作机制、注册方式、执行顺序及其在实际开发中的典型应用场景。


一、什么是Filter?

Filter是Java Servlet规范中的组件之一,它位于Servlet容器中请求链的中间位置,主要用于对进入Servlet的请求或从Servlet返回的响应进行过滤处理。

Filter的典型用途包括:

  • 请求日志记录

  • 权限验证

  • XSS过滤

  • 跨域支持(CORS)

  • 内容压缩(如Gzip)


二、Spring Boot中使用Filter的两种方式

1. 通过@WebFilter注解 + @ServletComponentScan扫描

这是直接遵循Servlet规范的方式,适合较简单的应用场景。

 

java

@WebFilter(filterName = "logFilter", urlPatterns = "/*") public class LogFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("请求进入LogFilter..."); chain.doFilter(request, response); System.out.println("响应离开LogFilter..."); } }

在启动类上加上:

 

java

@SpringBootApplication @ServletComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

2. 通过@Bean方式注册Filter(推荐)

这种方式更加灵活,也更符合Spring Boot的编程风格。

 

java

复制编辑

@Configuration public class FilterConfig { @Bean public FilterRegistrationBean<LogFilter> logFilter() { FilterRegistrationBean<LogFilter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new LogFilter()); registrationBean.addUrlPatterns("/*"); registrationBean.setOrder(1); // 控制执行顺序 return registrationBean; } }


三、Filter的执行顺序控制

在实际项目中,我们可能会配置多个过滤器,例如日志记录、权限控制、跨域处理等。这时候就需要明确各个Filter的执行顺序。

使用FilterRegistrationBean时,可以通过setOrder(int order)设置执行顺序,数字越小,优先级越高。


四、Filter与Interceptor的区别

特性FilterInterceptor
所属规范Java EE Servlet规范Spring MVC框架
作用范围Servlet请求(包括静态资源)Controller请求
使用场景安全验证、日志记录、XSS过滤等登录检查、权限控制、数据封装等
生命周期控制由Servlet容器管理由Spring容器管理
配置方式注解或Bean注册实现HandlerInterceptor并注册


五、常见使用场景实战

1. 请求日志打印
 

java

public class RequestLogFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; System.out.println("请求路径:" + httpRequest.getRequestURI()); chain.doFilter(request, response); } }

2. 简单的权限校验
 

java

public class AuthFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; String token = httpRequest.getHeader("Authorization"); if (token == null || !token.equals("valid-token")) { HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, "权限不足"); return; } chain.doFilter(request, response); } }


六、结语

Filter是构建Web应用不可或缺的工具,掌握其工作机制和注册方式,能够让你在项目开发中更加得心应手。相比于Spring MVC中的Interceptor,Filter 23ph.zghaa.name 更接近底层,控制更精细,适用于一些底层逻辑处理。

建议在项目初期就规划好Filter的使用结构,以避免后期混乱,同时注意合理划分职责和顺序,避免性能问题和请求冲突。

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

相关文章:

  • 网站建设策划书网页设计英文网站seo发展前景
  • 怎么把源码做网站营销型网站建设方案
  • 免费前端模板网站seo视频教程我要自学网
  • 壹佰云建站代运营公司
  • 个人网站设计毕业论文总结seo管理系统培训
  • 做网站用的什么服务器百度秒收录技术最新
  • wordpress 采集教程泰州网站排名seo
  • 内江网站怎么做seo社区营销
  • 河北新闻最新消息今天百度seo刷排名软件
  • 做动图的网站成都优化网站哪家公司好
  • 网站开发的权限设置全网推广平台推荐
  • wordpress小工具自定义aso优化分析
  • 手工网站做蛋糕盒子品牌营销网站建设
  • java jsp网站开发营销网站类型
  • wordpress自动发布图片上海优化排名网站
  • 有没有专业做二手老车的网站百度百度
  • 上海微网站建设深圳网络seo推广
  • 个人工作室网站源码带后台百度竞价是什么
  • wordpress可视化不显示手机系统优化工具
  • 平顶山市住房和城乡建设局网站视频外链平台
  • wordpress 音频网站seo搜索引擎优化教程
  • 做期货在哪个网站看消息seo技术有哪些
  • h5制作企业网站有哪些优势有哪些网络营销公司
  • 企业网站建设前言seo搜索引擎实训心得体会
  • 网站标ico怎么做营销策划思路
  • 网站开发定制公司深圳seo排名哪家好
  • .net和php哪个做网站好免费网络推广
  • 网站里弹窗怎么做推广的软件有哪些
  • 网站制作公司哪儿济南兴田德润有活动吗宁波seo网络推广公司排名
  • 网站建设费用皆选网络外国黄冈网站推广平台