国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

談?wù)凧AVA工程獅面試中經(jīng)常遇到的面試題目------什么是MVC設(shè)計(jì)模式

2019-11-15 00:13:06
字體:
供稿:網(wǎng)友
談?wù)?a href="http://m.survivalescaperooms.com/article.asp?typeid=160">java工程獅面試中經(jīng)常遇到的面試題目------什么是MVC設(shè)計(jì)模式

  作為一名java工程獅,大家肯定經(jīng)歷過很多面試,但每次幾乎都會(huì)被問到什么是MVC設(shè)計(jì)模式,你是怎么理解MVC的類似這樣的一系列關(guān)于MVC的問題。

【出現(xiàn)頻率】

【關(guān)鍵考點(diǎn)】

  • MVC的含義
  • MVC的結(jié)構(gòu) 

【考題分析】 

  在java Web開發(fā)中,存在兩種普遍的開發(fā)模式,通常成為模式1和模式2。模式1使用jsp+JavaBean技術(shù)將頁(yè)面顯示和業(yè)務(wù)邏輯分開,由JSP來實(shí)現(xiàn)頁(yè)面的顯示,JavaBean對(duì)象來保存數(shù)據(jù)和實(shí)現(xiàn)業(yè)務(wù)邏輯。客戶端直接向JSP發(fā)出請(qǐng)求,JSP做出相應(yīng)的響應(yīng),并調(diào)用JavaBean對(duì)象,所有的數(shù)據(jù)通過JavaBean來處理,然后再返回JSP,由JSP生成最后的返回結(jié)果,模型1的結(jié)構(gòu)圖如下所示:

        

在模型一中,JSP往往會(huì)嵌入控制請(qǐng)求流程的代碼和部分邏輯代碼,如果把這部分代碼提取出來,由一個(gè)單獨(dú)的角色來承擔(dān),該角色也就是控制器,則此時(shí)就構(gòu)成了 模型2,模型2就符合了MVC的設(shè)計(jì)模式,即模型--視圖--控制器Model--View--Controller)。

  MVC的架構(gòu)的Web程序被分割成若干邏輯部件,使得程序開發(fā)編程變的更加容易。它把對(duì)象按照功能的不同分割成3個(gè)部分,主要目的就是為了將各種對(duì)象的耦合度降到最低。被分割成的3個(gè)部分為:模型(Model),視圖(View),控制器(Controller)

  • 模型(Model):代表了應(yīng)用程序的數(shù)據(jù)和處理這些數(shù)據(jù)的規(guī)則。當(dāng)模型發(fā)生變化時(shí),它會(huì)通知視圖,并為視圖提供查詢模型相關(guān)狀態(tài)的能力。
  • 視圖(View):用來組織模型的內(nèi)容,它從模型中獲取數(shù)據(jù),然后將數(shù)據(jù)展現(xiàn)給客戶,該角色往往又JSP承擔(dān)。
  • 控制器(Controller):負(fù)責(zé)從客戶端接受請(qǐng)求,并把這些請(qǐng)求轉(zhuǎn)換為某種行為。這些行為往往又模型來實(shí)現(xiàn),這些行為完成以后,再選擇一個(gè)視圖來展現(xiàn)給客戶。   

  下面簡(jiǎn)單介紹一下最基礎(chǔ)的開發(fā)模式(JSP-Servlet)來構(gòu)建一個(gè)MVC架構(gòu)模式,后來的那些框架都是在此基礎(chǔ)上增加的,代替相應(yīng)的組件實(shí)現(xiàn)MVC的設(shè)計(jì)模式的。

(JSP-Servlet)開發(fā)中,由Servlet來充當(dāng)控制器的角色,它接受請(qǐng)求,根據(jù)請(qǐng)求信息的不同將它們分發(fā)給合適的JSP頁(yè)面來作為用戶的響應(yīng),同時(shí),Servlet還需要實(shí)例化一個(gè)JavaBean對(duì)象,JSP就可以通過使用JavaBean的相關(guān)標(biāo)簽(如<jsp:getPRoterty>)來的到JavaBean的數(shù)據(jù),結(jié)構(gòu)如下圖所示:

  采用模型2,可以將頁(yè)面的顯示,業(yè)務(wù)邏輯的處理和流程的控制很清晰的分離出來。JSP負(fù)責(zé)數(shù)據(jù)的顯示,JavaBean負(fù)責(zé)業(yè)務(wù)邏輯的處理,Servlet負(fù)責(zé)流程的控制。MVC模式使得Web應(yīng)用程序很容易擴(kuò)展和維護(hù),因?yàn)楦鱾€(gè)部件的功能不同,可以由不同的人進(jìn)行開發(fā)和維護(hù)。例如,前端攻城獅專門負(fù)責(zé)JSP頁(yè)面,充分發(fā)揮她們的美術(shù)和設(shè)計(jì)才能,后臺(tái)攻城獅負(fù)責(zé)業(yè)務(wù)邏輯的實(shí)現(xiàn)。

