一个范例的相应看起来就像下面这样:
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ......HeaderN: ... (空行)<!doctype ...><html><head>...</head><body>...</body></html>
状态行包含HTTP版本信息,比如HTTP/1.1,一个状态码,比如200,还有一个非常短的信息对应着状态码,比如OK。
下表择要出了HTTP1.1相应头中最有用的部分,在网络编程中您将会常常见到它们:
相应头 | 描述 | Allow指定做事器支持的request方法(GET,POST等等)Cache-Control指定相应文档能够被安全缓存的情形。常日取值为 public,private 或no-cache 等等。 Public意味着文档可缓存,Private意味着文档只为单用户做事并且只能利用私有缓存。No-cache 意味着文档不被缓存。Connection命令浏览器是否要利用持久的HTTP连接。close值 命令浏览器不该用持久HTTP连接,而keep-alive 意味着利用持久化连接。Content-Disposition让浏览器哀求用户将相应以给定的名称存储在磁盘中Content-Encoding指定传输时页面的编码规则Content-Language表述文档所利用的措辞,比如en, en-us,,ru等等Content-Length表明相应的字节数。只有在浏览器利用持久化 (keep-alive) HTTP 连接时才有用Content-Type表明文档利用的MIME类型Expires指明啥时候过期并从缓存中移除Last-Modified指明文档末了修正韶光。客户端可以 缓存文档并且在后续的要求中供应一个 If-Modified-Since要求头Location在300秒内,包含所有的有一个状态码的相应地址,浏览器会自动重连然后检索新文档Refresh指明浏览器每隔多久要求更新一次页面。Retry-After与503 (Service Unavailable)一起利用来见告用户多久后要求将会得到相应Set-Cookie指明当前页面对应的cookie
HttpServletResponse类
response 工具是 javax.servlet.http.HttpServletResponse 类的一个实例。就像做事器会创建request工具一样,它也会创建一个客户端相应。
response工具定义了处理创建HTTP信息头的接口。通过利用这个工具,开拓者们可以添加新的cookie或韶光戳,还有HTTP状态码等等。
下表列出了用来设置HTTP相应头的方法,这些方法由HttpServletResponse 类供应:
S.N. | 方法 & 描述 | 1String encodeRedirectURL(String url)对sendRedirect()方法利用的URL进行编码2String encodeURL(String url)将URL编码,回传包含Session ID的URL3boolean containsHeader(String name)返回指定的相应头是否存在4boolean isCommitted()返回相应是否已经提交到客户端5void addCookie(Cookie cookie)添加指定的cookie至相应中6void addDateHeader(String name, long date)添加指定名称的相应头和日期值7void addHeader(String name, String value)添加指定名称的相应头和值8void addIntHeader(String name, int value)添加指定名称的相应头和int值9void flushBuffer()将任何缓存中的内容写入客户端10void reset()打消任何缓存中的任何数据,包括状态码和各种相应头11void resetBuffer()打消基本的缓存数据,不包括相应头和状态码12void sendError(int sc)利用指定的状态码向客户端发送一个出错相应,然后打消缓存13void sendError(int sc, String msg)利用指定的状态码和向客户端发送一个出错相应14void sendRedirect(String location)利用指定的URL向客户端发送一个临时的间接相应15void setBufferSize(int size)设置相应体的缓存区大小16void setCharacterEncoding(String charset)指定相应的编码集(MIME字符集),例如UTF-817void setContentLength(int len)指定HTTP servlets中相应的内容的长度,此方法用来设置 HTTP Content-Length 信息头18void setContentType(String type)设置相应的内容的类型,如果相应还未被提交的话19void setDateHeader(String name, long date)利用指定名称和值设置相应头的名称和内容20void setHeader(String name, String value)利用指定名称和值设置相应头的名称和内容21void setIntHeader(String name, int value)利用指定名称和值设置相应头的名称和内容22void setLocale(Locale loc)设置相应的措辞环境,如果相应尚未被提交的话23void setStatus(int sc)设置相应的状态码
HTTP相应头程序示例
接下来的例子利用setIntHeader()方法和setRefreshHeader()方法来仿照一个数字时钟:
<%@ page language=\"大众java\"大众 contentType=\公众text/html; charset=UTF-8\"大众 pageEncoding=\公众UTF-8\"大众%><%@ page import=\公众java.io.,java.util.\"大众 %><!DOCTYPE html><html><head><meta charset=\公众utf-8\"大众><title>菜鸟教程(runoob.com)</title></head><body><h2>自动刷新实例</h2><% // 设置每隔5秒自动刷新 response.setIntHeader(\公众Refresh\公众, 5); // 获取当前韶光 Calendar calendar = new GregorianCalendar(); String am_pm; int hour = calendar.get(Calendar.HOUR); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); if(calendar.get(Calendar.AM_PM) == 0) am_pm = \公众AM\"大众; else am_pm = \"大众PM\公众; String CT = hour+\"大众:\"大众+ minute +\"大众:\"大众+ second +\公众 \"大众+ am_pm; out.println(\"大众当前韶光: \公众 + CT + \公众\n\"大众);%></body></html>
将以上代码保存为main.jsp,然后通过浏览器访问它。它将会每隔5秒显示一下系统当前韶光。
我们可以看下以下 Gif 演示图: