介绍:
http协议也就是超文本传输协议,是tcp/ip协议的一个应用层协议。主要用于浏览器和服务器之间交换数据。
版本:
当前的http协议是1.1版本,相比于1.0版本,在一个连接上可以获取多个web资源。
假设一个web页面有三张图片,那么客户端访问服务器的时候会访问四次。一次页面请求,三次图片请求。
请求资源:
URI:统一资源标识符(可以定位本地文件,局域网文件,互联网文件)。
URL:统一资源定位符(定位互联网文件)是URI的一个子集。
http请求:
指的是客服端向服务器请求某个web资源,也就是一个http请求。一个http请求包含内容(请求行、请求头、实体内容且以空行和请求头隔开),部分内容可选。
请求行(描述客户端的请求方式、请求的资源名称、以及使用的http版本协议)
|——请求方式:GET,POST,HEAD,OPTIONS,DELETE,TRACE,PUT。 主要使用的是GET,POST,客户端通过这两种方式可以带一些数据给服务器。
\--get方式:get方式可以在url中中带一些参数,如hello.html?name=abc&password=123,?之后接参数,参数之间用&符号分隔。get携带的参数容量大小不可以超过1K。
\--post方式:post方式在请求中不会将参数显示出来,它的请求参数会放在请求实体中,参数之间用&分隔。相对于get方式更加安全,并且传递的数据量没有限制。
多个消息头——消息头用于描述客户端请求那台主机,以及客户端的一些环境情况。
Accept: text/html,image/* --浏览器接收的数据类型
Accept-Charset: ISO-8859-1 --浏览器接收的编码格式
Accept-Encoding: gzip,compress --浏览器接收的数据压缩格式
Accept-Language: en-us,zh- --浏览器接收的语言
Host: www.it315.org:80 --当前请求访问哪个主机和端口
If-Modified-Since: Tue, 11 Jul 200018:23:51 GMT --浏览器最后更新的缓存时间
Referer: http://www.it315.org/index.jsp --当前请求来自于哪里(从超链接过来的请求包含此头)
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ---浏览器类型
Cookie: name=eric ---浏览器保存的cookie信息
Connection: close/Keep-Alive --浏览器和服务器连接状态。close:关闭连接。keep-alive:保持连接。
Date: Tue, 11 Jul 2000 18:23:51 GMT --请求发出时间HttpServletRequest类:本类对象代表客户端的请求,当客户端通过http协议来访问服务器时,http请求头中的所有的信息都封装到这个对象中,开发人员通过这个对象的方法就可以获得客户的信息。
请求行:
request.getMethod();请求方式
request.getRequestURI() 请求资源
request.getRequestURL()
request.getProtocol() 协议版本
请求头:
request.getHeader("name"):根据请求头获取请求值
request.getHeaderNames():获取所有请求头名称
实体内容:
request.getInputStream();
request和response对象:服务器接受到客户端的http请求,针对每次请求会创建一个代表请求的request对象,代表响应的response对象。
request类常见应用:获取浏览器类型,防盗链,获取表单输入项的数据,解决请求参数的字符集编码。
request类常用方法:
获得客户机信息
getRequestURL方法返回客户端发出请求时的完整URL。
getRequestURI方法返回请求行中的资源名部分。
getQueryString 方法返回请求行中的参数部分。
getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
getRemoteAddr方法返回发出请求的客户机的IP地址
getRemoteHost方法返回发出请求的客户机的完整主机名
getRemotePort方法返回客户机所使用的网络端口号
getLocalAddr方法返回WEB服务器的IP地址。
getLocalName方法返回WEB服务器的主机名
获得客户机请求头
getHeader方法
getHeaders方法
getHeaderNames方法
获得客户机请求参数(客户端提交的数据)
getParameter方法
getParameterValues(String name)方法
getParameterNames方法
getParameterMap方法
http响应:
一个http响应代表服务器想客户端回传的数据([一个状态行],若干响应头,[实体]且其与消息头之间要用空格隔开)
状态行:用于描述服务器对请求的处理结果。
|——状态行格式: http版本号 状态码 原因叙述<CRLF> 例如:http/1.1 200 ok。
\--状态码
多个消息头:用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息可以通知客户端如何处理等一会儿它回送的数据。
实体内容:代表服务器想客户端回传的数据。
Location: http://www.it315.org/index.jsp --重定向地址。通常和302状态码配合使用,完成请求重定向效果
Server:apache tomcat --服务器类型
Content-Encoding: gzip --服务器发送给浏览器的数据压缩格式
Content-Length: 80 --服务器发送给浏览器数据长度
Content-Language: zh-cn --服务器发送给浏览器数据语言
Content-Type: text/html; charset=GB2312 --服务器发送给浏览器数据类型
Last-Modified: Tue, 11 Jul 2000 18:23:51GMT --服务器资源最后修改时间
Refresh: 1;url=http://www.it315.org --定时刷新或每隔n秒跳转页面
Content-Disposition: attachment; filename=aaa.zip --告诉浏览器以下载方式打开资源
Transfer-Encoding: chunked
Set-Cookie:SS=Q0=5Lb_nQ; path=/search --服务器发送给浏览器的cookie信息
HttpServletResponse类:其对象表示对服务器的响应,封装了想客户端发送数据,响应头,响应状态码的方法。
setStatus(int sc)为response设置状态码
setHeader(String name, String value)设置请求头以及其name和value
这两个方法互相排除,只能选其中一个使用。它们输出的内容会被当作相应消息的正文。当Servlet的service方法结束后,会自动调用close方法
getWriter()返回一个PrintWriter对象
getOutputStream()返回一个ServletOutputStream对象
response类常见应用:实现重定向(302+locatinon)、实现定时跳转(Refresh)、向浏览器输出图片(conten-Type)、文件下载。