最近被学妹问了这个问题,所以就记录一下,毕竟我也工作不久,算是对自己的平时一些问题的记录吧,下面这个图都是从其他网站上扒下来的,非常形象的形容了整个过程:
servlet 三个作用:1、获取参数;2、根据请求作出重定向;3、完成部分业务的需求
从用户输入url地址起始,就会通过上下文资源路径找到对应server.xml文件进行解析,java文件解析里面都是有配置的,就如同php如果要在游览器上显示也要做一番解析,从而调用servlet的构造器,进行初始化,以及service请求,关闭servlet会自动调用destroy方法!(以上就是我自己的一点看法)
1. init()方法
在Servlet的生命周期中,仅执行一次init()方法,它是在服务器装入Servlet时执行的,可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init();
2. service()方法
它是Servlet的核心,每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
3. destroy()方法
仅执行一次,在服务器端停止且卸载Servlet时执行该方法,有点类似于C++的delete方法。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。