1. 談?wù)勀鉳vc的理解
MVC是Model—View—Controler的簡稱。即模型—視圖—控制器,。MVC是一種設(shè)計(jì)模式,,它強(qiáng)制性的把應(yīng)用程序的輸入、處理和輸出分開,。
MVC中的模型,、視圖、控制器它們分別擔(dān)負(fù)著不同的任務(wù),。
視圖: 視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關(guān)的數(shù)據(jù),,并接受用戶的輸入,。視圖不進(jìn)行任何業(yè)務(wù)邏輯處理。
模型: 模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)處理。相當(dāng)于JavaBean,。一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù),。這提高了應(yīng)用程序的重用性
控制器: 當(dāng)用戶單擊Web頁面中的提交按鈕時(shí),控制器接受請(qǐng)求并調(diào)用相應(yīng)的模型去處理請(qǐng)求。
然后根據(jù)處理的結(jié)果調(diào)用相應(yīng)的視圖來顯示處理的結(jié)果,。
MVC的處理過程:首先控制器接受用戶的請(qǐng)求,,調(diào)用相應(yīng)的模型來進(jìn)行業(yè)務(wù)處理,并返回?cái)?shù)據(jù)給控制器,??刂破髡{(diào)用相應(yīng)的視圖來顯示處理的結(jié)果。并通過視圖呈現(xiàn)給用戶,。
Struts
1. struts1.2和struts2.0的區(qū)別,?如何控制兩種框架中的單例模式?
struts1.2和struts2.0的對(duì)比
a,、Action類:
struts1.2要求Action類繼承一個(gè)基類,。struts2.0 Action要求繼承ActionSupport基類
b、線程模式
struts1.2 Action是單例模式的并且必須是線程安全的,因?yàn)閮H有一個(gè)Action的實(shí)例來處理所有的請(qǐng)求,。
單例策略限制了Struts1.2 Action能做的事情,并且開發(fā)時(shí)特別小心,。Action資源必須是線程安全的或同步的。
struts2.0 Action為每一個(gè)請(qǐng)求產(chǎn)生一個(gè)實(shí)例,因此沒有線程安全問題,。
c,、Servlet依賴
struts1.2 Action依賴于Servlet API,因?yàn)楫?dāng)一個(gè)Action被調(diào)用時(shí)HttpServletRequest和HttpServletResponse被傳遞給execut方法。
struts2.0 Action不依賴于容器,允許Action脫離容器單獨(dú)測試,。如果需要,Struts2 Action仍然可以訪問初始的Request和Response,。
但是,其他的元素減少或者消除了直接訪問HttpServletRequest和HttpServletResponse的必要性。
d,、可測性
測試struts1.2 Action的一個(gè)主要問題是execute方法暴露了Servlet API(這使得測試要依賴于容器),。一個(gè)第三方擴(kuò)展:struts TestCase
提供了一套struts1.2的模擬對(duì)象來進(jìn)行測試。
Struts2.0 Action可以通過初始化,、設(shè)置屬性,、調(diào)用方法來測試,“依賴注入”也使得測試更容易。
2. 項(xiàng)目中為什么使用SSH
1. 使用Struts是因?yàn)閟truts是基于MVC模式的,很好的將應(yīng)用程序進(jìn)行了分層,,使開發(fā)者更關(guān)注于業(yè)務(wù)邏輯的實(shí)現(xiàn),;第二,struts有著豐富的taglib,如能靈活運(yùn)用,,則能大大提高開發(fā)效率,。
2. 使用Hibernate:因?yàn)閔ibernate為Java應(yīng)用提供了一個(gè)易用的、高效率的對(duì)象關(guān)系映射框架,。hibernate是個(gè)輕量級(jí)的持久性框架,,功能豐富,。
3. 使用Spring:因?yàn)閟pring基于IoC(Inversion of Control,反向控制)和AOP構(gòu)架多層j2ee系統(tǒng)的框架,,但它不強(qiáng)迫你必須在每一層中必須使用Spring,,因?yàn)樗K化的很好,允許你根據(jù)自己的需要選擇使用它的某一個(gè)模塊,;
采用IoC使得可以很容易的實(shí)現(xiàn)bean的裝配,,提供了簡潔的AOP并據(jù)此實(shí)現(xiàn)事務(wù)管理(Transcation Managment),等等
3. struts與spring是如何繼承的
不懂題目之意:是否是說的struts的action都繼承自org.apache.struts.action.Action
而Spring中的繼承就不清楚了。
4. struts如何實(shí)現(xiàn)國際化
以下以兩國語言(中文,,英文)為例:
1. 在工程中加入Struts支持
2. 編輯ApplicationResource.properties文件,在其中加入要使用國際化的信息, 例如: lable.welcome.china=Welcome!!!
3. 創(chuàng)建英文資源文件ApplicationResource_en.properites
4. 創(chuàng)建臨時(shí)中文資源文件ApplicationResource_temp.properites 例如:lable.welcom.china=中國歡迎您!
5. 對(duì)臨時(shí)中文資源文件進(jìn)行編碼轉(zhuǎn)換,。可以使用myeclipse的插件,也可以在dos下執(zhí)行:
native2ascii -encoding gb2312 ApplicationResource_temp.properties ApplicationResource_zh_CN.properties
6. 在jsp中加入struts的bean標(biāo)記庫 <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
顯示信息:
可以在struts-config.xml文件中定義多個(gè)資源包,,而每個(gè)資源包可使用key屬性指定包的名稱,。
5. struts2.0的常用標(biāo)簽
1. 往action里傳值:
2. 顯示標(biāo)簽 property 用于輸出指定值:
3. 用于從頁面往action中(user)的對(duì)象內(nèi)傳值:
4. 判斷 用于在頁面中判斷指定數(shù)據(jù) …. ….
5. 迭代用于將List、Map,、ArrayList等集合進(jìn)行循環(huán)遍歷
6. URL地址標(biāo)簽,,用于生成一個(gè)URL地址,可以通過URL標(biāo)簽指定的子元素向URL地址發(fā)送請(qǐng)求參數(shù)