天天看點

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

Jetty的工作原了解析

1.Jetty的基本架構

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

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架構的總體架構圖

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

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

繼續閱讀