Sta*_*ros 5 tomcat servlets content-type mime-types tomcat8
最近,我一直在研究导致我在web-common_X_X.xsd中定义并在Web应用程序web.xml文件中使用的“ mime-mapping”元素的问题。我的目标是将Tomcat配置为在返回对特定servlet的响应时包括特定的Content-Type标头。
我发现以前的堆栈溢出文章都提到了该功能,但是我无法获得一个与Tomcat 8.0.33一起使用的简单示例。
对于此测试,我创建了以下servlet:
public class SimpleServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
IOUtils.write("Hello There!", resp.getOutputStream());
resp.setStatus(202);
}
}
Run Code Online (Sandbox Code Playgroud)
并具有以下web.xml:
<web-app
version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>SimpleServlet</servlet-name>
<servlet-class>com.jamf.swa.SimpleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleServlet</servlet-name>
<url-pattern>*.swa</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>swa</extension>
<mime-type>text/rtf;charset=UTF-8</mime-type>
</mime-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
我尝试使用“ mime-type”元素中包含和不包含字符集的测试。“ text / rtf”类型也是任意的。我已经测试了其他人。
启动应用程序后,我向/testing.swa发出以下请求:
curl --trace-ascii - http://localhost:8080/testing.swa
== Info: Trying ::1...
== Info: TCP_NODELAY set
== Info: Connected to localhost (::1) port 8080 (#0)
=> Send header, 89 bytes (0x59)
0000: GET /testing.swa HTTP/1.1
001b: Host: localhost:8080
0031: User-Agent: curl/7.51.0
004a: Accept: */*
0057:
<= Recv header, 23 bytes (0x17)
0000: HTTP/1.1 202 Accepted
<= Recv header, 27 bytes (0x1b)
0000: Server: Apache-Coyote/1.1
<= Recv header, 20 bytes (0x14)
0000: Content-Length: 12
<= Recv header, 37 bytes (0x25)
0000: Date: Wed, 15 Feb 2017 22:37:17 GMT
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 12 bytes (0xc)
0000: Hello There!
Hello There!== Info: Curl_http_done: called premature == 0
== Info: Connection #0 to host localhost left intact
Run Code Online (Sandbox Code Playgroud)
如您所见,不包含Content-Type标头。
我可以确认在我的映射中正确调用了StandardContext:addMimeMapping(),但是我从未看到在请求期间读取了mimeMappings局部变量。
我也没有在Tomcat方面找到任何有关将此元素与v8 +一起使用的文档。
我在想些琐碎的事吗?Tomcat是否已不再支持此功能?您可以提供的任何帮助将不胜感激。
根据 Tomcat 邮件列表,“mime 映射”功能仅由 Tomcat 的 DefaultServlet 使用。其他 servlet 可以利用此机制,但必须显式内置它。
我所描述的功能将由过滤器来完成,我认为这就是我要走的路线。
| 归档时间: |
|
| 查看次数: |
6257 次 |
| 最近记录: |