一、什么是HTTP协议?
客户端与服务器之间进行通信时,发送的数据,需要遵守的规则,叫HTTP协议。
二、GET请求和POST请求:
请求又分为GET请求和POST请求。
1.GET请求:
1.1 请求行:
(1)请求的方式 GET
(2)请求的资源路径[+?+请求的参数]
(3)请求的协议的版本号 HTTP/1.1
1.2 请求头:
key:value 组成,不同的键值对,表示不同的含义。
2.POST请求
2.1 请求行
(1)请求的方式 POST
(2)请求的资源路径[+?+请求的参数]
(3)请求的协议的版本号 HTTP/1.1
2.2 请求头
key-value 键值对。
空行
2.3 请求体 -->发送给服务器的数据
三、常用请求头的说明
- Accept: 表示客户端可以接受的数据类型。
- Accept-Language:表示客户端可以接收的语言类型。
- User-Agent:表示客户端浏览器的信息。
- Host:表示请求时的服务器的ip和端口号。
四、哪些时GET请求,哪些是POST请求?
1.GET请求有哪些?
- form标签,method=get
- a标签
- link标签引入css
- Script标签引入js文件
- image标签引入图片
- iframe引入html页面
- 浏览器地址栏中输入地址后敲回车
2.POST请求有哪些?
- form标签,method=post
五、响应的HTTP协议格式
1.响应行
- 响应的协议和版本号
- 响应状态码
- 响应状态描述符
2.响应头
- key-value 不同的响应头,有其不同的含义
空行
3.响应体 : 就是回传给客户端的数据
六、常见的响应码说明
- 200 表示请求成功
- 302 表示请求重定向
- 404 表示请求服务器已经收到了,但是你要的数不存在了(请求地址错误)
- 500 表示服务器已经收到请求,但是服务器内部错误
七、HttpServletRequest类
作用:
每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中。然后传递到service方法中(doGet()和doPost())中给我们使用。我们可以通过HttpServletRequest对象,获取到所有请求的信息。
HttpServletRequest类的常用方法:
- getRequestURI() 获取请求的资源路径、
- getRequestURL() 获取请求的统一资源定位符(绝对路径)
- getRemoteHost() 获取客户端的ip地址
- getHeader() 获取请求头
- getParameter() 获取请求的参数
- getParameterValues() 获取请求的参数(多个值的时候使用)
- getMethod() 获取请求的方式(GET或者POST)
- setAttribute(key,value) 设置域数据
- getAttribute(key) 获取域数据
- getRequestDispatcher() 获取请求的转发对象
八、请求转发:
是指服务器收到请求后,从一个资源转到服务器另一个资源的操作叫转发。
特点:
- 浏览器的地址栏没有变化
- 他们是一次请求
- 他们共享Request域中的数据
- 可以转发到WEB-INF目录下
- 不可以访问当前项目以外的资源路径
九、HttpServletResponse类:
作用:
HttpServletResponse类和HttpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用。HttpServletRequest表示请求过来的信息,HttpServletResponse表示所有响应的信息,我们可以通过HttpServletResponse对象来设置返回给客户端的数据。
两个输出流:
- 字节流 getOutputStream() 常用于下载(传递二进制数据)
- 字符流 getWriter() 常用于回传字符串(比较常用)
这两个流之能用其中的一种。
十、请求重定向
请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端一些地址(因为之前的地址可能被废弃),让客户端去新地址访问,叫做请求重定向。
特点:
- 浏览器地址栏会有变化
- 两次请求
- 不共享Request域中的数据
- 不能访问WEB-INF下的资源
- 可以访问工程外的资源
//实现方法一:
response.setStatus(302);
response.setHeader("Location","http://ip:port/");
//实现方法二:(推荐使用)
response.sendRedirect("http://ip:port/");