首先我們要明白什么是框架為什么用?相信一開始學習編程的時候都會聽到什么、什么框架之類的;首先框架是一個軟件半成品,都會預先實現一些通用功能,使用框架直接應用這些通用功能而不用重新實現,所以大多數企業都用框架都是提高開發效率,節約開發成本。
絕大多數框架都遵循着一種mvc設計模式思想,MVC是Model—View—Controler的簡稱。即模型—視圖—控制器。MVC是一種設計模式,它強制性的把應用程序的輸入、處理和輸出分開。MVC中的模型、視圖、控制器它們分別擔負着不同的任務。
視圖: 視圖是用戶看到並與之交互的界面。視圖向用戶顯示相關的數據,並接受用戶的輸入。視圖不進行任何業務邏輯處理。
模型: 模型表示業務數據和業務處理。相當於JavaBean。一個模型能為多個視圖提供數據。這提高了應用程序的重用性。
控制器: 當用戶單擊Web頁面中的提交按鈕時,控制器接受請求並調用相應的模型去處理請求。
從上圖可以看出mvc工作場景:MVC的處理過程:首先控制器接受用戶的請求,調用相應的模型來進行業務處理,並返回數據給控制器。控制器調用相應的視圖來顯示處理的結果。並通過視圖呈現給用戶。
然后再看看給予mvc模式的經典的框架SSH:分別是Struts、Spring、Hibernate 。
首先介紹struts2框架:
1、基於MVC模式的應用層框架技術!
2、Struts2主要是通過Action動作類,處理請求! (與傳統的servlet開發相比,只需要寫Action類即可!用Action取代之前的servlet開發!) (Struts是對servletApi進行的封裝!)
3、 Struts2的發展 :Struts2=Struts1 + xwork
4、Struts2功能的引入,是通過核心過濾器完成的! 如果想用struts的任何功能,必須經過核心過濾器!(被過濾器攔截!) (struts提供的標簽的訪問,要先經過核心過濾器:StrutsPrepareAndExecuteFilter!)
還有struts2提供了一些簡單的功能,方便開發;例如文件的上傳,請求數據封裝;代碼如下:
封裝數據請求一:
封裝數據請求二:
從上面兩種請求可以看出:一個是作為基本類型也就是字符串,另一個是對象。大多數用到的都是第二種。
struts2的配置文件簡單介紹一下struts2默認訪問后綴是.action最為后綴 , 默認執行的方法是execute!
struts2的配置文件大概是這樣的:
在介紹一下struts的工作原理吧:
1.客戶端發出一個指向servlet容器的請求;
2.請求會經過StrutsPrepareAndExecuteFilter過濾器;
3.過濾器和請求將訪問struts2的底層框架結構。在web容器啟動時,struts2框架會自動加載配置文件里相關參數,並轉換成相應的類。
如:ConfigurationManager、ActionMapper和ObjectFactory。ConfigurationManager 存有配置文件的一些基本信息,ActionMapper存有action的配置信息。在請求過程中所有的對象(Action,Results,Interceptors,等)都是通過ObjectFactory來創建的。過濾器會通過詢問ActionMapper類來查找請求中需要用到的Action。
4.如果找到需要調用的Action,過濾器會把請求的處理交給ActionProxy。ActionProxy為Action的代理對象。ActionProxy通過ConfigurationManager詢問框架的配置文件,找到需要調用的Action類。
5.ActionProxy創建一個ActionInvocation的實例。ActionInvocation在ActionProxy層之下,它表示了Action的執行狀態,或者說它控制的Action的執行步驟。它持有Action實例和所有的Interceptor。
6.ActionInvocation實例使用命名模式來調用,1. ActionInvocation初始化時,根據配置,加載Action相關的所有Interceptor。2. 通過ActionInvocation.invoke方法調用Action實現時,執行Interceptor。在調用Action的過程前后,涉及到相關攔截器(intercepetor)的調用。
7. 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。
這些類不要太在意,大概知道干什么就可以了,如果想學精通就要查看底層類是使怎么寫的,大多數框架都有技術文檔。
通俗的來講:
1、發送http請求
2、Web服務器(tomcat/weblogic...)
3、執行struts核心過濾器StrutsPrepareAndExecuteFilter
4、加載struts配置文件中配置信息,找到對應的Action類並實例化
5、執行各類攔截器和Action中對應方法
6、配置文件中找到返回結果
7、轉發到具體頁面或其它操作
大概是這樣
struts還有一個攔截器的概念:Interceptor 表示攔截器!struts2是通過一個個攔截器來完成通用的功能的。
struts2大概介紹到這里,還有其他知識自己學習吧!
Hibernate框架:
首先我們要明白一個東西那就是ORM規則:Object Relation Mapping 對象關系映射!
所有簡單來說Hibernate就是一個操作數據庫的東西一般有兩個配置文件,一個是關系對象配置文件,一個是主配置文件。例如:User.java
還有一個主配置文件hibernate.cfg.xml(核心配置文件)
寫一個類測試一些
hibernate執行流程圖如下:
原理: 1.讀取並解析配置文件 2.讀取並解析映射信息,創建SessionFactory 3.打開Session 4.創建事務Transation 5.持久化操作 6.提交事務 7.關閉Session 8.關閉SesstionFactory
Spring框架:
spring框架有6大功能模塊,需要用到那個模塊就引用哪個模塊,但核心模塊必須引用
分別是:Spring Core 核心功能,SpringAop 面向切面編程,SpringWeb 對web開發的支持(spring對struts框架的支持!),SpringJdbc 對jdbc的支持,SpringORM 對ORM的支持(spring對hibenrate的支持),SpringJEE 對javaee其他模塊的支持!(EJB)
可以看出Spring 主要是創建創建,與其他框架整合,表示可以幫其他框架創建對象!
舉個簡單例子如何創建對象
就簡單介紹一下
Spring核心, 就是指IOC容器!
IOC容器,
主要是創建對象!
Inversion of control 控制反轉! 所以,也叫控制反轉容器!
控制反轉,
對象的創建交給外部容器完成,程序需要對象,只需要從容器獲取即可!
IOC容器 = applicationContex.xml + ApplicationContext類
創建對象之后,給對象屬性賦值, 這個叫“依賴注入”!
spring的xml文件大概這樣子
里面的一些配置就需要自己查看相應的文檔
這些框架都有自己的配置文件,都有相應的技術文檔,所有不要覺得框架很難。總的來說學習這些框架式很容易入手的,那就是多練習,然后在上網(大多數在論壇上都有項目)找幾個項目做。一個人的學習經驗來說,都是模仿別人的項目,自己敲多幾次就會了,好好學習吧。