Http协议
2018-06-02 本文已影响2人
幻影翔
作用:
- 对浏览器客户端与服务器的数据格式的规范!!
1、http请求
请求行 GET /ListServlet.do HTTP/1.1
请求资源
URL: 统一资源定位符
URI:统一资源标记符
请求行
请求头
空行
实体内容 POST提交的参数会放到实体内容中
使用HttpServletRequest对象: 获取请求数据
2.http响应
响应行
响应头
空行
实体内容(浏览器看到的内容)
使用HttpServletResponse对象: 设置响应数据
请求方式Get VS Post
Get:
a.地址栏会跟上参数,以?开头,多个参数以&分隔
b.提交数据大小有限制,不超过1kB。
c.Get方式不适合提交敏感密码
Post:
a.地址栏不会跟上参数,没哟?,参数跟在请求行的实体内容后中,对个参数以&分隔
b.Post方式提交敏感密码
请求头
请求头响应头
响应头请求对象HttpServletRequest
核心的API:
请求行:
request.getMethod(); 请求方式
request.getRequetURI() / request.getRequetURL() 请求资源
request.getProtocol() 请求http协议版本
请求头:
request.getHeader("名称") 根据请求头获取请求值
request.getHeaderNames() 获取所有的请求头名称
实体内容:
request.getInputStream() 获取实体内容数据
拼接地址( http://localhost:8080/ )
request.getScheme()
+"://"+
request.getServerName()
+":"+
request.getServerPort()
+request.getContextPath()
+"/";
获取请求的参数
核心的API:
request.getParameter("参数名"); 根据参数名获取参数值(注意,只能获取一个值的参数)
request.getParameterValue("参数名“);根据参数名获取参数值(可以获取多个值的参数)
request.getParameterNames(); 获取所有参数名称列表
请求参数编码问题
修改POST方式参数编码:
request.setCharacterEncoding("utf-8"); //只对post方法有效
修改GET方式参数编码:
手动解码:String name = new String(name.getBytes("iso-8859-1"),"utf-8");