Struts1框架是如何體現(xiàn)MVC模式的

  雖然struts1現(xiàn)在基本由于使用不方便基本已被struts2所替代,但許多老的項(xiàng)目還是用struts1寫的,所以有必要對(duì)struts1的框架了解一下,畢竟它曾經(jīng)也馳騁疆場(chǎng)數(shù)載呢,現(xiàn)在依然在某些項(xiàng)目中還能看到它的身影。

  struts1的控制器(Controller)由ActionServlet、Action和struts-config.xml組成。ActionServlet是struts的入口,所有的請(qǐng)求都會(huì)通過它來處理,然后由它來決定相應(yīng)的Action來處理請(qǐng)求。Action代表了一次動(dòng)作,如用戶注冊(cè)、購(gòu)買商品等,開發(fā)者的業(yè)務(wù)邏輯代碼也會(huì)在這里添加。配置文件struts-config.xml是對(duì)整個(gè)struts的配置,包括ActionServlet應(yīng)該將請(qǐng)求轉(zhuǎn)發(fā)給那個(gè)Avtion,Action負(fù)責(zé)處理完成之后,又該由那個(gè)JSP文件作為響應(yīng)等。

  struts1的模型(Model)主要由ActionForm來實(shí)現(xiàn),它有一點(diǎn)類似于JavaBean,包含了若干可讀可寫的屬性,用于保存數(shù)據(jù),也有數(shù)據(jù)驗(yàn)證的功能。一般來說,一個(gè)Action會(huì)配備一個(gè)ActionForm。

  struts1的視圖(View)主要由JSP來實(shí)現(xiàn)。JSP顯示的數(shù)據(jù)可以來自ActionForm,也可以是Action保存在作用范圍(request,session,application)的數(shù)據(jù)。當(dāng)然,使用struts自帶的標(biāo)簽可以起到最大的簡(jiǎn)化作用。

  使用struts1開發(fā)Web應(yīng)用程序以后,開發(fā)者的思考方式需要做一下改變,Action、ActionForm和JSP是一個(gè)整體了,每一個(gè)HTTP請(qǐng)求都需要它們?nèi)邊f(xié)作來完成。JSP代表用戶可以看到的東西,ActionForm代表的是數(shù)據(jù),Action代表的是業(yè)務(wù)邏輯。下圖所示的是struts1的MVC各個(gè)組成部分,以及它們是如何一起協(xié)調(diào)工作的。

   

 以上就是struts1最核心的設(shè)計(jì)思想,開發(fā)人員大多數(shù)的時(shí)候只需要完成文件配置和Action,將大多數(shù)精力集中在Action中的業(yè)務(wù)邏輯實(shí)現(xiàn)上面。如果業(yè)務(wù)上有改動(dòng),只需要修改action即可,如果顯示上有變化,也只需要修改JSP,兩者實(shí)現(xiàn)了耦合,互不影響。下面這個(gè)圖大概講解一下Struts處理請(qǐng)求的過程和原理。

      


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙游县| 鹤峰县| 海原县| 长宁区| 澎湖县| 昔阳县| 彩票| 仪陇县| 内乡县| 泰安市| 桓台县| 共和县| 杭州市| 仙桃市| 昌都县| 鲜城| 凌源市| 武隆县| 宜良县| 扶风县| 礼泉县| 郓城县| 霍邱县| 贺州市| 连城县| 万荣县| 西藏| 碌曲县| 许昌县| 台湾省| 郯城县| 陆良县| 寿阳县| 阿鲁科尔沁旗| 门源| 镇沅| 宁波市| 稻城县| 吉林省| 仪陇县| 鸡泽县|