更新時間:2019-08-09 12:46:49 來源:動力節點 瀏覽2467次
MVC三層架構:模型層,控制層和視圖層。模型層,用Hibernate框架讓來JavaBean在數據庫生成表及關聯,通過對JavaBean的操作來 對數據庫進行操作;控制層,用Struts框架來連接數據層和視圖層的,接收、處理、發送數據并控制流程;視圖層,用JSP模板把頁面展現給用戶以及提供與用戶的交互。而Spring框架粘合了Hibernate和Struts,透明的管理了整個架構,提供IOC容器使代碼松耦合以及AOP框架的切面功能等等。
Java—SSH(MVC)
JAVA三大框架的各自作用
hibernate是底層基于jdbc的orm(對象關系映射)持久化框架,即:表與類的映射,字段與屬性的映射,記錄與對象的映射數據庫模型 也就是Model;
struts提供的豐富標簽是用于顯示層View;同時struts也充當了實現Control的功能(不管是Struts1,還是Struts2),接收參數,視圖分發。
Spring是用于降低層與層間耦合度的,就是所有的類都可以由spring統一創建,用時只需注入即可(IOC)
從功能上來說,hibernate為M,struts2 為V,也可以為C,spring可以為C。
但大多數項目中,hibernate為M,struts2 為V+C,spring用來幫助管理類以及實現一些業務無關功能,如日志記錄等,大多數都是用struts來做C的。
Spring是一個解決了許多在J2EE開發中常見的問題的強大框架。 Spring提供了管理業務對象的一致方法并且鼓勵了注入對接口編程而不是對類編程的良好習慣。Spring的架構基礎是基于使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二的。 Spring提供了唯一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率并且減少了可能的錯誤。Spring的數據訪問架構還集成了Hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業事務--如果你需要--還能實現你自己的aspects。這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統EJB相關的關鍵服務。Spring還提供了可以和IoC容器集成的強大而靈活的MVC Web框架。
Struts是一個基于Sun J2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的。由于Struts能充分滿足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是一個非常不錯的應用框架。
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。映射很簡單呀,就是頁面的映射呀,多做點練習就會了。
JAVA三大框架用來做WEB應用。 struts主要負責表示層的顯示 spring利用它的IOC和AOP來處理控制業務(負責對數據庫的操作) hibernate主要是數據的持久化到數據庫。在用jsp的servlet做網頁開發的時候有個web.xml的映射文件,里面有個mapping的標簽就是用來做文件映射的。 當你在瀏覽器上輸入URL地址的時候,文件就會根據你寫的名稱對應到一個java文件,根據java文件里編寫的內容顯示在瀏覽器上,就是一個網頁,所以網頁名字是隨便寫的,隨便起的名字,不管你起的是.php .jsp .do還是其他的什么都對應這個java文件,這個java文件里的代碼進行什么操作就干什么,顯示一句話還是連接數據庫還是跳轉到其他頁面等等,這個java文件把數據進行封裝起到安全和便于管理的作用。其實這個java文件編譯過來是.class的一個字節碼文件,沒有那么一個類似html嵌入標簽和代碼的網頁文件。他與jsp文件區別就是jsp把代碼嵌入到html標簽中。還有servlet或者struts中html表單的action中的提交名稱對應一個java文件,struts一般是.do的,都和上面一樣是映射。
1.談談你mvc的理解
MVC是Model—View—Controler的簡稱。即模型—視圖—控制器。MVC是一種設計模式,它強制性的把應用程序的輸入、處理和輸出分開。
MVC中的模型、視圖、控制器它們分別擔負著不同的任務。
視圖: 視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關的數據,并接受用戶的輸入。視圖不進行任何業務邏輯處理。
模型: 模型表示業務數據和業務處理。相當于JavaBean。一個模型能為多個視圖提供數據。這提高了應用程序的重用性
控制器: 當用戶單擊Web頁面中的提交按鈕時,控制器接受請求并調用相應的模型去處理請求。
然后根據處理的結果調用相應的視圖來顯示處理的結果。
MVC的處理過程:首先控制器接受用戶的請求,調用相應的模型來進行業務處理,并返回數據給控制器??刂破髡{用相應的視圖來顯示處理的結果。并通過視圖呈現給用戶。
Struts
2.struts1.2和struts2.0的區別?如何控制兩種框架中的單例模式?
struts1.2和struts2.0的對比
a、Action類:
struts1.2要求Action類繼承一個基類。struts2.0 Action要求繼承ActionSupport基類
b、線程模式
struts1.2 Action是單例模式的并且必須是線程安全的,因為僅有一個Action的實例來處理所有的請求。
單例策略限制了Struts1.2 Action能做的事情,并且開發時特別小心。Action資源必須是線程安全的或同步的。
struts2.0 Action為每一個請求產生一個實例,因此沒有線程安全問題。
c、Servlet依賴
struts1.2 Action依賴于Servlet API,因為當一個Action被調用時HttpServletRequest和HttpServletResponse被傳遞給execut方法。
struts2.0 Action不依賴于容器,允許Action脫離容器單獨測試。如果需要,Struts2 Action仍然可以訪問初始的Request和Response。
但是,其他的元素減少或者消除了直接訪問HttpServletRequest和HttpServletResponse的必要性。
d、可測性
測試struts1.2 Action的一個主要問題是execute方法暴露了Servlet API(這使得測試要依賴于容器)。一個第三方擴展:struts TestCase
提供了一套struts1.2的模擬對象來進行測試。
Struts2.0 Action可以通過初始化、設置屬性、調用方法來測試,“依賴注入”也使得測試更容易。
3.項目中為什么使用SSH
以下以兩國語言(中文,英文)為例:
1. 在工程中加入Struts支持
2. 編輯ApplicationResource.properties文件,在其中加入要使用國際化的信息, 例如:
lable.welcome.china=Welcome!!!
3. 創建英文資源文件ApplicationResource_en.properites
4. 創建臨時中文資源文件ApplicationResource_temp.properites例如:lable.welcom.china=中國歡迎您!
5. 對臨時中文資源文件進行編碼轉換??梢允褂胢yeclipse的插件,也可以在dos下執行:
native2ascii-encoding gb2312 ApplicationResource_temp.properties ApplicationResource_zh_CN.properties
6. 在jsp中加入struts的bean標記庫<%@ taglib uri="/WEB-INF/struts-bean.tld"prefix="bean"%>
顯示信息:
可以在struts-config.xml文件中定義多個資源包,而每個資源包可使用key屬性指定包的名稱。
5. struts2.0的常用標簽
1. 往action里傳值:
2. 顯示標簽 property 用于輸出指定值:
3. 用于從頁面往action中(user)的對象內傳值:
4. 判斷 用于在頁面中判斷指定數據 …. ….
5. 迭代用于將List、Map、ArrayList等集合進行循環遍歷
6. URL地址標簽,用于生成一個URL地址,可以通過URL標簽指定的子元素向URL地址發送請求參數
7. 超鏈接 一般和標簽一起使用,用于帶多個參數。“>超鏈接
8. set標簽,用于將某個值放入指定的范圍內。例如application,session等。
6. struts中怎么配置form-bean、action、tiles
此處配置的是struts1.2的
form-bean配置:(在配置文件struts-config.xml中):
name: 指定form的名字; type指定form的類型:包名+類名;
action配置:(在配置文件struts-config.xml中)
attribute=""
input=""
name=""
parameter=""
scope="request"
type=""
>
path:請求Action的名字; attribute:form的名字,與form-bean中的name對應;input:輸入頁的路徑;
name:如果配置了attribute,name不起作用,與attribute一樣;parameter:使用分發Action時,指定調用分發
Action中的方法名;
scope:Action的范圍; type:Action的類型:包名+類名;
7.什么是IOC(DI),有什么好處(java project 的spring IOC模擬)
IOC(Inversion Of Control,控制反轉):一個類的某個屬性需要使用時,需要有本類自己初始化。而在spring類的某些屬性不用自己初始化而交給了spring來管理。這樣的轉換就是IOC思想。Spring的IOC思想是,spring的IOC容器在初始化的時候就根據配置對相應的對象進行初始化,并放在容器中。同時根據配置對相應類的屬性進行初始化。也就是DI(Dependency Injection依賴注入),至此類的初始化不需要類本身負責初始化而交給了spring容器。
IOC的好處是:降低耦合性:某個類的一個屬性,以前是該類自己控制,而引人Spring后,這個類的屬性由Spring控制。
Spring IOC的模擬所做的事情是:在xml文件配置好相應的bean,設置注入關系。在解析xml時候對bean進行初始化同時對相應屬性進行注入。
相關閱讀
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習