SSH框架
struts原理:
? ? ? ??MVC簡介: ? Model—模型:負責系統的狀態和業務邏輯javabean ?
????????View—視圖:負責系統的視圖呈現jsp ?
????????Controller—控制: 負責系統的邏輯控制servlet ?
????????核心的原則: ? Jsp頁面不出現java代碼,servlet不出現html的東西。
傳統的MVC架構:
? ? ?? JSP-->VIEW ? Servlet-->Controller ? JavaBean-->Model
傳統的流程圖:
? ? ? ?客戶端的Request請求到達servlet,獲取用戶輸入,set到model中,model負責取值也業務邏輯,然后由view層get數據更新view,發送到client。
Struts架構: ? ?
????????Jsp+struts標簽庫-->View ? ?ActionBean ? ?
? ? ? ? ActionFormBean|-->Model ? ?ActionServlet ?
? ? ? ? AactionMapping |-->Controller
Struts流程:
? ? ?? ?Controller作為接受所有客戶端請求的入口點,由ActionServlet來決定需要那個動作類來執行相應的操作,同時通知 ActionFormBean來封裝用戶的表單輸入,同時提交給ActionBean執行相應的業務邏輯,通過ActionMapping來決定需要反饋 給Client什么。 注意的事情: ? ? Struts的模型主要有Action Bean 和 ActionForm Bean ,Action中封裝了簡單的邏輯操作。較為復雜的邏輯放在JavaBean或者EJB中來完成,然后在Action中調用,因此Action是解決“做 什么”,由其他的組件如(JavaBean)來解決“怎么做”的問題。 ? ? ActionForm封裝了用戶的表單輸入,因此Action不用和表單交互,直接和ActionForm交互就可以了! Struts標簽和ActionForm的元素之間一一映射
工作流程:
????? ? struts1:?發布Struts Web服務時,根據web.xml初始化ActionServlet,ActionContext等內容. 在接到一個HttpRequest請求后,ActionServlet 根據struts-config.xml中的配置內容,將請求的參數傳到對應的Formbean中,并設置session(開發中沒有使用 Formbean).然后根據請求中的Action參數,在struts-config.xml中查找指定的Action,并調用此Action來處理請 求.根據Action的處理結果,會返回一個forward變量,此時通過mapping.findForward()查找出對應的forward所標示 的Action或者JSP頁面(開發中沒有轉到另一個Action),將請求轉到下一個處理.如果是forward指向JSP頁面,則輸出到前臺.
?????????Struts2:: (1)客戶端提交一個HttpServletRequest請求(.action或JSP頁面) (2)請求被提交到一系列Filter過濾器,如ActionCleanUp和FilterDispatcher等 (3)FilterDispatcher是Struts2控制器的核心,它通常是過濾器鏈中的最后一個過濾器 (4)請求發到FilterDispatcher后,FilterDispatcher詢問ActionMapper是否需要調用某個Action來處理 這個Request(一般根據URL后綴是否為.action來判斷) (5)如果ActionMapper決定需要調用某個Action,FilterDispatcher則把請求交到ActioProxy,由其進行處理. (6)ActionProxy通過Configuration Manager(它會訪問struts.xml)詢問框架的配置文件,找到需要調用的Action類. (7)ActionProxy創建一個ActionInvocation實例,而ActionInvocation通過代理模式調用Action,(在調 用之前會根據配置文件加載相關的所有Interceptor攔截器) (8)Action執行完畢后,返回一個result字符串,此時再按相反的順序通過Interceptor攔截器. (9) 最后ActionInvocation負責根據struts.xml中配置的result元素,找到與返回值對應的result,決定進行下一步輸出. ??
????? ? 簡單的說struts2就是個單控制器,覆蓋了以前的servlet。jsp里面的請求,通過單控制器的攔截,查看struts.xml查找你要響應的 Action。在Action里面處理事務,然后return一個參數(這個參數在XML里面配置,配置需要返回的界面)。
hibernate原理:
????? ? Hibernate的核心是ORM,對象與關系映射。一對一,一對多,多對多。
????? ??Hibernate 是一個開放源代碼的對象關系映射框架,它對 JDBC 進行了輕量級的對象封裝,不僅提供了從 Java 類到數據表之間的映射,也提供了數據查詢和恢復機制。?
????????1.通過Configuration().configure();讀取并解析hibernate.cfg.xml配置文件//讀取配置文件
????????2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>讀取并解析映射信息//讀取映射信息
????? ? 3.通過config.buildSessionFactory();//創建SessionFactory
????????4.sessionFactory.openSession();//打開Sesssion
????????5.session.beginTransaction();//創建事務Transation
????????6.persistent operate持久化操作
????????7.session.getTransaction().commit();//提交事務
????????8.關閉Session
????? ? 9.關閉SesstionFactory??
Hibernate的三種狀態:
????? ? 瞬時狀態,持久化狀態,游離狀態。
????? ? 舉個例子我們把數據庫比作一個登記薄,當我們把信息登記到登記簿上的時候,這個過程就是持久化的過程。當登記完成之后,登記簿上的數據就是持久態數據,所謂持久態就是一直存在的狀態。當我們需要用數據的時候,會從登記簿上查信息,我們查到的信息記錄在臨時的紙張或者腦海里,然后登記簿會放回原位,這時候臨時紙張上或者腦海里的數據就是游離態,隨時可能被遺忘,在hibernate中就是隨時會被銷毀的數據。瞬態數據和游離態數據有點兒類似,但是一點,就是他是存在持久化之前的數據,就是說我需要登記個人信息,我的個人信息還沒有登記到登記簿上的時候,信息就是瞬態,一旦登記到登記簿上就變成持久態了,然后再查詢到的就是游離態。
spring原理:
????????核心是IOC(控制反轉)和AOP(面向切面編程)。
????????IOC將 類與類的依賴關系寫在配置文件中,程序在運行時根據配置文件動態加載依賴的類,降低的類與類之間的藕合度。它的原理是在 applicationContext.xml加入bean標簽,在bean標簽中通過class屬性說明具體類名、通過property標簽說明該類的 屬性名、通過constructor-args說明構造子的參數。其一切都是返射,當通過applicationContext.getBean("id 名稱")得到一個類實例時,就是以bean標簽的類名、屬性名、構造子的參數為準,通過反射實例對象,喚起對象的set方法設置屬性值、通過構造子的 newInstance實例化得到對象。正因為spring一切都是反射,反射比直接調用的處理速度慢,所以這也是spring的一個問題。??
????????? ? AOP其 機理來自于代理模式,代理模式有三個角色分別是通用接口、代理、真實對象代理、真實對象實現的是同一接口,將真實對象作為代理的一個屬性,向客戶端公開的 是代理,當客戶端調用代理的方法時,代理找到真實對象,調用真實對象方法,在調用之前之后提供相關的服務,如事務、安全、日志。其名稱分別是代理、真實對 象、裝備、關切點、連接點。
轉載于:https://www.cnblogs.com/qiuh/archive/2013/03/08/2950073.html
總結
- 上一篇: [C#]手把手教你打造Socket的TC
- 下一篇: 博客搬家!