JAVA_SSH框架之小知識(shí)

談?wù)剬?duì)mvc的理解?

MVC是Model-view-Controler的簡(jiǎn)稱.即模型-試圖-控制器.MVC是一種設(shè)計(jì)模式,它強(qiáng)制性的把應(yīng)用程序的輸入,處理和輸出分開(kāi).MVC中的模型 試圖 控制器他們分別擔(dān)負(fù)不同的任務(wù).
(1) 試圖:試圖是用戶看到并與之交互的界面.試圖向用戶顯示相關(guān)的數(shù)據(jù),并接受用戶的輸入.試圖不進(jìn)行任何業(yè)務(wù)邏輯處理.
(2) 模型:模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)處理.相當(dāng)于javaBean,一個(gè)模型能為多個(gè)試圖提供數(shù)據(jù).這提高了應(yīng)用程序的重要性.
(3)控制器:當(dāng)用戶單擊Web頁(yè)面中提交按鈕時(shí),控制器接受請(qǐng)求并調(diào)用相應(yīng)的模型去處理請(qǐng)求.然后根據(jù)處理的結(jié)果調(diào)用相應(yīng)的試圖來(lái)顯示處理的結(jié)果.
MVC的處理過(guò)程:首先控制器接受用戶的請(qǐng)求.調(diào)用相應(yīng)的模型來(lái)進(jìn)行業(yè)務(wù)處理,并返回?cái)?shù)據(jù)給處理過(guò)程.控制器調(diào)用相應(yīng)的試圖來(lái)顯示處理的結(jié)果.并通過(guò)試圖呈現(xiàn)給用戶.

項(xiàng)目中為什么使用SSH?實(shí)際開(kāi)發(fā)中如何界定選擇使用哪個(gè)框架進(jìn)行開(kāi)發(fā)?

(1)使用Struts2是因?yàn)镾truts2是基于MVC模式的,很好的將應(yīng)用程序進(jìn)行了分層,使開(kāi)發(fā)者更關(guān)注于業(yè)務(wù)邏輯的實(shí)現(xiàn);第二,struts有著豐富的taglib,如能靈活運(yùn)用,則能大大提高開(kāi)發(fā)效果.
(2)使用Hibernate:是因?yàn)閔ibernate為java應(yīng)用提供了一個(gè)易用的.高效率的對(duì)象關(guān)系映射框架.hibernate是一個(gè)輕量級(jí)的持久性框架,功能豐富.
(3)使用Spring,因?yàn)镾pring基于loc(反向控制)和AOP(面向切面)架構(gòu)多層j2ee系統(tǒng)的框架,但它不強(qiáng)迫比必須在每一層中必須使用Spring,因?yàn)樗哪K化很好,允許你根據(jù)自己的需求選擇使用,它的某一模塊:采用IOC使得很容易的實(shí)現(xiàn)bean的裝配,提供了簡(jiǎn)潔的Aop并據(jù)此實(shí)現(xiàn)事物管理.

Struts2中轉(zhuǎn)發(fā)和重定向的區(qū)別?

轉(zhuǎn)發(fā): 一次請(qǐng)求,一次響應(yīng).地址欄的url不會(huì)改變.在服務(wù)器端執(zhí)行,所以必須在同一臺(tái)服務(wù)器上.轉(zhuǎn)發(fā)速度快.
重定向:兩次請(qǐng)求.地址欄的url會(huì)隨之改變?yōu)槎ㄏ蚝蟮哪莻€(gè)url.在客戶端執(zhí)行,所以可以在不同的服務(wù)器上.重定向速度慢.

action是單實(shí)例還是多實(shí)例,為什么?

action是單實(shí)例,當(dāng)多個(gè)用戶訪問(wèn)一個(gè)請(qǐng)求的時(shí)候,服務(wù)器內(nèi)存中只有一個(gè)與之對(duì)應(yīng)的action類對(duì)象.
因?yàn)楫?dāng)服務(wù)器第一次加載struts的配置文件的時(shí)候,創(chuàng)建了一個(gè)Action后,每發(fā)送一個(gè)請(qǐng)求,服務(wù)器都會(huì)檢索相應(yīng)范圍內(nèi)(request,session)是否存在,這樣一個(gè)action實(shí)例,如果存在,則使用這個(gè)實(shí)例,如果不存在,則創(chuàng)建一個(gè)Action實(shí)例.

struts2.0的mvc模式與struts1.0的區(qū)別?

