请求报头由浏览器间接地设定,并跟在初始的GET和POST请求行之后发送,比如:
GET /servlet/Search?keywords=servlet+jsp HTTP/1.1
Accept: image/gif, image/jpg
Connection: Keep-Alive
Cookie: userID=id456578
Host: www.somebookstore.com
Referer: http://www.somebookstore.com/findbooks.html
User-Agent: Mozilla/4.0
对请求报头的访问,使得servlet能够执行许多优化,并提供大量特性
Accept: 指定浏览器或其他客户程序能够处理的MIME类型: request.getHeader("Accept");
Accept-Charset: 使用的字符集,如ISO-8859-1
Accept-Encoding: 客户端能够处理的编码类型,如gzip或compress
Accept-Language: 客户端的首选语言
Authorization: 客户用这个报头来标识自己的身份
Connnection: 标明客户是否能够处理持续性HTTP连接。持续性连接允许客户或者浏览器在单个socket中读取多个文件,从而节省协商几个独立连接所需的开销
Content-Length: 只适用于POST请求,用来给定POST数据的大小,以字节为单位: request.getContentLength
Cookie: 向服务器返回cookie,这些cookie是之前由服务器发送给浏览器的:request.getCookies
Host: 标明原始URL中给出的主机名和端口号
If-Modified-Since: 仅当页面在指定日期之后发生改变的情况下,客户程序才希望获取该页面。如果没有更新的结果,则服务器发送304报头。这个选项十分有用,因为使用它,浏览器可以缓存文档,只在它们发生改变时才通过网络重新载入它们
Referer: 标明引用Web页面的URL
User-Agent:请求的浏览器或者其他客户程序
关于响应报头:
Web服务器对请求的响应,一般由一个状态行,一些响应报头,一个空行和响应的文档组成
HTTP/1.1 200 OK
Content-Type: text/html
Header 2: ...
Header N: ...
(Blank Line)
<!DOCTYPE>
<HTML>
<HEAD>...</HEAD>
<BODY>...</BODY>
</HTML>
首先看HTTP状态代码:
200: OK
302: sendRedirect
404: sendError
关于响应报头的其他部分:
Allow: 指定服务器支持的请求方法(GET,POST等)
Cache-Control: 告诉浏览器或者其他客户,什么环境可以安全地缓存文档
Connection: close值,指定浏览器不用使用持续性的HTTP连接
Content-Disposition: 要求浏览器询问客户,将响应存储在磁盘上给定名称的文件中
Content-Encoding: 标明页面在传输过程中所使用的编码方式
Content-Language: 文档使用的语言
Content-Length: 响应中的字节数
Content-Type: MIME
Expires: 规定内容的过期时间,从而不再需要继续缓存: response.setDataHeader("Expires", Time)
Last-Modified: 标明文件最后的修改时间
Location: 300-399之间的所有响应都应该包括这个报头,它通知浏览器文档的地址
Refresh: 标明浏览器应该多长时间之后请求最新的页面: response.setIntHeader("Refresh", 30)
Set-Cookie: 指定一个同页面相关的cookie
有的细节还不是非常的清楚,以后慢慢再了解
还有一点想说一下,也是Core Servlets and JavaServer Pages中的内容,对于执行耗时较长的计算任务的处理方法:
只需启动一个Thread,将该线程的优先级设为一个较低的值,这样才不致于影响整个服务器的运行,当然需要不断使用
If(!isLastResult){
response.setIntHeader("Refresh", 5)
}
对于具体的运算类,可以这样定义:
Thread t =new Thread(this);
t.setPriority(Thread.MIN_PRIORITY);
t.start();
这样做的好处是:不让用户等待过长的时间