一 HTTP请求报文(http://en.wikipedia.org/wiki/List_of_HTTP_header_fields)    

    请求报文由三部分组成:请求行,请求头和请求体。    

    请求行:请求方法(如POST),请求URL地址(和请求头Host属性组成完整URL),HTTP协议及版本。    

    请求头:包含若干个属性,格式为“属性名:属性值”。    

    请求体:以param1=value1&param2=value2的键值对形式编码成的格式化串,承载多个请求参数的数据。除了请求体外,请求URL也可以通过“?param1=value1&param2=value2”的方式传递数据。

 

    常见的HTTP请求头属性:    

    Accept:客户端接收的响应类型,可以为一个或多个MIME类型的值。    

    Cookie:客户端Cookie,可以将jsessionid放在Cookie中。    

    Referer:表示请求是从哪个URL过来的。

    Cache-Control:指定在整个请求响应链中必须遵守的缓存机制。

    Content-Length:请求体得字节数。

 

    服务器端通过HttpServletRequest读取请求头。其中一些典型的请求头属性,例如Cooke,Locale和ContentLength等有直接读取的API。对于HttpSession,是读取请求头Cookie属性中jsessionid的值,然后在服务器端一个会话Map中根据jsessionid获取HttpSession对象,实现会话管理。

 

二 HTTP响应报文

    HTTP响应由三部分组成:响应行,响应头和响应体。

    响应行:Http协议及版本,响应状态吗及描述。

    响应头:同样由多个属性组成。

    响应体:返回的资源。

 

    响应状态吗:(http://en.wikipedia.org/wiki/List_of_HTTP_status_codes )

    1XX:收到请求,正在处理等。

    2XX:处理成功,处理完成等。如200 OK处理成功。

    3XX:重定向等。如303 See Other,重定向到Location中;303 Not Modified。

    4XX:发生错误,责任在客户端。如404 Not Found。

    5XX:发生错误,责任在服务端。如500 Internal Server Error。

 

    常见的HTTP响应头属性:

    Cache-Control:设置缓存策略,在缓存时间内再次访问资源应该直接从客户端缓存中返回内容,具体实现靠客户端实现。

    ETag:服务器资源的具体版本,只在统一URL下,比较ETag才有意义。

    Last-Modified:所请求实体的最后修改日期。

    Location:一个URL,让客户端重定向。

    Set-Cookie:服务器设置客户端的Cookie。

 

    服务器通过HttpServletResponse的API写响应头的属性。如Cookie,Location等提供了直接操作的API。