Java—SSH(MVC)php
JAVA三大框架的各自做用 html
hibernate是底層基於jdbc的orm(對象關係映射)持久化框架,即:表與類的映射,字段與屬性的映射,記錄與對象的映射 數據庫模型 也就是Model;
struts提供的豐富標籤是用於顯示層View;同時struts也充當了實現Control的功能(不論是Struts1,仍是Struts2),接收參數,視圖分發。
Spring是用於下降層與層間耦合度的,就是全部的類均可以由spring統一建立,用時只需注入便可(IOC)java
從功能上來講,hibernate爲M,struts2 爲V,也能夠爲C,spring能夠爲C。
但大多數項目中,hibernate爲M,struts2 爲V+C,spring用來幫助管理類以及實現一些業務無關功能,如日誌記錄等,大多數都是用struts來作C的。
1、Spring
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框架。
2、STRUCTS
Struts是一個基於Sun J2EE平臺的MVC框架,主要是採用Servlet和JSP技術來實現的。因爲Struts能充分知足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標籤和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再本身編碼實現全套MVC模式,極大的節省了時間,因此說Struts是一個很是不錯的應用框架。
3、Hibernate
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
1. 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能夠經過初始化、設置屬性、調用方法來測試,「依賴注入」也使得測試更容易。
2. 項目中爲何使用SSH
1. 使用Struts是由於struts是基於MVC模式的,很好的將應用程序進行了分層,使開發者更關注於業務邏輯的實現;第二,struts有着豐富的taglib,如能靈活運用,則能大大提升開發效率。
2. 使用Hibernate:由於hibernate爲Java應用提供了一個易用的、高效率的對象關係映射框架。hibernate是個輕量級的持久性框架,功能豐富。
3. 使用Spring:由於spring基於IoC(Inversion of Control,反向控制)和AOP構架多層j2ee系統的框架,但它不強迫你必須在每一層中必須使用Spring,由於它模塊化的很好,容許你根據本身的須要選擇使用它的某一個模塊;採用IoC使得能夠很容易的實現bean的裝配,提供了簡潔的AOP並據此實現事務管理(Transcation Managment),等等
3. struts與spring是如何繼承的
不懂題目之意:是不是說的struts的action都繼承自org.apache.struts.action.Action而Spring中的繼承就不清楚了。
4. struts如何實現國際化
如下以兩國語言(中文,英文)爲例:
1. 在工程中加入Struts支持
2. 編輯ApplicationResource.properties文件,在其中加入要使用國際化的信息, 例如:
lable.welcome.china=Welcome!!!
3. 建立英文資源文件ApplicationResource_en.properites
4. 建立臨時中文資源文件ApplicationResource_temp.properites 例如:lable.welcom.china=中國歡迎您!
5. 對臨時中文資源文件進行編碼轉換。可使用myeclipse的插件,也能夠在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中的方法名;web
scope:Action的範圍; type:Action的類型:包名+類名;spring
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進行初始化同時對相應屬性進行注入。apache
8.什麼是AOP?編程
兩種注入方式:設計模式
a) 使用Annotation
b) 使用xml
面向切面編程(AOP)完善spring的依賴注入(DI),面向切面編程在spring中主要表現爲兩個方面
1.面向切面編程提供聲明式事務管理
2.spring支持用戶自定義的切面
面向切面編程(aop)是對面向對象編程(oop)的補充,面向對象編程將程序分解成各個層次的對象,面向切面編程將程序運行過程分解成各個切面。
AOP從程序運行角度考慮程序的結構,提取業務處理過程的切面,oop是靜態的抽象,aop是動態的抽象,是對應用執行過程當中的步驟進行抽象,從而得到步驟之間的邏輯劃分。
aop框架具備的兩個特徵:
1.各個步驟之間的良好隔離性
2.源代碼無關性
9.DAO層採用JdbcTemplate操做數據,如何在Service層控制事務?DAO層採用JdbcTemplate進行數據庫操做。 Service層調用DAO層方法。 因爲一個Service方法可能須要調用多個DAO對象的方法,須要在Service層進行事務控制。 因爲一些緣由,須要採用編程式事務(現使用TransactionTemplate)。 但是存在一個問題: 只有當建立TransactionTemplate對象的DataSourceTransactionManager使用的DataSource對象和DAO對象建立JdbcTemplate對象使用的DataSource是同一個對象時才能在transactionTemplate.execute()方法中控制事務。