struts2的mvc模式:當(dāng)用戶在頁(yè)面提交用戶請(qǐng)求時(shí),該請(qǐng)求需要提交給struts2的控制器處理,struts2的控制器根據(jù)結(jié)果處理結(jié)果,決定將那個(gè)頁(yè)面呈現(xiàn)給客戶端.與struts1最大的不用是:struts2的控制器.struts2的控制器不在想struts1的控制器,需要繼承一個(gè)action父類,甚至可以無(wú)需實(shí)現(xiàn)任何接口,struts2的Action就是一個(gè)普通的POJO.實(shí)際上,struts的action就是一個(gè)包含execute方法的普通java類,該類中包含的多個(gè)屬性封裝用戶的請(qǐng)求參數(shù).

struts的工作機(jī)制

大致流程如下:
(1)瀏覽器發(fā)送請(qǐng)求.
(2)核心控制器FilterDispatcher根據(jù)請(qǐng)求決定調(diào)用合適的Action.
(3)WebWork的攔截器鏈自動(dòng)對(duì)請(qǐng)求應(yīng)用通用功能,例如workflow,validation或文件上傳等功能.
(4)回調(diào)Action的execute方法,該方法先獲取用戶請(qǐng)求參數(shù),然后執(zhí)行某種數(shù)據(jù)庫(kù)操作,既可以是將數(shù)據(jù)保存到數(shù)據(jù)庫(kù),也可以從數(shù)據(jù)庫(kù)中檢索信息.實(shí)際上,因?yàn)锳ction只是一個(gè)控制器,它會(huì)調(diào)用業(yè)務(wù)邏輯組件來(lái)處理用戶的請(qǐng)求.
(5)Action的execute方法處理結(jié)果信息將被輸出到瀏覽器中,可以是HTML頁(yè)面.圖像,也可以是PDF文檔或者其他文檔.此時(shí)支持的試圖技術(shù)非常多,即支持JSP,也支持Velocity.FreeMarker等模板技術(shù).

什么是hibernate的并發(fā)機(jī)制?怎么去處理并發(fā)問(wèn)題?

Hibernate并發(fā)機(jī)制:
1.hibernate的session對(duì)象是非線程安全的,對(duì)于單個(gè)請(qǐng)求,單個(gè)會(huì)話,單個(gè)的工作單元(即單個(gè)事務(wù),當(dāng)線程),它通常只使用一次,然后就丟棄.如果一個(gè)session實(shí)例允許共享的話,那些支持并發(fā)運(yùn)行的例如 Http request session beans將會(huì)導(dǎo)致出現(xiàn)資源爭(zhēng)用.如果在Http session中有hibernate的session的話,就冷會(huì)出現(xiàn)同步訪問(wèn)HttpSession.只要用戶足夠快的點(diǎn)擊瀏覽器刷新,就會(huì)導(dǎo)致兩個(gè)并發(fā)運(yùn)行的線程使用一個(gè)session
2.多個(gè)事務(wù)并發(fā)訪問(wèn)同一塊資源,可能會(huì)引發(fā)第一類丟失跟新,臟讀 幻讀 不可重復(fù)讀 第二類丟失跟新一系列問(wèn)題.

解決方案:設(shè)置事務(wù)隔離級(jí)別.
Serializable:串行化席函。隔離級(jí)別最高
Repeatable Read:可重復(fù)讀
Read Committed:已提交數(shù)據(jù)讀
Read Uncommitted:未提交數(shù)據(jù)讀。隔離級(jí)別最差
設(shè)置鎖:樂(lè)觀鎖和悲觀鎖。
樂(lè)觀鎖:使用版本號(hào)或時(shí)間戳來(lái)檢測(cè)更新丟失,在的映射中設(shè)置 optimisticlock=”all”可以在沒(méi)有版本或者時(shí)間戳屬性映射的情況下實(shí)現(xiàn)
版本檢查,此時(shí)Hibernate 將比較一行記錄的每個(gè)字段的狀態(tài) 行級(jí)悲觀鎖:Hibernate 總是使用數(shù)據(jù)庫(kù)的鎖定機(jī)制,從不在內(nèi)存中鎖定對(duì)象!只要為 JDBC 連接指定一下隔 離級(jí)別庐舟,然后讓數(shù)據(jù)庫(kù)去搞定一切就夠了队贱。類 LockMode 定義了 Hibernate 所需的不同的鎖定級(jí)別:LockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ;

Hibernate與jdbc有何聯(lián)系?與Spring有何聯(lián)系?

