servlet_工作原理解析.doc

servlet_工作原理解析.doc

ID:18338131

大小:393.00 KB

页数:19页

时间:2018-09-16

servlet_工作原理解析.doc_第1页
servlet_工作原理解析.doc_第2页
servlet_工作原理解析.doc_第3页
servlet_工作原理解析.doc_第4页
servlet_工作原理解析.doc_第5页
资源描述:

《servlet_工作原理解析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Servlet工作原理解析许令波,developerWorks中国网站最佳作者,现就职于淘宝网,是一名Java开发工程师。对大型互联网架构设计颇感兴趣,喜欢钻研开源框架的设计原理。有时间将学到的知识整理成文章,也喜欢记录下工作和生活中的一些思考。个人网站是:HYPERLINK"http://xulingbo.net"http://xulingbo.net。简介: Web技术成为当今主流的互联网Web应用技术之一,而Servlet是JavaWeb技术的核心基础。因而掌握Servlet的工作原理是成为一名合格的JavaWeb技术开发人员的基本要求。本文将带你认识Java

2、Web技术是如何基于Servlet工作,你将知道:以Tomcat为例了解Servlet容器是如何工作的?一个Web工程在Servlet容器中是如何启动的?Servlet容器如何解析你在web.xml中定义的Servlet?用户的请求是如何被分配给指定的Servlet的?Servlet容器如何管理Servlet生命周期?你还将了解到最新的Servlet的API的类层次结构,以及Servlet中一些难点问题的分析。Moretags: 配置从Servlet容器说起要介绍Servlet必须要先把Servlet容器说清楚,Servlet与Servlet容器的关系有点像枪和子弹

3、的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。虽然它们是彼此依存的,但是又相互独立发展,这一切都是为了适应工业化生产的结果。从技术角度来说是为了解耦,通过标准化接口来相互协作。既然接口是连接Servlet与Servlet容器的关键,那我们就从它们的接口说起。前面说了Servlet容器作为一个独立发展的标准化产品,目前它的种类很多,但是它们都有自己的市场定位,很难说谁优谁劣,各有特点。例如现在比较流行的Jetty,在定制化和移动领域有不错的发展,我们这里还是以大家最为熟悉Tomcat为例来介绍Servlet容器如何管理Servlet。Tomcat本身也很复杂,我们只

4、从Servlet与Servlet容器的接口部分开始介绍,关于Tomcat的详细介绍可以参考我的另外一篇文章《Tomcat系统架构与模式设计分析》。Tomcat的容器等级中,Context容器是直接管理Servlet在容器中的包装类Wrapper,所以Context容器如何运行将直接影响Servlet的工作方式。图1.Tomcat容器模型从上图可以看出Tomcat的容器分为四个等级,真正管理Servlet的容器是Context容器,一个Context对应一个Web工程,在Tomcat的配置文件中可以很容易发现这一点,如下:清单1Context配置参数

5、ath="/projectOne"docBase="D:projectsprojectOne"reloadable="true"/>下面详细介绍一下Tomcat解析Context容器的过程,包括如何构建Servlet的过程。Servlet容器的启动过程Tomcat7也开始支持嵌入式功能,增加了一个启动类org.apache.catalina.startup.Tomcat。创建一个实例对象并调用start方法就可以很容易启动Tomcat,我们还可以通过这个对象来增加和修改Tomcat的配置参数,如可以动态增加Context、Servlet等。下面我们就利用这个To

6、mcat类来管理新增的一个Context容器,我们就选择Tomcat7自带的examplesWeb工程,并看看它是如何加到这个Context容器中的。清单2.给Tomcat增加一个Web工程Tomcattomcat=getTomcatInstance();FileappDir=newFile(getBuildDirectory(),"webapps/examples");tomcat.addWebapp(null,"/examples",appDir.getAbsolutePath());tomcat.start();ByteChunkres=getUrl("htt

7、p://localhost:"+getPort()+"/examples/servlets/servlet/HelloWorldExample");assertTrue(res.toString().indexOf("

HelloWorld!

")>0);清单1的代码是创建一个Tomcat实例并新增一个Web应用,然后启动Tomcat并调用其中的一个HelloWorldExampleServlet,看有没有正确返回预期的数据。Tomcat的addWebapp方法的代码如下:清单3.Tomcat.addWebapppublicContextaddWe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。