Servlet底层原理

Servlet底层原理

ID:69035505

大小:381.50 KB

页数:28页

时间:2021-10-25

Servlet底层原理_第1页
Servlet底层原理_第2页
Servlet底层原理_第3页
Servlet底层原理_第4页
Servlet底层原理_第5页
Servlet底层原理_第6页
Servlet底层原理_第7页
Servlet底层原理_第8页
Servlet底层原理_第9页
Servlet底层原理_第10页
资源描述:

《Servlet底层原理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、..Servlet底层原理从Servlet容器说起要介绍Servlet必须要先把Servlet容器说清楚,Servlet与Servlet容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。虽然它们是彼此依存的,但是又相互独立开展,这一切都是为了适应工业化生产的结果。从技术角度来说是为了解耦,通过标准化接口来相互协作。既然接口是连接Servlet与Servlet容器的关键,那我们就从它们的接口说起。前面说了Servlet容器作为一个独立开展的标准化产品,目前它的种类很多,但是它们都有自己的市场定位,很难说谁优谁劣,各有特点。例如

2、现在比拟流行的Jetty,在定制化和移动领域有不错的开展,我们这里还是以大家最为熟悉Tomcat为例来介绍Servlet容器如何管理Servlet。Tomcat本身也很复杂,我们只从Servlet与Servlet容器的接口局部开场介绍,关于Tomcat的详细介绍可以参考我的另外一篇文章?Tomcat系统架构与模式设计分析?。Tomcat的容器等级中,Context容器是直接收理Servlet在容器中的包装类Wrapper,所以Context容器如何运行将直接影响Servlet的工作方式。..word.zl...图1.Tomcat容器模型从上图可以

3、看出Tomcat的容器分为四个等级,真正管理Servlet的容器是Context容器,一个Context对应一个Web工程,在Tomcat的配置文件中可以很容易发现这一点,如下:清单1Context配置参数下面详细介绍一下Tomcat解析Context容器的过程,包括如何构建Servlet的过程。Servlet容器的启动过程Tomcat7也开场支持嵌入式功能,增加了一个启动类org.apache

4、.catalina.startup.Tomcat。创立一个实例对象并调用start..word.zl...方法就可以很容易启动Tomcat,我们还可以通过这个对象来增加和修改Tomcat的配置参数,如可以动态增加Context、Servlet等。下面我们就利用这个Tomcat类来管理新增的一个Context容器,我们就选择Tomcat7自带的examplesWeb工程,并看看它是如何加到这个Context容器中的。清单2.给Tomcat增加一个Web工程Tomcattomcat=getTomcatInstance();FileappDir=new

5、File(getBuildDirectory(),"webapps/examples");tomcat.addWebapp(null,"/examples",appDir.getAbsolutePath());tomcat.start();ByteChunkres=getUrl("localhost:"+getPort()+"/examples/servlets/servlet/HelloWorldExample");assertTrue(res.toString().indexOf("

HelloWorld!

")>0);清单1的

6、代码是创立一个Tomcat实例并新增一个Web应用,然后启动Tomcat并调用其中的一个HelloWorldExampleServlet,看有没有正确返回预期的数据。Tomcat的addWebapp方法的代码如下:清单3.Tomcat.addWebapppublicContextaddWebapp(Hosthost,Stringurl,Stringpath){..word.zl...silence(url);Contextctx=newStandardContext();ctx.setPath(url);ctx.setDocBase(path);

7、if(defaultRealm==null){initSimpleAuth();}ctx.setRealm(defaultRealm);ctx.addLifecycleListener(newDefaultWebXmlListener());ContextConfigctxCfg=newContextConfig();ctx.addLifecycleListener(ctxCfg);ctxCfg.setDefaultWebXml("org/apache/catalin/startup/NO_DEFAULT_XML");if(host==null)

8、{getHost().addChild(ctx);}else{host.addChild(ctx);}returnctx;}..word

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

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

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