Servlet基础

142 阅读2分钟

生命周期

    1. 在正常情况下,Servlet只会初始化一次,而处理服务会调用多次,销毁也只会调用一次;但是如果一个Servlet长时间不使用的话,也会被容器自动销毁,而如果需要再次使用时会重新进行初始化的操作,即在特殊情况下初始化可能会进行多次,销毁也可能进行多次。
    1. 在servlet实例创建之后,在servlet能为客户请求提供服务之前,容器会在servlet实例上调用init()方法。如果你有初始化代码,就应该覆盖servlet类的init()方法,否则会调用GenericServlet的init()方法。而对应每个客户请求(无论是谁,无论是不是同一个人,只针对请求),容器都会创建一对新的请求和响应对象,创建一个新的线程/栈。任何servlet类都不会有多个实例,除非一种特殊情况(SingleThreadModel)。
    1. servlet生命周期的4个周期总结如下:
      a. 实例化以及加载servlet,new的过程 b. 初始化init(ServletConfig)。 c. 处理请求,调用servlet的service,doget,dopost方法将Request和Response,作为参数传递。 d. 退出服务,调用destory方法释放资源。
  • servlet是给每个请求独立创建,是多实例的,init(), 以及销毁destory()方法都只执行一次。service()方法是核心,有doGet()和doPost()方法。入参ServletRequest,响应 ServletResopnse.

运行工作原理详解

工作原理

image.png

工作流程:

1. Web Client 向Servlet容器(Tomcat)发出Http请求
2. Servlet容器接收Web Client的请求
3. Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
4. Servlet容器创建一个HttpResponse对象
5. Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
6. HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
7. HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
8. Servlet容器把HttpServlet的响应结果传给Web Client
  • HttpServlet 实现了Servlet接口。 当1个请求过来时容器识别出是Servlet,则创建HttpServletRequest 和 HttpServletResponse,根据service()方法,根据请求的类型找到doGet()或者doPost()方法,进行处理。

入门详解