Servlet 生命周期,工作原理


什么是Servlet:

    从狭义上看,Servlet是指Servlet接口,而从广义上看,Servlet是指所有实现了Servlet接口的类。所以,我们可以认为,Servlet是运行在服务器端的小程序,作为(MVC中的C),也就是控制器,用于处理及响应客户端的请求。


Servlet类的继承和实现:

    在查看Java Api后,我们发现,我们自己编写的Servlet类,首先会继承与HttpServlet,而HttpServlet又会继承于GenericServlet,最后GenericServlet实现类Servlet接口。

    我们可以看到Servlet接口定义了5个方法,分别是:

        void destory();

	ServletConfig getServletConfig();

	String getServletInfo();

	void init(ServletConfig config);

	void service(ServletRequest request, ServletResponse response);

    Servlet接口规定,所有的Servlet都要实现这些方法。由于我们写的程序是基于Http协议的,所以我们只要继承与HttpServlet类。


Servlet的实例创建方式:

    首先,我们要知道servlet的生命周期不是由程序员决定的,而是由Web容器进行控制的,创建Servlet实例有两种方式:

(1)客户端第一次请求某个Servlet时,系统创建该Servlet的实例(大部分情况都是这种)

(2)Web应用启动,立即创建Servlet实例(load-on-startup Servlet)


Servlet的生命周期:

那么,Servlet的生命周期遵循以下4步

(1)第一次访问Servlet的时候,会创建Servlet实例,此时会调用Servlet的构造器。且,只会调用一次,证明Servlet在Tomcat服务器中是单例的。

注意:多线程并发访问服务器时,只创建一个Servlet对象,多线程共享,但是每一个线程的Request和Response不同

(2)创建完Servlet实例后,Web容器调用Init(ServletConfig config)方法,对Servlet进行初始化

注意:实际上,Init(ServletConfig config)又会调用无参数的init方法,我们如果要想初始化Servlet,只要在Servlet类中,重写无参数的init方法就可以,但一般情况下,我们不会写。

(3)Servlet初始化之后,会一直存在于容器中,用于响应客户端请求。客户端每次发出请求的时候,会调用service方法。

注意:service方法并不会处理请求,而是根据请求的类型去调用doPost或者doGet方法,是一个转向的作用,所以,我们在实际用于中,只需要重写HttpServlet中的doPost或者doGet方法就可以完成请求的处理。

(4)停止服务器或者重新部署Web应用的时候,会销毁Servlet对象,此时,调用destory方法,在整个Servlet生命周期中,只会调用一次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值