web服务器响应浏览器或其他客户程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答头,一个空行,内容文档.下面是一个最简单的应答: 【程序编程相关:JSP连接各类数据库大全(上)】
7.1 状态代码概述【推荐阅读:WebLogic的初步研究(2):结构篇】
content-type: text/plain 【扩展信息:JSP由浅入深(6)JSP声明】http/1.1 200 okhello world
状态行包含http版本.状态代码.与状态代码对应的简短说明信息.在大多数情况下,除了content-type之外的所有应答头都是可选的.但content-type是必需的,它描述的是后面文档的mime类型.虽然大多数应答都包含一个文档,但也有一些不包含,例如对head请求的应答永远不会附带文档.有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明).servlet可以利用状态代码来实现许多功能.例如,可以把用户重定向到另一个网站;可以指示出后面的文档是图片.pdf文件或html文件;可以告诉用户必须提供密码才能访问文档;等等.这一部分我们将具体讨论各种状态代码的含义以及利用这些代码可以做些什么.
7.2 设置状态代码
如前所述,http应答状态行包含http版本.状态代码与对应的状态信息.由于状态信息直接与状态代码相关,而http版本又由服务器确定,因此需要servlet设置的只有一个状态代码.
servlet设置状态代码一般使用httpservletresponse的setstatus方法.setstatus方法的参数是一个整数(即状态代码),不过为了使得代码具有更好的可读性,可以用httpservletresponse中定义的常量来避免直接使用整数.这些常量根据http 1.1中的标准状态信息命名,所有的名字都加上了sc前缀(status code的缩写)并大写,同时把空格转换成了下划线.也就是说,与状态代码404对应的状态信息是“not found”,则httpservletresponse中的对应常量名字为sc_not_found.但有两个例外:与状态代码302对应的常量根据http 1.0命名,而307没有对应的常量.
设置状态代码并非总是意味着不要再返回文档.例如,虽然大多数服务器返回404应答时会输出简单的“file not found”信息,但servlet也可以定制这个应答.不过,定制应答时应当在通过printwriter发送任何内容之前先调用response.setstatus.
虽然设置状态代码一般使用的是response.setstauts(int)方法,但为了简单起见,httpservletresponse为两种常见的情形提供了专用方法:senderror方法生成一个404应答,同时生成一个简短的html错误信息文档;sendredirect方法生成一个302应答,同时在location头中指示新文档的url.
7.3 http 1.1状态代码及其含义
... 下一页