上一篇文章介绍了以实现servlet接口方式开发一个servlet。该种方式现在已经不使用,但是对我们理解servlet生命周期很有帮助。先贴一段代码:
&&&&&&注意:其中的toLocaleString()方法已经过时。改为:DateFormat.getDateTimeInstance().format(new Date())
同时要引入import java.text.DateFormat;
还要注意这个类应该是public的
在service方法中编写业务逻辑代码。上一篇文章已经提到要在相应的web应用的web.xml文件进行servlet配置。那么,如何配置呢?
在web.xml的web-app节点内添加代码:
此时在浏览器地址栏中输入:http://localhost:8080/hspWeb1/MyFirstServlet
网页上就会显示出相应的字符串和当前的时间。
tomcat根据web.xml中的servlet映射找到url-pattern对应的servlet-name后,再去servlet节点中找到匹配一致的servlet-name,然后去执行对应的servlet-class。
我们来简述一下servlet的生命周期(工作时序):
详细:
(1)我们输入网址,例如:http://localhost:8080/hspWeb1/MyFirstServlet
(2)浏览器解析主机名:首先查看本地C:\Windows\System32\drivers\etc的hosts文件,如果在hosts文件乜有查询到,到DNS查询
(3)查到后,尝试连接web服务器,如果没有查到,报错
(4)连接好后,浏览器向web服务器发出http请求(里面有很多参数,例如请求方式是GET还是POST,请求什么资源等等)
(5)web服务器收到请求后依次解析主机,解析web应用,解析资源名
(6)解析完毕后去相应的web站点的web.xml查询MyFirstServlet在哪个包下
(7)查到后,使用反射机制,常见实例调用init方法将该实例装载到内存中。
【接下来就是servlet的生命周期过程】
(1)当servlet第一次被调用的时候,会触发init()方法,该方法会把servlet的实例加载到内存,该方法只会被调用一次。
(2)web服务器把接收到的http请求封装成Request对象,作为service的参数传入,调用servlet的service()方法
(3)第二次及以后访问该servlet就直接调用service()方法,不会再去调用init()方法
(4)当tomcat服务器将该web应用reload(在localhost:8080页面中点击manage)或者关闭都会去调用destroy()方法