深入分析javaweb技術內幕5---Jetty、Spring、Spring MVC

Jetty的工作原理解析

1.Jetty的基本架構


2.Jetty也是一個Servlet引擎,也可以基於AJP(定向包協議)工作,一般基於AJP

3.Jetty的基本的數據模型是Handler,所有被拓展的組件都可以被作爲一個Handler添加到Server中,Jetty將幫你管理這些Handler

4.Container是管理Mbean(可管理的java資源)的容器。Jetty的Server的擴展主要是實現了一個個的Handler,並將Handler加到Server中,在Server中提供了調用這些Handler的訪問規則

5.Handler兩種類型

  • HandlerWrapper:將一個Handler委託給另一個類去執行,如我們要將一個Handler加到Jetty中,那麼久必須將這個Handler委託給Server去調用
  • HandlerCollection:將多個Handler組裝在一起,構成一個Handler鏈,方便我們做擴展
6.基於AJP工作

  •  通常一個Web服務站點的後端服務器不是講Java的應用服務直接暴露給服務訪問者,而是在應用服務者(如Jboss)的前面再加一個Web服務器(如Apache和Nginx),原因是方便做日誌分析、負載均衡、權限控制、訪問惡意請求以及靜態資源預加載等
  •  在這種架構下Servlet引擎就不需要解析和封裝返回的HTTP,因爲HTTP的解析工作已經在Apache或Nginx服務器上完成了,JBoss只要基於更簡單的AJP工作就行了,這樣可以加快請求的響應速度。相對比HTTP唯一的不同就是在讀取到Socket數據包時如何來轉換這個數據包,按照HTTP的包格式來解析就是HttpParser,按照AJP來解析就是Ajp13Parserer

7.與Tomcat的比較

  • 架構:Jetty是面向Handler的架構,就想Spring是面向Bean的架構,iBatis是面向Statement的一樣,而Tomcat是以多級容器構建的
  • 拓展性:Jetty更易被拓展
  • 性能:Tomcat在處理少數非常繁忙的連接上更有優勢,也就是說鏈接的生命週期如果短,Tomcat的總體性能更高;而Jetty恰恰相反,Jetty可以同時處理大量連接而且可以長時間保持這些連接,如一些web連天應用

Spring框架的設計理念與設計模式分析
1.Spring框架的總體架構圖
2.Spring解決了一個非常關鍵的問題,它可以讓你把對象之間的依賴關係轉而用配置文件管理,也就是它的依賴注入機制。而這個注入關係在一個叫Ioc的容器中管理
3.核心組件的協同工作
  • Context給數據提供生存環境,發現每個Bean之間的關係,爲他們建立這種關係並且維護好這種關係,所以Context就是一個Bean關係的集合,這個關係集合就是Ioc容器。
  • Core就是發現、建立和維護每個Bean之間的關係所需要的一系列工具,定義了資源的訪問方式
4.ApplicationContext必須完成的工作
  • 標識一個應用環境
  • 利用BeanFactory創建Bean對象
  • 保存對象關係表
  • 能夠捕獲各種事件
5.Spring的AOP特性
  • AOP基於動態代理實現的
  • Spring的AOP實現遵守了AOP聯盟的約定,同事Spring又擴展了它,增加了Pointcut、Advisor等一些接口使其更加靈活
6.Spring用到的設計模式
  • 代理模式:給某一個對象創建一個代理對象,由這個代理對象控制對源對象的引用,而創建這個代理對象後可以在調用原對象時增加一些額外的操作
  • 策略模式:顧名思義就是做某事的策略,這在變成上通常就是指完成某個操作可能有多種方法,這些方法各有千秋,可能有不同的適合場合,然而這個這些操作方法都有可能被用到,把各個操作方法都當做一個實現策略,使用者可根據需要選擇適合的策略

Spring MVC
1.市場上主流MVC框架有Struts和Spring MVC,Struts1.x、spring mvc和servlet只有一個實例,Struts2.x每次訪問都會有一個實例,Spring mvc是面向方法級,Struts是面向對象
Spring mvc實例:http://blog.csdn.net/zzhao114/article/details/54709629
2.Spring MVC的Control主要由HandlerMapping和HandlerAdapters兩個組件提供
3.使用Modle而不用request,雖然model最終也是合併到request,但是爲了低耦合的設計
4.使用的設計模式
  • 模板模式:核心是,大的邏輯已經定義,你要做的就是實現一些具體的步驟,不同的人實現這些具體步驟的方法也會有所不同,從而模板的行爲也會表現出具體的區別。如HandlerMapping的設計
5.Spring MVC和Struts區別 http://blog.csdn.net/zzhao114/article/details/54985448

深入分析ibatis框架
1.iBatis主要完成
  • 根據JDBC規範建立與數據庫連接
  • 通過反射打通Java對象與數據庫參數交互之間相互轉化的關係
2.設計模式:
  • 簡單工廠模式:根據客戶指定的一些屬性就可以通過調用工廠類來生產產品。如com.iBatis.sqlmap.engine.type.TypeHandlerFactory類,使用簡單工廠創建不用的TypeHandler對象
  • 工廠模式:簡單工廠模式中通過指定特定產品屬性來生產不同的具體的產品,但是有時我們並不知道要生產的產品有哪些特定的產品屬性,但是可能知道哪些工廠生產的產品具有我們需要的產品屬性,也就是根據不同的工廠來決定不同的產品,與簡單工廠類似,只是增加了一個抽象工廠角色。如iBatis中的資源加載,對應的類時DataSourceFactory
3,.Hibernate和Mybatis區別 http://blog.csdn.net/zzhao114/article/details/54985455

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章