我正在使用Servlet 3.0并希望将现有的web.xml文件转换为java config。配置servlet /过滤器等似乎非常直接。我无法弄清楚如何转换以下mime-mapping。任何人都可以帮助我吗?
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
答案 0 :(得分: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);
}
}
答案 1 :(得分:3)
只需写一个Filter
。例如对于web.xml中的mime-mapping:
<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);
}
...
}
答案 2 :(得分:1)
使用spring MVC,这种方法对我有用。
在网络上下文中,添加以下内容:
public class WebContext implements WebMvcConfigurer {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.mediaType("xsd", MediaType.TEXT_XML);
}
}
答案 3 :(得分:0)
据我所知,您无法在Java配置中设置它们。您只能在Web应用程序的部署描述符或serlvet容器中执行此操作。
ServletContext#getMimeType(String)
的javadoc提示
MIME类型由servlet的配置决定 容器,可以在Web应用程序部署中指定 描述符。