首页 » Java » Servlet工作原理解析(二)

Servlet工作原理解析(二)

原文 http://blog.csdn.net/wangxiaowei333/article/details/79221369

2018-02-02 02:00:45阅读(589)

 上一篇文章简单介绍了Servlet容器的启动、初始化的过程,(链接在这里Servlet工作原理解析(一)),接下来介绍Servlet的创建以及实例化。

一:创建Servlet对象

 如果Servlet的load-on-startup配置项大于0,那么在Context容器启动时就会被实例化。

 前面提到的在解析配置文件时会读取默认的globalWebXml,在conf下的web.xml文件中定义了一些默认的配置项,其中定义了两个Servlet

分别是org.apache.catalina.servlets.DefaultServlet和org.apache.jsper.servlet.JspServelt,它们的load-on-startup分别是1和3,也就是

当tomcat启动时这两个servlet就会被启动。

 创建Servlet实例的方式是从Wrapper.loadServlet开始的,loadServlet方法要完成的就是获取servletClass,然后把它交给Instance

Manager去创建一个基于servletClass.class的对象。如果这个Servlet配置了jsp-file,那么这个servletClass就是在conf/web.xml中定义的

org.apache.jasper.servlet.JspServlet。

二:初始化Servlet

 初始化Servlet在StandardWrapper的initServlet方法中,这个方法很简单,就是调用Servlet的init()方法,同时把包装了Standard

Wrapper对象的StandardWrapperFacade作为ServletConfig传给Servlet(这里为什么不直接把StandardWrapper传给servlet,其实是

门面设计模式,避免把不必要的数据过分暴露给目标,这个后面会介绍到)。

 如果该Servlet关联的是一个JSP文件,那么前面初始化的就是JspServlet,接下来会模拟一次简单请求,请求调用这个JSP文件,以便编

译这个JSP文件为类,并初始化这个类。这样Servlet对象的初始化就完成了,事实上Servlet从背web.xml解析到初始化过程非常复杂,中间

有很多过程,包括各种容器发生的状态变化的引起的监听事件的触发、各种访问权限及异常的处理等。

三:Servlet体系结构  我们知道 Java Web 应用是基于 Servlet 规范运转的,那么 Servlet 本身又是如何运转的呢?为何要设计这样的体系结构。

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