容器完整处理一个http请求的过程
初学java web的朋友们应该都知道tomcat容器,但是tomcat是如何完成一次http请求的过程,这里做一个记录。
- 当用户在客户端点击一个链接,该链接的URL指向一个servlet,经过网络转发到应用所在的web服务器的,此时web服务器不是直接把申请发给servlet本身,而是发送给部署该servlet的容器;
- 容器收到该请求后,判定该请求为servlet请求后,便会创建一个HttpServletRequest和一个HttpServletResponce对象;
- 接下来容器会根据URL,从部署描述文件(web.xml)中找到对应的servlet的,并为这一个请求创建或分配一个线程,并把HttpServletRequest和HttpServletResponce对象传递给该线程;
- 容器根据http请求的不同类型(get或者post)通过调用servicce方法从而调用doGet()和doPost()方法;
- 假设调用的doPost方法,doPost()方法处理完对应的业务逻辑后,把结果填入响应对象。
- 容器结束servlet线程,并将respose对象转换为http响应返回给客户端,而后删除HttpServletRequest和HttpServletResponce对象。