• Tomcat学习笔记(二)—— 一个简单的Servlet容器


    1、简介:Servlet编程是通过javax.Servlet和javax.servlet.http这两个包的类和接口实现的,其中javax.servlet.Servlet接口至关重要,所有的Servlet必须实现该接口或者继承实现了该接口的类。
     
    2、Servlet接口有5个方法:
    public void init(ServletConfig config) throws ServletException;
    public void service(ServletRequest request, ServletResponse response) throes ServletException, IOException;
    public void destroy();
    public ServletConfig getServletConfig();
    public String getServletInfo();
     
    3、Servlet声明周期方法:init、service、destroy
    (1)init:在Servlet类已经初始化之后,init方法会被servlet容器调用。init方法只被调用一次,表示servlet已经被加载进服务中了。init方法必须在servlet可以成功接收任何请求之前成功运行完毕。servlet程序员可以通过覆盖这个方法来写仅仅需要运行一次的初始化代码,例如架子啊数据库驱动,值初始化等。在其他情况下,该方法是空的。
    (2)Servlet,servlet容器给servlet容器调用service方法,该方法接收一个ServletRequest参数和一个ServletResponse参数,Servlet Request对象用于向servlet中传递客户端的请求参数,ServletResponse对象则负责封装Servlet响应。在servlet生命周期中,service()方法会被调用多次。
    (3)Destroy,用于从服务器中移除一个servlet实例,通常使用在servlet容器正在关闭或者servlet容器需要一些空闲内存时,仅仅在所有servlet容器的service方法已经退出或者超时淘汰的时候,这个方法才被调用。在servlet容器已经调用完destroy方法之后,在同一个servlet里将不会再调用service方法,destroy方法提供了一个机会来清理任何已经被占用的资源,例如内存,文件句柄和线程,并确保任何持久化状态和servlet的内存当前状态是同步的。
     
    4、Servlet容器针对每个servlet的HTTP请求的工作过程
    (1)第一次调用servlet的时候,加载该servlet类并调用servlet的init方法(仅仅一次)
    (2)对每次请求,构造一个javax.servlet.ServletRequest实例和一个javax.servletServletResponse实例。
    (3)调用servlet的service方法,同时传递ServletRequest和ServletResponse对象。
    (4)当servlet类被关闭时,调用servlet的destroy方法并卸载srvlet类。
  • 相关阅读:
    CentOS下Docker安装ping命令
    CentenOS7 安装docker
    C++ preprocessor "/lib/cpp" fails sanity
    安装M4报错Please port gnulib freadahead.c to your platform!
    python的范式.linalg.norm,numpy tolist()的用法
    Unable to correct problems, you have held broken packages.
    tar解压时候出现tar: invalid option
    Ubuntu换源
    apt更新显示以下错误消息Err:1 http://ports.ubuntu.com xenial InRelease Temporary failure resolving ‘ports.ubunt
    Ubuntu软件操作的相关命令
  • 原文地址:https://www.cnblogs.com/bjh1117/p/7150538.html
Copyright © 2020-2023  润新知