更新時(shí)間:2019-08-23 16:56:03 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3032次
今天動(dòng)力節(jié)點(diǎn)java學(xué)院小編為大家整理了“5道關(guān)于SSH框架的面試題及答案”,希望對(duì)各位正在找工作的java程序員有幫助。下面和小編一起看看吧。
1、寫出你熟悉的開源框架以及各自的作用(項(xiàng)目中為什么使用SSH)
框架:hibernate,spring,struts1/struts2.
Hibernate主要用于數(shù)據(jù)持久化;封裝了JDBC操作;還提供了一個(gè)易用的、高效率的對(duì)象關(guān)系映射框架;
Spring的控制反轉(zhuǎn)能起到解耦合的作用;
Struts主要用于請(qǐng)求處理的流程控制;struts是基于MVC模式的,很好的將應(yīng)用程序進(jìn)行了分層,使開發(fā)者更關(guān)注于業(yè)務(wù)邏輯的實(shí)現(xiàn);struts有著豐富的taglib,如能靈活運(yùn)用,則能大大提高開發(fā)效率。
Struts(表示層)+Spring(業(yè)務(wù)層)+Hibernate(持久層)
2、簡(jiǎn)述STRUTS架構(gòu)(說下Struts的工作流程、struts的工作原理)
簡(jiǎn)述:
Struts是采用JavaServlet/JavaServerPages技術(shù),開發(fā)Web應(yīng)用程序的開放源碼的framework。采用Struts能開發(fā)出基于MVC(Model-View-Controller)設(shè)計(jì)模式的應(yīng)用構(gòu)架。Struts有如下的主要功能:一.包含一個(gè)controllerservlet,能將用戶的請(qǐng)求發(fā)送到相應(yīng)的Action對(duì)象。二.JSP自由tag庫,并且在controllerservlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)用。三.提供了一系列實(shí)用對(duì)象:XML處理、通過JavareflectionAPIs自動(dòng)處理JavaBeans屬性、國(guó)際化的提示和消息。
流程:
在web應(yīng)用啟動(dòng)時(shí)就會(huì)加載初始化ActionServlet,ActionServlet從struts-config.xml文件中讀取配置信息,把它們存放到各種配置對(duì)象當(dāng)ActionServlet接收到一個(gè)客戶請(qǐng)求時(shí),將執(zhí)行如下流程.
(1)檢索和用戶請(qǐng)求匹配的ActionMapping實(shí)例,如果不存在,就返回請(qǐng)求路徑無效信息;
(2)如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對(duì)象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對(duì)象中;
(3)根據(jù)配置信息決定是否需要表單驗(yàn)證.如果需要驗(yàn)證,就調(diào)用ActionForm的validate()方法;
(4)如果ActionForm的validate()方法返回null或返回一個(gè)不包含ActionMessage的ActuibErrors對(duì)象,就表示表單驗(yàn)證成功;
(5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)Action,如果相應(yīng)的Action實(shí)例不存在,就先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法;
(5)Action的execute()方法返回一個(gè)ActionForward對(duì)象,ActionServlet在把客戶請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象指向的JSP組件;
(6)ActionForward對(duì)象指向JSP組件生成動(dòng)態(tài)網(wǎng)頁,返回給客戶;
3、緩存
session緩存:被稱為Hibernate的第一級(jí)緩存.它存放被單前工作單元加載的對(duì)象。
sessionFactory緩存:被稱為Hibernate的第二級(jí)緩存.一個(gè)實(shí)例對(duì)應(yīng)一個(gè)數(shù)據(jù)存儲(chǔ)源.它是線程安全的,是重量級(jí)的。
它需要一個(gè)很大的緩存,用來存放預(yù)定義的SQL語句以及映射元數(shù)據(jù)等。
4、對(duì)象的3個(gè)狀態(tài)
瞬時(shí):一個(gè)實(shí)體通過new操作符創(chuàng)建后,沒有和Hibernate的Session建立關(guān)系,
也沒有手動(dòng)賦值過該實(shí)體的持久化標(biāo)識(shí)(持久化標(biāo)識(shí)可以認(rèn)為映射表的主鍵)。
此時(shí)該實(shí)體中的任何屬性的更新都不會(huì)反映到數(shù)據(jù)庫表中。
持久化:當(dāng)一個(gè)實(shí)體和Hibernate的Session創(chuàng)建了關(guān)系,
并獲取了持久化標(biāo)識(shí),而且在Hibernate的Session生命周期內(nèi)存在。
此時(shí)針對(duì)該實(shí)體任何屬性的更改都會(huì)直接影響到數(shù)據(jù)庫表中一條記錄對(duì)應(yīng)字段的更新,
也即與對(duì)應(yīng)數(shù)據(jù)庫表保持同步。
脫管:當(dāng)一個(gè)實(shí)體和Hibernate的Session創(chuàng)建了關(guān)系,并獲取了持久化標(biāo)識(shí),
而此時(shí)Hibernate的Session的生命周期結(jié)束,實(shí)體的持久化標(biāo)識(shí)沒有被改動(dòng)過。
針對(duì)該實(shí)體的任何屬性的修改都不會(huì)及時(shí)反映到數(shù)據(jù)庫表中。
5、Spring里面applicationContext.xml文件能不能改成其他文件名?
ContextLoaderListener是一個(gè)ServletContextListener,它在你的web應(yīng)用啟動(dòng)的時(shí)候初始化。缺省情況下,它會(huì)在WEB-INF/applicationContext.xml文件找Spring的配置。你可以通過定義一個(gè)元素名字為”contextConfigLocation”來改變Spring配置文件的位置。示例如下:
org.springframework.web.context.ContextLoaderListenercontextConfigLocation/WEB-INF/xyz.xml
以上就是動(dòng)力節(jié)點(diǎn)java學(xué)院小編整理的“5道關(guān)于SSH框架的面試題及答案”的內(nèi)容,希望對(duì)大家有幫助,更多精彩內(nèi)容請(qǐng)關(guān)注動(dòng)力節(jié)點(diǎn)java學(xué)院官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743