1.读取web.xml文件
(1).浏览器客户端发送请求,服务器找到其url,解析项目下的web.xml文件
(2).在<servlet-mapping>中的<url-pattern>找到匹配的url
(3).通过<servlet-mapping>中的<servlet-name>找到上面的<servlet>中的<servlet-class>
(4).访问对应的类
<servlet>
<!--给servlet起的名字,可以随意命名-->
<servlet-name>MyServlet</servlet-name>
<!--当服务器读取配置文件的时候通过这个路径找到对应的类给浏览器返回响应-->
<servlet-class>ServletLife</servlet-class>
</servlet>
<servlet-mapping>
<!--必须和上面servlet名字相同,使servlet和servlet-mapping相关联-->
<servlet-name>MyServlet</servlet-name>
<!--浏览器客户端传给服务器请求,服务器读取其url,从配置文件中找到相应的url-->
<url-pattern>ServletLife</url-pattern>
</servlet-mapping>
2.调用该类的构造函数
public ServletLife(){
System.out.println("Servlet被创建");
}
3.new该类的对象(init的方法执行)
//当创建一个类的对象的时候会调用init方法
@Override
public void init() throws ServletException {
System.out.println("init方法被使用了");
}
4.根据请求方式调用do××方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet方法被执行");
}
5.代码执行结束或关闭服务器,对象被销毁执行destroy方法,生命周期结束
//当一个对象声明周期结束之前会执行destroy
@Override
public void destroy() {
System.out.println("destroy方法被使用");
}
注意:当执行完一次do××方法后,再对服务器发出相同的请求时,构造方法和init方法不会被第二次执行,可见servlet采用的单例设计模式-懒汉式,当servlet被访问时,之后的所有请求都要等本次执行结束以后再访问