系列文章:spring的xml配置是如何对应注解配置的之过滤器Filter

本文探讨了如何在Spring中使用CharacterEncodingFilter解决编码问题,讲解了过滤器的执行顺序以及非Spring Boot项目中的配置方式。在Spring Boot中,通过自动配置简化了设置。同时,分析了RequestContextFilter的作用,它将请求参数保存到ThreadLocal中,便于处理。最后提到了Servlet容器对请求处理的线程模型,并预告了关于何时加载Filter、Servlet、Listener的内容。
摘要由CSDN通过智能技术生成

我们一般会配置CharacterEncodingFilter来解决中文编码乱码的问题
CharacterEncodingFilter:过滤器,解决请求编码和返回响应编码,继承了OncePerRequestFilter,重写了doFilterInternal方法
过滤器执行顺序:顺序就是filter Mapping的配置的先后顺序,filter的执行顺序就靠filter mapping在web.xml中的顺序,非web.xml中使用@Order指定执行顺序

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot并不强制要求使用web.xml文件配置过滤器,而是推荐使用Java配置类或注解的方式来配置过滤器。 如果您仍然想使用web.xml文件来配置过滤器,可以将它放置在src/main/webapp/WEB-INF目录下,并在应用程序的启动类中添加@ServletComponentScan注解,以启用Servlet和过滤器的自动注册。 例如,以下是一个使用web.xml文件配置过滤器的示例: 1. 在src/main/webapp/WEB-INF目录下创建web.xml文件,并添加以下内容: ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <filter> <filter-name>myFilter</filter-name> <filter-class>com.example.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> ``` 2. 创建一个实现javax.servlet.Filter接口的过滤器类,例如: ``` package com.example; import javax.servlet.*; import java.io.IOException; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化过滤器 } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 执行过滤操作 filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { // 销毁过滤器 } } ``` 3. 在启动类上添加@ServletComponentScan注解,例如: ``` package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication @ServletComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 这样,在启动应用程序时,Spring Boot将自动加载web.xml文件,并注册myFilter过滤器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值