Servlet工作流程

来源:互联网 发布:苹果电脑访问网络共享 编辑:程序博客网 时间:2024/05/01 20:37

1.Servlet工作流程描述

(1)首先用户在浏览器地址栏输入网址http://localhost:8080/sgrweb/MyFirstServlet时候,浏览器会自己先解析主机名localhost,回去本地的host文件去查询主机有没有配备一个ip地址如果在host文件当中查不到的话浏览器会去dns查询。首先localhost代表的是主机,8080代表的是端口号,sgrweb代表的是web应用名称,最后的MyFirstServlet代表资源名称

(2)查到主机的ip地址之后就会转到web服务器去了。首先浏览器会先向web服务器发送一个试探包(尝试连接),如果web服务器对浏览器有响应的话,浏览器就会发出http请求。web服务器收到浏览器发出的http请求之后它会自己先解析出主机名(因为tomcat管理多个主机),然后解析出web应用。web服务器解析出web应用之后就会知道对应web应用的web.xml文件,因为我们知道每一个web应用都对应一个web.xml文件。最后web服务器解析出资源名称这里就是MyFirstServlet。

(3)完成之后web服务器去查询对应web应用的web.xml文件得知资源(MyFirstServlet)在哪一个包下面。具体web.xml关键代码如下:

<servlet> <servlet-name>MyFirstServlet</servlet-name> <servlet-class>com.sgrweb.MyFirstServlet</servlet-class></servlet> <servlet-mapping>    <servlet-name>MyFirstServlet</servlet-name>    <url-pattern>/MyFirstServlet</url-pattern> </servlet-mapping>

从下往上找。

(4)成功之后就会找到相应的Servlet了。然后web服务器就会使用反射机制,创建实例。调用init()方法将该实例装载到内存,该方法只被调用一次。web服务器把接收到的http请求封装成一个Request对象,作为service函数的参数传递进去。service函数会被调用多次,每访问一次Servlet,它的service函数就会被调用一次

(5)要返回结果给web服务器的话需要获取response对象,该对象有各种信息。web服务器获取到结果之后不是直接返回给浏览器而是先将response的信息拆解出来

形成http响应格式。然后将这个结果返回给浏览器。

(6)浏览器得到结果之后会自己能识别的格式进行解析。

(7)当在某些情况下(主要有三种)web服务器会调用该Servlet的destroy函数,将该Servlet销毁。

注意:

1.当Servlet第一次被调用的时候会触发init函数,该函数会把servlet实例加载到内存。该函数只会被调用一次。

2.然后去调用servlet的service函数

3.当第二次包括第二次以后就直接调用service函数

4.当web应用需要reload或者是关闭tomcat或者关机都会去调用destroy函数。该函数就会去销毁servlet。

下面三种情况会调用destroy函数第一种就是关闭tomcat,第二种就是web应用reload,第三种情况就是关机