response.setHeader(Content-Type)与response.setContentType()的区别
在Java Web编程中,设置 Content-Type
和 Content-Length
头部是再经常不过的操作了,但是 HttpServletResponse
提供了两个相关的方法来设置头部,一个是 void setHeader(String name, String value)
,一个是 void setContentType(String type)
或者 void setContentLength(int len)
。这两者之间有什么区别吗?之前一直分不清楚,也在代码中看到两种方式都有被人使用,甚至是两个一起写的。
我们通过阅读Tomcat相关函数的代码,来看看这两者具体有什么区别。
javax.servlet.http.HttpServletResponse#setHeader
的实现是 org.apache.catalina.connector.ResponseFacade#setHeader
,内部会调用 org.apache.catalina.connector.Response#setHeader
,源码如下:
public void setHeader(String name, String value) {
if (name == null || name.length() == 0 || value == null) {
return;
}
if (isCommitted()) {
return;
}
// Ignore a