如何在Spring Boot中配置CharacterEncodingFilter?

时间:2014-06-05 07:55:31

标签: encoding spring-boot

我在学习Spring Boot时遇到了一些编码问题; 我想添加像Spring 3.x这样的CharacterEncodingFilter。 就像这样:

<filter>
    <filter-name>encodingFilter</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>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

4 个答案:

答案 0 :(得分:48)

由于 Spring Boot 1.4.2 注册您自己的 CharacterEncodingFilter 仅限您通过设置{{}来禁用Spring自己的bean实例1}}在 application.properties

但是,通过将这些设置添加到 application.properties ,可以在没有任何过滤器实例化的情况下解决此问题:

spring.http.encoding.enabled=false

来源:Appendix A. Common application properties

答案 1 :(得分:12)

Application.java类的示例代码,如上面的注释所示:

@Bean
public FilterRegistrationBean filterRegistrationBean() {
    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
    characterEncodingFilter.setForceEncoding(true);
    characterEncodingFilter.setEncoding("UTF-8");
    registrationBean.setFilter(characterEncodingFilter);
    return registrationBean;
}

答案 2 :(得分:2)

我也更喜欢application.properties配置。但是spring.http.encoding在新的Spring Boot版本(> 2.3)中不再有用。因此,新的application.setting应该如下所示:

server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true

答案 3 :(得分:-4)

我认为没有必要明确地在application.properties文件中编写以下属性:

spring.http.encoding.charset = UTF-8

spring.http.encoding.enabled =真

spring.http.encoding.force =真

相反,如果您在应用程序中转到pom.xml,如果您有以下内容,那么spring将完成所需的工作。

Property