【问题标题】:How to write a Encodingfilter configuration without web.xml如何在没有 web.xml 的情况下编写 Encodingfilter 配置
【发布时间】:2019-11-01 17:35:24
【问题描述】:

在我的项目中,Encodingfilter 是用 WEB.XML 编写的。但是我想不用WEB.XML来写,我只想写java类。

我的 WEB.XML 中的编码过滤器
没有WEB.xml的JAVA类怎么写

<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>

编码过滤器我写对了吗?

public class ServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Value("${spring.servlet.multipart.max-file-size}")

    private int maxFileSize;

    @Value("${spring.servlet.multipart.max-request-size}")

    private int maxRequestSize;

    @Autowired

    private Environment environment;

    @Override
    protected Class<?>[] getRootConfigClasses() {

        return new Class[]{HibernateConfig.class/*, SecurityConfig.class*/};

    }

    @Override
    protected Class<?>[] getServletConfigClasses() {

        return new Class[]{WebMvcConfig.class};

    }

    @Override
    protected String[] getServletMappings() {

        return new String[]{"/"};

    }

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        filter.setForceEncoding(true);
        return new Filter[]{filter};
    }
}

【问题讨论】:

  • 您在ServletInitializer 中导入了错误的Filter。这也是错误告诉你的。

标签: java spring spring-mvc jakarta-ee


【解决方案1】:

你可以使用org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer:

public class MyWebInitializer extends
        AbstractAnnotationConfigDispatcherServletInitializer {

    //...

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        filter.setForceEncoding(true);
        return new Filter[]{filter};
    }
}

【讨论】:

  • @anna9999 你为什么不直接测试一下?
猜你喜欢
  • 2018-07-18
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 2019-04-23
  • 2014-02-18
  • 2015-12-09
相关资源
最近更新 更多