在servlet中,通常我们将指定contentType,然后我们可以打印出html代码.
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Run Code Online (Sandbox Code Playgroud)
如果IF,我们没有指定contentType,任何contentType都会设置为default?我做了一个测试,添加response.setContentType("text/html");,然后删除它,但我的网站能够呈现HTML?这是为什么?
您的问题有两个不同的部分.让我分开回答
Content-TypeJava Servlet容器中的默认标头值如果,我们没有指定a
contentType,任何contentType将被设置为默认值?
从Javadoc判断 ServletResponse#getContentType
返回用于此响应中发送的MIME正文的内容类型.必须
setContentType(java.lang.String)在提交响应之前使用指定的内容类型.如果未指定任何内容类型,则返回此方法null.
就ServletResponse所涉及的情况而言,没有默认值.响应将不包含Content-Type标头.
Java Servlet规范(版本2.4和版本3)明确指出Servlet容器不能定义默认内容类型.
这是Java Servlet 3.0规范的摘录- JSR-315,重点是我的
Servlet程序员负责确保
Content-Type在servlet生成的内容的响应对象中正确设置头.HTTP 1.1规范不要求在HTTP响应中设置此标头. 当servlet程序员未设置类型时,Servlet容器不能设置默认内容类型.
您是否能够观察到这一点取决于外部因素.可以使用servlet过滤器来填充Content-Type标头,在您的机器和执行它的服务器之间可能存在代理,但所有这些特定于给定应用程序或其部署方式而不是由Servlet容器确定.
这可以在应用程序服务器之间有所不同,甚至取决于一段配置(您可以使用mime-mappinginweb.xml指定扩展和内容类型之间的映射)
最重要的是,有很多方法可以Content-Type在Java Web应用程序中设置标题,但就Servlet API而言,没有默认值.
Content-TypeWeb浏览器处理丢失标头的响应如果,我们没有指定a
contentType,任何contentType将被设置为默认值?我做了一个测试,添加response.setContentType("text/html");,然后删除它,但我的网站能够呈现HTML?这是为什么?
如前所述,某些东西可能正在设置内容类型.但即使不是这种情况,您的Web浏览器也可以在大多数时间处理它.
当浏览器遇到缺少内容类型标题的响应时,他们只是尝试做出有根据的猜测.
例如,Firefox 使用一种名为Unknown Decoder的东西
不幸的是,我找不到描述Chrome/Chromium行为的好消息来源.
| 归档时间: |
|
| 查看次数: |
4853 次 |
| 最近记录: |