概念:传输协议,定义了客户端和服务器端通信时发送数据的格式。
请求方式
GET:
(1)请求参数在请求行钟,url后。
(2)请求的url长度有限制。
(3)不安全
POST:
(1)请求参数在请求体中。
(2)请求的url长度没有限制。
(3)相对安全
请求消息数据格式
客户端浏览器告诉服务器的信息。
1.请求行
2.请求头
HOST:请求的主机
User-Agent:浏览器告诉服务器,访问时所用的浏览器版本信息,解决兼容性问题。
Referer:告诉服务器当前请求是从哪里来的,防止盗取连接和统计信息。
3.请求空行:空行,用于分割请求头和请求体。
4.请求体:封装POST请求消息的请求体(请求参数)。
Request对象
1.tomcat服务器会根据请求Url中的资源路径,创建对应的ServletDemo1对象。
2.tomcat服务器,会创建request和response对象,request对象中封装请求消息数据。
3.tomcat将request和response两个对象传递给service方法,并且调用service方法。
4.程序员可以通过request对象获取请求消息数据,通过response对象设置响应消息数据。
5.服务器在给浏览器做出响应之前,会从response对象中拿程序员设置的响应的响应消息数据。
原理:request对象和response对象是由服务器创建的。我们来使用而已。request对象是来获取请求消息,response对象用来设置响应消息。
request对象继承体系结构
ServletRequest--接口
|继承
HttpServletRequest--接口
|实现
org.apache.catalina.connector.RequestFacade
request功能:
1.获取请求消息
(1)获取请求行数据(GET /day14/demo1?name=zhangsan HTTP/1.1)
方法:
1.获取请求方式:GET String getMethod()
2.获取虚拟目录:/day14 String getContextPath() 重点
3.获取Servlet路径:/demo1 String getServletPath()
4.获取get方式请求参数:name=zhangsan String getQueryString()
5.获取请求URI:/day14/demo1 String getRequestURI() 返回URL用:StringBuffer getRequestURL() http://localhost/day14/demo1 重点
6.获取协议及版本:HTTP/1.1 String getProtocol()
7.获取客户机的IP地址: String getRemotoAddr()
package cn.itcast.web.request;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 演示Request对象获取请求行数据
*/
@WebServlet("/requestDemo1")
public class RequestDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
1. 获取请求方式 :GET
* String getMethod()
2. (*)获取虚拟目录:/day14
* String getContextPath()
3. 获取Servlet路径: /requestDemo1
* String getServletPath()
4. 获取get方式请求参数:name=zhangsan
* String getQueryString()
5. (*)获取请求URI:/day14/demo1
* String getRequestURI(): /day14/requestDemo1
* StringBuffer getRequestURL() :http://localhost/day14/requestDemo1
6. 获取协议及版本:HTTP/1.1
* String getProtocol()