黔西南北京网站建设,谷歌关键词查询工具,做网站的项目职责怎么写,物联网是什么意思?总结#xff1a;服务器批量处理http请求的大致流程 一客户端发起请求#xff1a;可以多个请求同时发送二Web服务器解析请求#xff08;如#xff1a;Nginx#xff09;#xff1a;可以多个请求同时解析三Servlet容器接收请求#xff08;如#xff1a;tomcat#xff09;… 总结服务器批量处理http请求的大致流程 一·客户端发起请求可以多个请求同时发送二·Web服务器解析请求如Nginx可以多个请求同时解析三·Servlet容器接收请求如tomcat可以多个请求同时处理四·Servlet初始化如果需要五·调用Servlet的service()方法六·选择适当的HTTP方法处理七·Servlet处理请求八·生成响应九·Servlet容器发送响应十一·Servlet销毁如果需要十二·线程返回到线程池如果使用 一·客户端发起请求可以多个请求同时发送
1.用户通过浏览器访问一个URL该URL与某个Servlet相关联。 2.浏览器构造一个HTTP请求请求中包含特定的URL、头部信息、参数等并将它发送到Web服务器。
二·Web服务器解析请求如Nginx可以多个请求同时解析
1.Web服务器主要作用请求分发、反向代理、负载均衡器、HTTP缓存服务器支持静态文件服务一般不会处理动态请求。
动态请求比如前端调用某API接口需要后端服务器运算处理完再响应给前端报文
静态请求比如前端调用某API接口后端直接将某个资源读取返回不用任何运算。注意web服务器、servlet容器两者一般都可以称为服务器如何区分就看具体实际情况了2.每个服务器都会存在一个监听指定端口的死循环socket线程除非服务器关机这个线程才会停止循环 3.该socket线程每接收到一个http请求就会从服务器的线程池里面获取一个空闲线程来处理该请求 4.这个新线程接着就会解析请求中的URL路径和参数然后根据URL映射规则决定返回哪个静态资源或者将该http请求继续转发给哪个Servlet容器如Tomcat、Jetty等来处理。
三·Servlet容器接收请求如tomcat可以多个请求同时处理
1.Servlet容器主要作用动态请求的运算处理 2.每个服务器都会存在一个监听指定端口的死循环socket线程除非服务器关机这个线程才会停止循环 3.该socket线程每接收到一个http请求就会从服务器的线程池里面获取一个空闲线程来处理该请求 4.这个新线程接着就会解析请求中的URL路径和参数然后根据URL映射规则找到对应的Servlet对象并根据请求信息创建HttpServletRequest对象和HttpServletResponse对象再传递到Servlet对象的service方法里面然后继续执行service方法
注意
1如果多个URL映射的是同一个servlet程序处理那么servlet容器会给每个请求分配一个线程进行单独处理
2servlet容器传递给各个线程的servlet对象都是同一个
3servlet容器给每个线程中的同一个servlet对象之service方法传递的两个参数HttpServletRequest对象和HttpServletResponse对象都是不一样的这两个对象都是根据http请求报文即时生成的。
4这样虽然节省了服务器资源但这也是造成可能存在高并发的核心原因
5因此servlet类中的成员变量要慎重使用如果存在频繁修改的变量就尽量不要设置为成员属性而是设置为方法内的局部变量四·Servlet初始化如果需要
1.如果Servlet实例还没有初始化容器会调用init()方法进行初始化。这个方法在Servlet的生命周期中只会执行一次。
五·调用Servlet的service()方法
1.Servlet容器调用Servlet的service()方法并传递ServletRequest和ServletResponse对象作为参数。
六·选择适当的HTTP方法处理
1.在service()方法内Servlet根据HTTP请求的方法GET、POST等选择调用适当的doGet()、doPost()等方法。
七·Servlet处理请求
1.在doGet()、doPost()等方法中开发者编写具体的业务逻辑来处理请求。这可能涉及到读取参数、执行业务逻辑、访问数据库等。
八·生成响应
1.Servlet生成一个ServletResponse对象其中包含要返回给客户端的数据比如HTML内容。
九·Servlet容器发送响应
1.Servlet容器将ServletResponse对象传递给Web服务器然后服务器通过网络将响应发送回客户端。
十一·Servlet销毁如果需要
1.如果Servlet容器检测到应用程序正在关闭或者Servlet的生命周期已经结束它会调用Servlet的destroy()方法释放资源。
十二·线程返回到线程池如果使用
1.处理请求的线程返回到线程池等待下一个请求。