从客户发送http请求到服务器返回http之间发生了什么
由于我知识有限,可能会有模糊或者错误的地方,欢迎讨论与指正.
1.浏览器发出http请求
当用户访问一个url时,浏览器便会开始生成一个http请求.
首先获取http请求中所需要的参数,如url,cookie,User-Agent等,然后请求操作系统发出http请求.
操作系统接收到请求之后,接下来就是熟悉的OSI模型走一遍,生成最终在物理层传输的流,通过访问DNS服务器传递给请求的目标ip.
2.服务器接收到http请求
当服务器接收到http请求之后,OSI模型再走一遍生成http报文传递给web容器.我们这里以tomcat,spring为例.
首先来说一下tomcat接收到请求之后的行为:
对于tomcat来说,只有servlet的概念,当tomcat接收到请求之后会根据其server.xml这个配置文件去匹配http请求的url对应的host(项目),如果匹配到则会匹配这个host中的servlet,查找处理该url的servlet,找到之后便会执行对应的doGet或者doPost等等.
我们在部署一个web项目的时候,都会去配置web.xml,servlet就需要在这个文件中配置.我们使用spring的话,我们都会把DispatcherServlet这个类配置为servlet,而这个类的作用就是用于接收请求,并将请求分发给对应的的controller.
接下来是具体的接收请求过程:
①当tomcat收到http请求之后,会根据请求内容生成HttpServletRequest对象和HttpServletResponse对象,然后根据server.xml中的配置,找到对应的host下对应url的servlet并将生成的两个对象传递过去,这个时候如果是有效的请求的话,则会匹配到DispatcherServlet,以上tomcat的传递请求任务就完成了.
②DispatcherServlet会根据具体的请求去匹配context中的controller(具体是从handlerMapping中查找对应的handler,然后对应的HanlderAdaptor执行hanler方法),最后返回一个controller会结果给DispatcherServlet.
③DispatcherServlet收到controller返回的结果之后会处理异常,渲染视图资源等,然后通过HttpServletResponse响应用户的请求,即向用户反馈http请求处理的结果以及相应资源.
- WINSocket编程 发生HTTP GET请求,并接收服务器返回
- Android--使用Http向服务器发送请求并取得返回结果,下载图片
- Android--使用Http向服务器发送请求并取得返回结果,下载图片
- URL和HttpURLConnection的使用(向服务器发送请求,然后返回struts版)
- WinHttp方法通过HTTP协议向服务器发送请求,返回结果
- 利用httpWebrequest 向服务器发送请求,并返回结果.
- 使用HttpURLConnection向服务器发送get请求
- 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)
- 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有
- Web端为什么不会发送http请求给服务器的原因
- android之Apache Http初使用——向服务器发送请求
- 在Java中使用HttpURLConnection发送http客户端请求、服务器端返回信息、接受服务器端的信息
- 当浏览器从 web 服务器请求服务时,可能会发生错误。从而有可能会返回下面的一系列状态 错误消息汇总
- echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端
- 【转】http协议通讯时,在客户端发送请求后,服务器端返回的状态码解释。
- 使用HttpURLConnection向服务器发送post请求
- 通过HttpWebRequest分别向服务器发送GET或POST请求
- Android使用HttpUrlConnection请求服务器发送数据详解
- android通过httpPost向服务器发送请求 .
- [Erlang 学习笔记] 通过 erlang 向服务器发送 http post 请求