1.hibernate是jdbc的輕量級(jí)封裝,包括jdbc的與數(shù)據(jù)庫(kù)的連接(用hibernate,property的配置文件實(shí)現(xiàn)當(dāng)然本質(zhì)是封裝了jdbc的formame),和查詢,刪除等代碼,都用面向?qū)ο蟮乃枷胗么a聯(lián)系起來(lái),hibernate通過(guò)hbm配置文件把po類的字段和數(shù)據(jù)庫(kù)的關(guān)聯(lián)起來(lái)比如數(shù)據(jù)庫(kù)的id,在 po 類中就是 pravite Long id; public Long getId() ;public setId(Long id);然后hql語(yǔ)句也是面向?qū)ο蟮?它的查詢語(yǔ)句不是查詢數(shù)據(jù)庫(kù)而是查詢類,這些實(shí)現(xiàn)的就是xml文件,其實(shí)hibernate=封裝的jdbc+xml文件.
2.hibernate中一些對(duì)象可以給Spring來(lái)管理,讓Spring容器來(lái)創(chuàng)建hibernate中一些對(duì)象實(shí)例化.hibernate本來(lái)是對(duì)數(shù)據(jù)庫(kù)的一些操作,放在Dao層,而Spring給業(yè)務(wù)層的方法定義了事務(wù),業(yè)務(wù)層調(diào)用Dao層的方法,很好的將HIbernate的操作也加入到事務(wù)中來(lái)了.

Hibernate3 種狀態(tài)如何轉(zhuǎn)換色冀?

當(dāng)對(duì)象由瞬時(shí)狀態(tài)(Transient)一 save()時(shí),就變成了持久化狀態(tài)柱嫌。
當(dāng)我們?cè)?Session 里存儲(chǔ)對(duì)象的時(shí)候呐伞,實(shí)際是在 Session 的 Map 里存了一份,
也就是它的緩存里放了一份慎式,然后伶氢,又到數(shù)據(jù)庫(kù)里存了一份,在緩存里這一份叫持
久對(duì)象(Persistent)瘪吏。
Session 一 Close()了癣防,它的緩存也都關(guān)閉了,整個(gè) Session 也就失效了掌眠,
這個(gè)時(shí)候蕾盯,這個(gè)對(duì)象變成了游離狀態(tài)(Detached),但數(shù)據(jù)庫(kù)中還是存在的蓝丙。
當(dāng)游離狀態(tài)(Detached)update()時(shí)级遭,又變?yōu)榱顺志脿顟B(tài)(Persistent)。
當(dāng)持久狀態(tài)(Persistent)delete()時(shí)渺尘,又變?yōu)榱怂矔r(shí)狀態(tài)(Transient),
此時(shí)挫鸽,數(shù)據(jù)庫(kù)中沒(méi)有與之對(duì)應(yīng)的記錄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸥跟,一起剝皮案震驚了整個(gè)濱河市丢郊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌医咨,老刑警劉巖枫匾,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拟淮,居然都是意外死亡干茉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門很泊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)角虫,“玉大人,你說(shuō)我怎么就攤上這事撑蚌∩弦#” “怎么了搏屑?”我有些...
    開(kāi)封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵争涌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我辣恋,道長(zhǎng)亮垫,這世上最難降的妖魔是什么模软? 我笑而不...
    開(kāi)封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮饮潦,結(jié)果婚禮上燃异,老公的妹妹穿的比我還像新娘。我一直安慰自己继蜡,他們只是感情好回俐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著稀并,像睡著了一般仅颇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碘举,一...
    開(kāi)封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天忘瓦,我揣著相機(jī)與錄音,去河邊找鬼引颈。 笑死耕皮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蝙场。 我是一名探鬼主播凌停,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼售滤!你這毒婦竟也來(lái)了苦锨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤趴泌,失蹤者是張志新(化名)和其女友劉穎舟舒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗜憔,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秃励,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吉捶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夺鲜。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖呐舔,靈堂內(nèi)的尸體忽然破棺而出币励,到底是詐尸還是另有隱情,我是刑警寧澤珊拼,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布食呻,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏仅胞。R本人自食惡果不足惜每辟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望干旧。 院中可真熱鬧渠欺,春花似錦、人聲如沸椎眯。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)编整。三九已至捐名,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闹击,已是汗流浹背镶蹋。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赏半,地道東北人贺归。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像断箫,于是被迫代替她去往敵國(guó)和親拂酣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容