Tomcat响应流程及Servlet的执行流程
        Java Servlet是通过Java编写的服务端应用程序,Servlet实质上也是一个Java类,只是他和普通的Java类有一些区别,比如其运行在服务端,而且它没有Main方法。

tomcat 从客户端发送请求到接收到响应的流程

(1)客户端发送请求----该请求会首先到达Tomcat内部的web服务器。
(2)Tomcat内部服务器接收到请求之后会将请求转化给Servlet容器。
(3)Servlet容器接收到请求之后会加载Servlet并产生Sevlet实例,产生Servlet实例后会向其传递表示请求的对象(HttpServletRequest)响应的对象(HttpServletResponse),之后Servlet实例通过请求对象得到客户端的请求信息并进行相应的处理。
(4)在Servlet请求处理完成之后有可能会将请求传递给其他的servlet进行处理。
(5)在全部请求都处理完成后通过响应对象返回给客户端浏览器。
文章正文图片

servlet的执行流程
(1)当Servlet被装载并实例化之后,容器会首先调用init()方法对Servlet进行初始化。只有在init()方法调用成功之后,Servlet才处于服务状态,接收客户端的请求并进行处理。在Servlet的整个生命周期中,init()方法只会被调用一次。且初始化的时候,有参的init方法最先被调用。
(2)当Servlet初始化完成之后,就会调用service方法对客户端的请求进行处理。service方法在Servlet的生命周期中会被调用多次,具体次数取决于请求次数。
(3)在容器销毁Servlet之前,会调用destroy方法。destroy方法在Servlet的整个生命周期中也只会被调用一次。
值得注意的一点是若需要重写init方法,则推荐重写无参的init方法,无参的init方法实际上不需要手动调用父类的无参init方法(super.init()), 打开父类的有参init方法实现可以看到该方法显式地调用了无参的init方法
文章正文图片


servlet注册格式(web.xml):
<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>org.devsong.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

servlet-mapping 元素: 映射servlet的外部访问路径,其子元素servlet-name与servlet注册时一致, url-pattern: 对外访问路径。

若发现问题或者您有不同见解,欢迎给我留言!
It's
欢迎访问本站,欢迎留言、分享、点赞。愿您阅读愉快!
*转载请注明出处,严禁非法转载。
https://www.devsong.org
QQ留言 邮箱留言
头像
引用:
取消回复
提交
涂鸦
涂鸦
热门