首先要了解一下,当在页面向服务器发送http请求时,服务器是如何处理的?
1.服务器收到http请求后会进行分析,判断出是那台主机发送的请求
根据host请求头来判断是那台主机,如果没有host请求头则访问虚拟主机
2.分析当前访问的是主机中的哪个Web应用
3.分析当前访问的是web应用中的哪个资源
4.查找web.xml文件,查看有没有相应的虚拟路径,如果没有则报错;如果有,则用这个虚拟路径找到相应的Servlet,最终由该Servlet去做出响应。
5.服务器作出响应后,如果该请求是第一次访问该Servlet时,就创建一个Servlet对象。
创建Servlet后首先会调用init()方法进行初始化。
注意:此时涉及到了Servlet的生命周期:
1.Servlet在第一次被访问时服务器创建出Servlet对象,Servlet对象创建成功后立即调用init()方法进行初始化,
创建出的Servlet对象会一直驻留在内存中,为后续对该Servlet的访问提供服务。
2.每次对Servlet的访问都会执行Servlet的service()方法,在service()方法中写入response响应信息,进行响应处理
注意:service()方法的执行需要两个参数request和response,在service()方法执行之前(即Servlet对象调用之前),服务器会创建request和response对象,request对象存放Http请求的请求头信息和实体内容,response对象为空。
注意:request和response对象都是由服务器创建的,与浏览器无关。浏览器和服务器之间只是简单的发送Http请求和Http响应。
3.当web应用移除容器或者服务器被关闭时,Servlet对象会被销毁。在Servlet对象销毁之前,会调用Servlet的destory()方法做一些善后的处理。(Servlet的生命周期到此结束)
补充:在调用在执行Servlet的service()方法时,将响应信息写入response对象后,服务器会从response对象中获取写入的数据,组织成Http响应消息打给浏览器,浏览器获得Http响应后进行解析,最终在页面显示我们想要的内容。