深入浅出web容器-tomcat原始码分析

深入浅出web容器-tomcat原始码分析

ID:36270163

大小:4.39 MB

页数:52页

时间:2019-05-07

深入浅出web容器-tomcat原始码分析_第1页
深入浅出web容器-tomcat原始码分析_第2页
深入浅出web容器-tomcat原始码分析_第3页
深入浅出web容器-tomcat原始码分析_第4页
深入浅出web容器-tomcat原始码分析_第5页
资源描述:

《深入浅出web容器-tomcat原始码分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、深入淺出Web容器Tomcat原始碼分析林信良資深技術顧問http://openhome.cccaterpillar@openhome.cc主題Web容器與Servlet從HTTP請求到service()在service()的前後從JSP到Servlet自訂標籤處理Web容器與ServletWeb容器與Servlet容器(Container)…裝水的嗎?別鬧了…容器是個Java應用程式,介於Servlet與Web伺服器之間,我管很多事,你不用認識Web伺服器,你只要認得我!Web容器與Servlet管很多事?哪

2、些事啊?你沒想過HTTP那些麻煩的東西是怎麼變成Java物件的嗎?你以為Servlet中的Request與Response是怎麼來的?Web容器與Servlet看起來好像很複雜?要了解我的內在確實不容易,那…先從簡單的開始好了…知道一個Servlet是實作Servlet介面嗎?…..來個簡化版的…if(servlets.get(servletName)==null){servlet=(Servlet)myClass.newInstance();servlets.put(servletName,servlet);

3、servlet.init(newConfig(myClass));}else{servlet=servlets.get(servletName);}servlet.service((ServletRequest)requestFacade,(ServletResponse)responseFacade);publicvoiddestroy(){for(Servletservlet:servlets.values()){servlet.destroy();}}至少你要知道init()、service()與dest

4、roy()…RequestFacaderequestFacade=newRequestFacade(request);ResponseFacaderesponseFacade=newResponseFacade(response);Web容器與Servlet你管的就是這些?當然更多!不只ServletRequest、ServletResponse、ServletConfig、Servlet這些…對了!這個範例改寫自這邊…http://onjava.com/pub/a/onjava/2003/05/14/java

5、_webserver.html從HTTP請求到service()我實際上很強壯的啦….XD從HTTP請求到service()當請求來到時是WorkerThread模式publicvoidrun(){while(running){//AllocateanewworkerthreadMasterSlaveWorkerThreadworkerThread=createWorkerThread();//Acceptthenextincomingconnectionfromtheserversocket...Socket

6、socket=acceptSocket();workerThread.assign(socket);}..}沒原始碼沒真相...XD採用ThreadPool...XD從HTTP請求到service()接下來快轉一下…來到了Http11Processor…我應該說過我負責建立Request與Response物件吧…這個類別剖析HTTP並設定Request、Response從HTTP請求到service()在Http11Processor的process()中,呼叫adapter.service()adapter.

7、service(request,response);再來的話這邊的request、response會被org.apache.catalina.connector套件中的Request、Response包裹起來...WHY?從HTTP請求到service()packageorg.apache.catalina.connector;publicclassRequestimplementsHttpServletRequest{…}packageorg.apache.catalina.connector;publicc

8、lassResponseimplementsHttpServletResponse{…}從HTTP請求到service()再快轉一下…Request與Response送到容器ContainerBase,最後來到StandardWrapper…你要注意一下loadServlet()方法…回憶…Servlet第一次被請求時會被載入…建立ServletConfig…執行init()…呼叫se

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

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

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