http协议内容
- 请求端
请求(浏览器-》服务器)
GET /day09/hello HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
- 响应端
响应(服务器-》浏览器)
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 24
Date: Fri, 30 Jan 2015 01:54:57 GMT
- 响应消息
this is hello servlet!!!
Http请求
GET /day09/hello HTTP/1.1 -------------请求行
Host: localhost:8080 -------------请求头(多个key-value对象)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
--------------------一个空行
name=eric&password=123456 ----------------(可选)实体内容
URI>URL 资源定位符
请求头
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 2000 18: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 -------------- 请求发出的时间
提交内容
- 只有POST提交的参数才会放在实体内容中
HttpServletRequest对象
HttpServletRequest对象作用是用于获取请求数据。
核心的API:
请求行:
request.getMethod(); 请求方式
request.getRequetURI() / request.getRequetURL() 请求资源
request.getProtocol() 请求http协议版本
请求头:
request.getHeader("名称") 根据请求头获取请求值
request.getHeaderNames() 获取所有的请求头名称
实体内容:
request.getInputStream() 获取实体内容数据
HttpServletResponse对象
- 响应行
response.setStatus(404); //修改状态码
response.sendError(404); //发送404的状态码+404的错误页面
- 响应头
response.setHeader("name","value"); //name和value必须是同一个键值对的内容
- 实体内容
respponse.getWriter().writer("hello world"); //字符内容
response.getOutPutStream().writer("hello world".getBytes()); //字节内容
- 重定向(请求重定向相当于超链接跳转页面)
response.setStatus(302); //发送一个302状态码
response.setHeader("location","uri/url"); //location的响应头
**请求重定向的简化书写**
response.sendRedirect("uri/url"); //发送一个302状态码+location的响应头
- 定时刷新
response.setHeader("refrech","1"); //间隔一秒定时刷新
response.setHeader("refrech","3;url/uri"); //间隔3秒跳转到指定的页面(uri/url)
- 编码类型(Content-type)
//设置响应实体内容编码
response.setCharacterEncoding("utf-8");
//服务器发送给浏览器的数据类型和内容编码
response.setHeader("content-type", "text/html");
**简化书写**
response.setContentType("text/html;charset=utf-8") ; //和上面代码等价。推荐使用此方法
- 下载
//Content-Disposition(以 下载的方式打开)
response.setHeader("Content-Disposition", "attachment; filename="+file.getName());
//filename="+file.getName()是获取图片的名称并且在下载界面显示