服务器响应的生成:HTTP状态代码——HttpServletResponse接口应用

一 HTTP响应的格式web

             web服务器对客户端的响应通常包含:一个状态行,一些响应报头,一个空行和相应的文档构成。                            浏览器

             1,状态行:缓存

                    状态行由HTTP版本,一个状态代码以及一段对应状态代码的简短消息组成,表示请求是否被理解或被知足。HTTP版本由服务器决定。状态码通常由系统自动设置为200。也能够用Servlet设置状态码。消息巍峨自定义。服务器

              2,响应报。post

              3,空行网站

          4,文档url

二 如何设置状态代码spa

在向客户程序发送任何文档内容以前调用方法设置状态代码。.net

使用HttpServletResponse接口的setStatus,sedRedirect或sendError方法设置状态码。code

状态代码由3位数字组成,第一个数字定义了响应的类别,后面两位数字没有具体的分类。

在servlet中使用HttpServletResponse中定义的常量来引用状态代码。

1 设置任意状态代码:setStatus(int)方法

 在用PrintWriter实际返回如何内容以前调用setstatus方法。

参数能够为int类型状态代码,也能够为HttpServletResponse中定义的常量。

2 设置302和404状态代码:sendRedirect(String url)和sendError(int code,String msg)方法。 两者抛出IOException。

状态代码302命令浏览器链接到新的url。sendRedirect方法生成302响应及Location报头,给出新的url放入Location报头以前,系统自动将相对url转换为绝对url。

状态代码404用于服务器没有找到文档的状况。sendError方法发送状态代码及小段简短信息,信息被自动安排在HTML文档中发送给用户。

三 状态代码的做用

 

  1. 1,HTTP1.1中可用的特定状态码  
  2.   
  3.     100-199:信息性的标示用户应该采起的其余动做。  
  4.   
  5.     200-299:表示请求成功。  
  6.   
  7.     300-399:用于那些已经移走的文件,经常包括Location报头,指出新的地址。  
  8.   
  9.     400-499:代表客户引起的错误。  
  10.   
  11.     500-599:由服务器引起的错误。  
  12.   
  13.   
  14.   
  15. 2,Servlet与客户端交互使用的重要状态代码。  
  16.   
  17.     100(Continue,继续):表示客户端程序在询问是否能够在随后的请求中向服务器发送附加文档。服务器使用100(SC_CONTINUE)表示继续,417(SC_EXPECTATION_FAILED)表示不接受该附件。  
  18.   
  19.       
  20.   
  21.     200(OK, 一切正常):200(SC_OK)表示一切正常。  
  22.   
  23.     202(Accepted,已经接受):202(SC_ACCEPTED)请求已经接受,但处理没有完成。  
  24.   
  25.     204(No Content,没有新文档):204(SC_NO_CONTENT)因为没有新的文档供显示,继续显示以前的文档。  
  26.   
  27.     205(Rest Content,重置内容):205(SC_REST_CONTENT)表示没有新的文档,但浏览器应该重置文档视图。用来指示浏览器清除表单的字段。  
  28.   
  29.       
  30.   
  31.       
  32.   
  33.     301(Moved Permanently,被永久移动):301(SC_MOVED_PERMANENTLY)表示所请求的文件已经被移动到别处。文档的新URL在Location响应报头中给出,浏览器应该从新链接到新URL。  
  34.   
  35.     302(Found,找到):302(SC_MOVED_PERMANENTLY)。301和302等同,区别在302将Location报头中给出的URL看做是非永久性的临时替代。浏览器自动从新链接到Location响应报头中给出的URL。  
  36.   
  37.     304(Not Modified,未发生更改):304(SC_NOT_MODIFIED)表示缓存的版本是否为最新。是的话客户端就应该使用它,不然服务器应该返回所请求的文档,设置正常状态码。  
  38.   
  39.         Servlet不该该直接使用这个状态代码,应该实现getLastModified方法,由默认的Service方法来处理。  
  40.   
  41.     307和303区别:接收到303响应则继续进行get和post请求的重定向,接受到307,对于get请求继续重定向,而post则再也不继续。  
  42.   
  43.   
  44.   
  45.       
  46.   
  47.     400:代表客户请求中含有语法错误。  
  48.   
  49.     401:表客户程序试图访问密码保护的页面。  
  50.   
  51.     403:表示服务器拒绝提供相关的资源,无论是否受权。  
  52.   
  53.     404:(SC_NOT_FOUND)没有如何资源供访问。  
  54.   
  55.     405:这个资源不允许使用请求方法访问。  
  56.   
  57.     415:服务器不知道如何处理请求附加文件类型。  
  58.   
  59.     417:回应100,告诉浏览器不接受该附件。  
  60.   
  61.       
  62.   
  63.       
  64.   
  65.     500:表示服务器运行混乱。由CGI程序或Servlet崩溃或返回不正确格式的报头引发。  
  66.   
  67.     501:表示服务器不支持该客户程序发送的命令。  
  68.   
  69.     503:因为维护或超负荷工做引发服务器不能作出响应。  
  70.   
  71.     505:表示服务器不支持请求行中给出的HTTP版本。  

 

四 从新链接,重定位,刷新的区别:

         从新链接不显示任何中间页面。

         刷新的时候浏览器会临时显示一个中间页面。

        重定位由另外的Servlet或网页生成结果,而非该ServletB自己。

               重定位做用:

                      预先知道目的地,能够验证相关数据后再转送到相关目的地。                       经过本身的网站公布用户须要访问的网站连接,跟踪用户的行为,统计访问等。获得相关信息后,再将用户重定向到实际须要访问的网站。 

五 进行从新定位和跳转到错误页面

           使用sendRedirect(String url)方法向浏览器发送302状态代码,浏览器自动从新链接到Location响应报头中sendRedirect方法给出的URL,从新定位到相关页面。

使用sendError(response.SC_NOT_FOUND,String msg)方法设置输出的错误提示信息。

六 根据浏览器的不一样将用户从新定位到相关页面的Servlet。

获取User-Agent请求报头区分不一样的浏览器类型,使用sendRedirect(String url)方法向浏览器发送302状态代码,浏览器自动从新链接到Location响应报头中sendRedirect方法给出的URL,从新定位到相关页面。

相关文章
相关标签/搜索