7

我正在使用 Servlet 3.0 并希望将现有的 web.xml 文件转换为 java 配置。配置 servlet/过滤器等似乎很简单。我不知道如何转换以下 mime 映射。谁能帮我吗?

<mime-mapping>
    <extension>xsd</extension>
    <mime-type>text/xml</mime-type>
</mime-mapping>
4

4 回答 4

6

我在 Spring Boot 应用程序中遇到了这个问题。我的解决方案是创建一个实现org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer如下的类:

@Configuration
public class MyMimeMapper implements EmbeddedServletContainerCustomizer {
  @Override
  public void customize(ConfigurableEmbeddedServletContainer container) {
    MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT);
    mappings.add("xsd", "text/xml; charset=utf-8");
    container.setMimeMappings(mappings);
  }
}
于 2014-05-27T11:59:35.973 回答
3

只写一个Filter。例如对于 web.xml 中的 mime 映射:

<mime-mapping>
    <extension>mht</extension>
    <mime-type>message/rfc822</mime-type>
</mime-mapping>

我们可以写一个过滤器:

@WebFilter("*.mht")
public class Rfc822Filter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse resp,
            FilterChain chain) throws IOException, ServletException {
        resp.setContentType("message/rfc822");
        chain.doFilter(req, resp);
    }

    ...
}
于 2015-12-24T08:07:03.507 回答
1

使用spring MVC,这种方法对我有用。

在网络上下文中,添加以下内容:

public class WebContext implements WebMvcConfigurer {

  @Override
  public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.mediaType("xsd", MediaType.TEXT_XML);
  }
}
于 2019-06-19T13:02:03.977 回答
0

据我所知,您不能在 Java 配置中设置它们。您只能在 Web 应用程序的部署描述符或您的 serlvet 容器中执行此操作。

ServletContext#getMimeType(String)提示的javadoc

MIME 类型由 servlet 容器的配置确定,并且可以在 Web 应用程序部署描述符中指定。

于 2013-11-13T18:09:44.563 回答