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

北京政府网站开发查排名网站

北京政府网站开发,查排名网站,网站做优化的必要性,网站的种类有哪些文章目录 前置介绍filter 代码注册 filter疑问 前置介绍 你使用 javaspringboot 过滤器 filter 用在请求到达 controller 之前或者响应返回给用户之前 往往可以用 filter 来做请求的修改,日志、权限、跨域等场景,例如:设置编码和字符集&a…

文章目录

  • 前置介绍
  • filter 代码
  • 注册 filter
  • 疑问

前置介绍

你使用

  • java
  • springboot

过滤器 filter 用在请求到达 controller 之前或者响应返回给用户之前

往往可以用 filter 来做请求的修改,日志、权限、跨域等场景,例如:设置编码和字符集,请求头,状态码等

过滤器是在请求进入容器后,但请求进入 servlet 之前进行预处理的,请求结束返回也是,是在 servlet 处理完后,返回给前端之前

拦截器可以获取 IOC 容器中的各个 bean,而过滤器就不行,在拦截器里注入一个 service,可以调用业务逻辑。而过滤器是 JavaEE 标准,只需依赖 servlet api ,不需要依赖 spring

Filter 是依赖于 Servlet 容器,属于 Servlet 规范的一部分,Filter 的生命周期由 Servlet 容器管理
请添加图片描述

filter 代码

doFilter 方法中做过滤的逻辑

public class FirstFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化时执行的代码System.out.println("FirstFilter initialized");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// 在请求到达 Controller 之前执行的HttpServletRequest httpRequest = (HttpServletRequest) request;System.out.println("Request URL: " + httpRequest.getRequestURL());// 执行后续的过滤器或 Controllerchain.doFilter(request, response);// 在响应返回客户端之前执行的代码System.out.println("Response processed");}@Overridepublic void destroy() {// 销毁时执行的代码System.out.println("FirstFilter destroyed");}
}

注册 filter

下面两个方法都可以

方法一:@WebFilter注解(Servlet 3.0+)
如果你的项目支持 Servlet 3.0 及以上版本,可以直接在 Filter 类上使用 @WebFilter 注解

@WebFilter(urlPatterns = "/api/*")
public class FirstFilter implements Filter {// ...
}

在 Spring Boot 启动类上添加 @ServletComponentScan,使 @WebFilter 生效

@SpringBootApplication
@ServletComponentScan // 扫描@WebFilter注解

那怎么知道自己是不是 servlet 3.0 以及以上版本?
Spring Boot 的版本和嵌入的 Tomcat 版本决定了默认使用的 Servlet API 版本

  • Spring Boot 2.x 对应 Tomcat 9.x,支持 Servlet 4.0。
  • Spring Boot 3.x 对应 Tomcat 10.x,支持 Servlet 5.0(Jakarta EE)
    你还可以查找使用的 javax.servlet-api 依赖是哪个版本的

方法二:通过配置 configuration 和 bean 注册

@Configuration
public class FilterConfig {@Beanpublic FilterRegistrationBean<FirstFilter> FirstFilter() {FilterRegistrationBean<FirstFilter> registrationBean = new FilterRegistrationBean<>();registrationBean.setFilter(new FirstFilter());registrationBean.addUrlPatterns("/api/*"); // 指定过滤器的URL模式return registrationBean;}
}

疑问

过滤器的执行顺序?
如果你只使用 FilterRegistrationBean 显示注册 filter,则使用如下方法指定优先级

registrationBean.setOrder(1);

如果你是多个 filter 使用 @WebFilter 注解,它们的执行顺序由类名的字母顺序决定(在 @WebFilter 注解中添加 @Order 注解(如 @Order(1))不会生效。因为 @Order 是 Spring 的注解,而 @WebFilter 是 Servlet 原生注解,Spring 不会自动将其顺序应用到 Servlet 容器中)
你可以结合 @WebFilter 和 FilterRegistrationBean 使用,即 FilterRegistrationBean 再覆盖顺序,需要使用其 setOrder
如果需要精确控制顺序,推荐完全使用 FilterRegistrationBean 注册过滤器(无需 @WebFilter)

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

相关文章:

  • 花生壳一个端口做网站美国最新消息今天 新闻
  • 服装网站建设怎么写竞价销售是什么意思
  • pc做网站网络营销课程个人总结范文
  • wordpress透明主题西安搜索引擎优化
  • 交互做的很好的网站外包网络推广公司怎么选
  • 中央经济工作会议2024报告全文优化大师是什么意思
  • 招聘网站开发方案doc地推接单在哪个平台找
  • 怎样通过网站注册公司推广引流最快的方法
  • wordpress单页增加分页西安seo网站关键词优化
  • 手机网站 滑动翻页怎样看网页的友情链接
  • 做网站需要懂代码么口碑营销策略有哪些
  • 网站域名续费怎么做有什么软件可以推广
  • ubuntu做网站提高工作效率心得体会
  • 企业网站设计合同站内免费推广有哪些
  • 游戏网站建设收费明细平台推广引流怎么做
  • 高品质网站开发网站seo快速优化技巧
  • 做境外域名网站seo点击软件排名优化
  • 厦门专业做网站的公司51网站统计
  • 品质好的办公室装修设计企业整站seo
  • 成都logo标志设计快速优化工具
  • 建设动态网站的目的青岛seo优化公司
  • 佛山做外贸网站平台正规淘宝代运营去哪里找
  • java做网站的职业舆情网站
  • 分类门户网站系统项目推广方式有哪些
  • 自己做的小网站如何发布软文广告经典案例
  • 热 动漫-网站正在建设中-手机版6淘宝代运营公司排名
  • 日照网站建设哪家好网站建设开发
  • 做网站价格多少网站优化
  • 没有页面的网站怎么做性能测试本站3天更换一次域名yw
  • wordpress公司展示网站模板南京百度关键字优化价格