一:HTTP协议总结
1. HTTP:超文本传输协议,定义了浏览器与服务器之间数据传输的格式;
2. HTTP协议组成:
1. 请求报文:请求行,请求头,请求体;
1. 请求行:请求报文中的第一行数据,包括**请求方式**,**URL** ,**协议/版本** ;
2. 请求头:以键值对的数据格式,给服务器传输数据。常用的请求头:user-agent,cookie;
3. 请求体:get请求:没有请求体;post请求:请求体传递请求参数;
2. 响应报文:响应行,响应头,响应体;
二:GET和POST请求的区别
GET请求:
请求行直接传递请求参数
将请求参数追加在URL后面,不安全。例如:form.html?username=jack&username=1234
URL长度限制GET请求方式的数据大小,不可以传输数据量较大或者非文本数据
请求体里面没有内容
POST请求
请求参数以请求体形式发送给服务器,数据传输安全
请求数据可以为非文本数据,可以传输数据量较大的数据
只有表单设置为method=”post”才是post请求.其他的都是get请求
常见GET请求:地址栏直接访问、<a href=””>、<img src=””> 等
三:Request请求
1.获取请求行信息
2.获取请求头信息
3.获取请求体信息(*****)
4.Request的域对象
5.请求转发
6.常见的状态码
四:Response响应
1.响应头
location | 指定响应的路径,需要与状态码302配合使用,完成跳转。 | content-Type | 响应正文的类型(MIME类型)例如:text/html;charset=UTF-8 | content-disposition | 通过浏览器以附件形式解析正文,例如:attachment;filename=xx.zip | refresh | |
2.重定向
方法 说明
response.setStatus(302); response.setHeader("location", "/otherServlet");通过设置响应状态码和响应头实现重定向
response.sendRedirect("/otherServlet");重定向的简写方式
3.转发和重定向的区别
区别点 转发 重定向
实现原理服务器内部浏览器执行
请求次数一次两次
浏览器地址栏地址不变化变为第二次请求的地址
能否共享request域能够共享不能共享
作用共享request域对象完成跳转
4.响应体
方法 说明
ServletOutputStream getOutputStream()用于向浏览器输出二进制数据。【字节流--文件下载】
java.io.PrintWriter getWriter()用于向浏览器输出字符数据。【字符流--给浏览器响应数据】
五:解决乱码
1.Request乱码
request.setCharacterEncoding("UTF-8");
2.Response乱码
response.setContentType("text/html;charset=utf-8");
3.ServletContext对象
|
|