精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

細說MVC框架的幾大困惑

開發 后端
本篇文章主要生動的介紹了MVC框架,Struts2,Spring,Hibernate。似乎這些框架成為了一個人是否精通Java,是否會寫J2EE程序的唯一事實標準和找工作的必備基礎

現在許許多多的初學者和程序員,都在趨之若鶩地學習Web開發的寶典級框架:Struts2,Spring,Hibernate。似乎這些框架成為了一個人是否精通Java,是否會寫J2EE程序的***事實標準和找工作的必備基礎。

然而,如果在面試的時候問這些程序員,你們為什么要學習這些框架?這些框架的本質到底是什么?似乎很少很少有人能夠給我非常滿意的答復。因為他們都在為了學習而學習,為了工作而學習,而不是在真正去深入了解一個框架。其實所有的人都應該思考這樣的問題:為什么要學習框架?框架到底給我帶來了什么?接下來,我們以登錄作為一個最簡單的例子,來看看不同的年代,我們是怎么寫Web程序的

在很多年前,我們這么寫程序的

 

很多年前,那是一個貧苦的年代,如果我們要使用Java在網頁上做一些動態的交互功能。很多人會告訴你一個技術,叫做JSP。在我還對Java非常困惑的時候,就有人告訴我,JSP是個好東西,它可以在HTML代碼里面寫Java代碼來完成邏輯。

 

Html代碼

 

  1. <%     
  2.      String name = request.getParameter("name");     
  3.      String password = request.getParameter("password");     
  4.     
  5.      UserHandler userHandler = new UserHandler();     
  6.      if(userHandler.authenticate(name, password)) {     
  7. %>    
  8. <p>恭喜你,登錄成功</p>    
  9. <%     
  10.       } else {     
  11. %>    
  12. <p>對不起,登錄失敗</p>    
  13. <%     
  14.       }     
  15. %>   

作為一張JSP,它可以接收從別的JSP發送過來的登錄請求,并進行處理。這樣,我們不需要任何額外的配置文件,也不需要任何框架的幫忙,就能完成邏輯。

#p#

后來,我們放棄了在頁面上寫邏輯

 

后來,程序寫得越來越多,我們發現,這種在HTML代碼中編寫Java代碼來完成邏輯的方式存在著不少問題:

1. Java代碼由于混雜在一個HTML環境中而顯得混亂不堪,可讀性非常差。一個JSP文件有時候會變成幾十K,甚至上百K。要找一段邏輯,經常無法定位。

2. 編寫代碼時非常困惑,不知道代碼到底應該寫在哪里,也不知道別人是不是已經曾經實現過類似的功能,到哪里去引用。

3. 突然之間,某個需求發生了變化。于是,每個人蒙頭開始全程替換,還要小心翼翼的,生怕把別人的邏輯改了。

4. 邏輯處理程序需要自己來維護生命周期,對于類似數據庫事務、日志等眾多模塊無法統一支持。

在這個時候,如果有一個產品,它能夠將頁面上的那些Java代碼抽取出來,讓頁面上盡量少出現Java代碼,該有多好。于是許多人開始使用servlet來處理那些業務邏輯。

 

 

Java代碼

 

 

  1. public class LoginServlet extends HttpServlet {     
  2.     
  3.     /* (non-Javadoc)    
  4.      * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)    
  5.      */    
  6.     @Override    
  7.     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {     
  8.         String message = null;     
  9.         RequestDispatcher dispatcher = req.getRequestDispatcher("/result.jsp");     
  10.         String name = req.getParameter("name");     
  11.         String password = req.getParameter("password");     
  12.              
  13.         UserHandler userHandler = new UserHandler();     
  14.         if(userHandler.authenticate(name, password)) {     
  15.             message = "恭喜你,登錄成功";     
  16.         } else {     
  17.             message = "對不起,登錄失敗";     
  18.         }     
  19.              
  20.         req.setAttribute("message", message);     
  21.         dispatcher.forward(req, resp);     
  22.     }     
  23. }    

在這里,我們需要在web.xml中為這個servlet配置url的請求關系。

 

Xml代碼

 

  1. <servlet>    
  2.   <servlet-name>Login</servlet-name>    
  3.     <servlet-class>    
  4.       com.demo2do.servlet.LoginServlet     
  5.   </servlet-class>    
  6. </servlet>    
  7. <servlet-mapping>    
  8.   <servlet-name>Login</servlet-name>    
  9.   <url-pattern>    
  10.     /Login     
  11.   </url-pattern>    
  12. </servlet-mapping>   

代碼重構到這里,我們發現,其實我們的工作量本身并沒有減少,只是代碼從JSP移動到了Servlet,使得整個流程看上去稍微清楚了一些。然而,為了這么點干凈,我們付出的代價是什么?為每個servlet都在web.xml里面去做一個url的請求配置!

#p#

再后來,出現框架

 

時代進一步發展,人們發現簡單的JSP和Servlet已經很難滿足人們懶惰的要求了。于是,人們開始試圖總結一些公用的Java類,來解決Web開發過程中碰到的問題。這時,橫空出世了一個框架,叫做struts。它非常先進地實現了MVC模式,成為了廣大程序員的福音。

struts的代碼示例我就不貼了,網上隨便搜搜你可以發現一堆一堆的。在一定程度上,struts能夠解決web開發中的職責分配問題,使得顯示與邏輯分開。不過在很長一段時間內,使用struts的程序員往往無法分別我們到底需要web框架幫我們做什么,我們到底需要它完成點什么功能?

#p#

我們到底要什么

 

在回顧了我們寫代碼的歷史之后,我們回過頭來看看,我們到底要什么?

無論是使用JSP,還是使用Struts1,或是Struts2,我們至少都需要一些必須的元素(如果沒有這些元素,或許我還真不知道這個程序會寫成什么樣子):

1. 數據

在這個例子中,就是name和password。他們共同構成了程序的核心載體。事實上,我們往往會有一個User類來封裝name和password,這樣會使得我們的程序更加OO。無論怎么說,數據會穿插在這個程序的各處,成為程序運行的核心。

2. 頁面展示

在這個例子中,就是login.jsp。沒有這個頁面,一切的請求、驗證和錯誤展示也無從談起。在頁面上,我們需要利用HTML,把我們需要展現的數據都呈現出來。同時我們也需要完成一定的頁面邏輯,例如,錯誤展示,分支判斷等等。

3. 處理具體業務的場所

在這里,不同階段,處理具體業務的場所就不太一樣。原來用JSP和Servlet,后來用Struts1或者Struts2的Action。

上面的這些必須出現的元素,在不同的年代,被賦予了不同的表現形式,有的受到時代的束縛,其表現形式非常落后,有的已經不再使用。但是撥開這些外在的表現形式,我們就可以發現,這不就是我們已經熟門熟路的MVC嘛?

數據 ———— Model

頁面展示 ———— View

處理具體業務的場所 ———— Control

所以,框架不重要,概念是王道。只要能夠深刻理解MVC的概念,框架對你來說,只是一個jar包而已。

MVC的概念其實就那么簡單,這些概念其實早已深入我們的內心,而我們所缺乏的是將其本質挖掘出來。我們來看看下面這幅圖,這是一副流行了很多年的講述MVC模型的圖: 

 

 

在這幅圖中,MVC三個框框各司其職,結構清晰明朗。不過我覺得這幅圖忽略了一個問題,就是數據是動的,數據在View和Control層一旦動起來,就會產生許多的問題:

1. 數據從View層傳遞到Control層,如何使得一個個扁平的字符串,轉化成一個個生龍活虎的Java對象

2. 數據從View層傳遞到Control層,如何方便的進行數據格式和內容的校驗?

3. 數據從Control層傳遞到View層,一個個生龍活虎的Java對象,又如何在頁面上以各種各樣的形式展現出來

4. 如果你試圖將數據請求從View層發送到Control層,你如何才能知道你要調用的究竟是哪個類,哪個方法?一個Http的請求,又如何與Control層的Java代碼建立起關系來?

除此之外,Control層似乎也沒有想象中的那么簡單,因為它作為一個控制器,至少還需要處理以下的問題:

1. 作為調用邏輯處理程序的facade門面,如果邏輯處理程序發生了異常,我們該如何處理?

2. 對于邏輯處理的結果,我們需要做怎么樣的處理才能滿足豐富的前臺展示需要?

這一個又一個問題的提出,都基于對MVC的基本概念的挖掘。所以,這些問題都需要我們在寫程序的時候去一一解決。說到這里,這篇文章開頭所提的問題應該可以有答案了:框架是為了解決一個又一個在Web開發中所遇到的問題而誕生的。不同的框架,都是為了解決不同的問題,但是對于程序員而言,他們只是jar包而已。框架的優缺點的評論,也完全取決于其對問題解決程度和解決方式的優雅性的評論。所以,千萬不要為了學習框架而學習框架,而是要為了解決問題而學習框架,這才是一個程序員的正確學習之道。

【編輯推薦】

 

責任編輯:金賀 來源: JavaEye博客
相關推薦

2018-08-07 15:13:44

小程序微信品牌

2009-12-07 18:06:46

WCF框架

2010-01-08 12:03:42

ibmdwREST

2012-10-22 16:55:48

JavaMVC

2009-02-02 09:04:52

MVC框架Java

2017-11-23 17:21:31

Yii框架IntelYii框架深度剖析

2009-06-19 11:43:59

Spring MVC框

2009-04-24 09:43:09

.NETASP.NET框架

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-06-19 11:28:45

2009-02-02 09:08:38

MVC框架控制器CakePHP

2013-03-21 13:56:21

JavaScriptBackBone

2009-12-14 10:19:23

.NET Framew

2009-07-24 13:20:44

MVC框架ASP.NET

2010-06-23 15:44:03

ASP.NET MVC

2010-01-07 09:59:16

RESTMVC

2009-09-25 15:15:17

算法

2011-04-15 10:26:38

JavaMVC

2012-11-28 11:05:42

IBMdW

2009-07-22 10:09:59

ASP.NET MVC
點贊
收藏

51CTO技術棧公眾號

亚洲三级电影在线观看| 成人在线播放网址| 中文字幕乱妇无码av在线| 黄色a在线观看| 日韩久久视频| 欧美性videos高清精品| 久久久精品美女| 国产xxxxx视频| 黄色av网址在线| 另类天堂av| 亚洲电影免费观看高清| 中文字幕一区二区三区四区五区| 欧美 日韩 精品| 欧美激情15p| 亚洲曰韩产成在线| 91日韩在线视频| 少妇一级黄色片| 蜜桃精品在线| 国产亚洲va综合人人澡精品| 欧美亚洲第一页| 亚洲一区二区在线免费| 久久www人成免费看片中文| 一区二区三区在线| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲字幕在线观看| xxxx日本黄色| 欧美电影网站| 国产午夜亚洲精品羞羞网站| 亚洲伊人一本大道中文字幕| 手机av免费观看| 精品freesex老太交| 91九色最新地址| 欧美日韩国产免费一区二区三区| 日韩三级小视频| 欧洲精品一区| 日韩一二三四区| av影院在线播放| 亚洲成人一二三区| 欧美日韩精品亚洲精品| 尤物yw193can在线观看| 精品亚洲aⅴ乱码一区二区三区| 中文字幕v亚洲ⅴv天堂| 91亚洲免费视频| 国产视频一区二区| 国产精品1区2区3区在线观看| 久久影视电视剧免费网站| 亚洲视频第二页| 91精品xxx在线观看| 亚洲va天堂va国产va久| 国偷自产av一区二区三区小尤奈| www.av麻豆| 午夜精品偷拍| 亚洲精品一区中文| 日韩欧美黄色大片| 韩漫成人漫画| 亚洲精品国产精华液| 精品国产一区二区三区四区精华 | 亚洲www免费| 亚洲高清视频中文字幕| 免费av在线一区二区| 五月天婷婷导航| 欧美电影免费观看高清| 精品久久国产97色综合| 国产成人a亚洲精v品无码| av网站无病毒在线| 国产精品自拍av| 欧美一级视频在线观看| 亚洲一区bb| 亚洲综合免费视频| 在线精品一区| 一区二区三区亚洲| 日本免费一区二区三区| 亚洲综合免费视频| 久久99日本精品| 9.1国产丝袜在线观看| 你懂得在线观看| 精品日产乱码久久久久久仙踪林| 色婷婷综合久久久中文一区二区| 免费成人进口网站| 色视频在线看| 黄色日韩网站视频| 91精品久久久久久蜜桃| 亚洲精品一区二区二区| 亚洲精品资源| 欧美一区三区三区高中清蜜桃| 久久久黄色大片| 日本aⅴ精品一区二区三区| 欧美激情视频一区| 自拍偷拍第9页| 欧美在线观看天堂一区二区三区| 欧美大片欧美激情性色a∨久久| 精品视频一区二区在线观看| 亚洲经典一区| 国产一区二区激情| 久久久午夜精品福利内容| 综合亚洲色图| 欧美日韩国产经典色站一区二区三区 | 中文字幕免费精品一区| 2一3sex性hd| 久久裸体网站| 国内伊人久久久久久网站视频| 欧美人与性囗牲恔配| 999久久久免费精品国产| 国产+人+亚洲| 亚洲图片中文字幕| 高潮精品一区videoshd| 成人啪啪免费看| 日韩人妻精品中文字幕| 韩国一区二区视频| 欧美日韩在线一二三| 18videosex性欧美麻豆| 一本色道亚洲精品aⅴ| 一级做a爱视频| 欧美黄页在线免费观看| 欧洲生活片亚洲生活在线观看| av免费播放网址| 午夜欧美激情| 色综合久久久久久久久久久| 北条麻妃亚洲一区| 欧美日韩中出| 日韩欧美高清一区| 亚洲欧洲国产视频| 国产91精品入| 日韩电影中文字幕在线观看| 亚洲最大的黄色网| 最近中文字幕免费在线观看| 伊人成综合网| 国产成人av在线播放| 麻豆亚洲av熟女国产一区二| 一本一道久久综合狠狠老| 1769国内精品视频在线播放| a在线观看视频| 国产成人精品亚洲日本在线桃色| 色噜噜一区二区| 日韩专区在线| 亚洲视频网在线直播| 久久久无码中文字幕久...| 午夜在线激情影院| 图片区小说区区亚洲影院| 精品久久一二三| 波多野结衣久久精品| 国产真实久久| 亚洲精品网站在线播放gif| 欧美丰满艳妇bbwbbw| 久久精品国产77777蜜臀| 91九色蝌蚪国产| 成人影视在线播放| 亚洲人精品午夜| 超碰在线人人爱| 欧美经典一区| 精品国产一区二区三区久久久| 久久久精品视频在线| 狠狠色综合日日| 伊人久久av导航| 久久av影院| 日韩一区av在线| 一级黄色小视频| 成人成人成人在线视频| 欧美主播一区二区三区美女 久久精品人 | 国产成人自拍网| 久久精品无码中文字幕| 高清欧美性猛交xxxx黑人猛| 午夜精品久久久久久久白皮肤| 无码一区二区三区| 欧美国产成人精品| 大胆欧美熟妇xx| 欧美日韩国产网站| 亚洲福利视频久久| 伊人久久综合视频| 国产视频在线观看一区二区三区| 999在线免费视频| 68国产成人综合久久精品| 18成人免费观看网站下载| 欧美人与牲禽动交com | h视频在线免费| 欧美日韩视频在线第一区| 中文字幕1区2区| 在线播放日韩| 欧美日韩成人一区二区三区| 成人在线高清| 亚洲摸下面视频| 久久久99精品| 91丨九色porny丨蝌蚪| 性生活免费观看视频| 成人性生交大片免费看96| 日韩一区二区精品视频| 亚洲奶汁xxxx哺乳期| 一本大道久久a久久综合婷婷| 国产成人在线网址| 成人亚洲综合天堂| 91国产免费观看| 亚洲欧美精品久久| 久久久xxx| 色中文字幕在线观看| 日韩福利一区| 精品国产一区二区三区在线观看| www.亚洲天堂.com| segui88久久综合| 一区二区三区精品在线观看| 97香蕉碰碰人妻国产欧美| 日韩精品一级中文字幕精品视频免费观看 | 日本丰满少妇xxxx| 国产精区一区二区| 最新的欧美黄色| 国产99免费视频| 91麻豆高清视频| av中文字幕网址| 青青草综合网| 国产精品大陆在线观看| 少妇性bbb搡bbb爽爽爽欧美| 欧美日本在线一区| 久久艹免费视频| 26uuu精品一区二区 | 豆国产96在线|亚洲| 久久九九国产视频| 影音先锋中文字幕一区| 亚洲一区二区三区乱码| 日韩a级大片| 九九热99久久久国产盗摄| 国产三级第一页| 亚洲三级视频在线观看| 亚洲成人日韩在线| 国产成人综合在线| 国产一二三区av| 久久福利一区| 免费看黄在线看| 欧美日韩国产探花| 国产精品国产一区二区| av在线小说| 欧美成aaa人片免费看| 亚洲精品国产suv一区| 欧美日韩亚州综合| 日韩久久久久久久久久| 欧美日韩在线一区| 国产一卡二卡在线| 久久亚洲私人国产精品va媚药| 免费裸体美女网站| 91一区在线| 日韩视频精品| 国产精品久久久久久久久久久久久久久 | 色婷婷成人网| 欧美精品日韩三级| 求av网址在线观看| 精品国产污网站| 日韩色图在线观看| 亚洲成av人在线观看| 欧美精品久久久久性色| 亚洲欧美偷拍卡通变态| 国产色无码精品视频国产| 国产成人亚洲精品狼色在线| 色婷婷一区二区三区av免费看| 日韩国产欧美三级| 一本久道综合色婷婷五月| 香蕉久久久久久久av网站| 一区二区不卡在线观看| 小说区图片区色综合区| 免费av一区二区三区| 九九热精品视频在线观看| 欧美一区激情视频在线观看| 国产一区二区三区电影在线观看| 91九色精品视频| 精品久久久久久久久久岛国gif| 成人性生交大片免费看视频直播| 欧洲亚洲精品久久久久| 成人黄色影片在线| 美女国产精品久久久| 99久热re在线精品视频| 先锋欧美三级| 国产精品高潮粉嫩av| 外国成人毛片| 99re国产视频| 巨人精品**| 欧美日韩一区在线观看视频| 成人情趣视频网站| 久久久成人精品一区二区三区| 欧美另类亚洲| 精品中文字幕av| 日本不卡在线视频| 波多野结衣网页| www.亚洲精品| 日韩成人av免费| 久久久亚洲一区| www.18av.com| 国语精品一区| 美女福利视频在线| 国内欧美视频一区二区| 中国男女全黄大片| 91在线国内视频| 国产麻豆剧传媒精品国产| www.欧美.com| 九一在线免费观看| 99re热视频精品| 国产无遮挡在线观看| 一区二区三区在线观看欧美| 国产成人无码精品久在线观看| 在线观看免费亚洲| 亚洲成人久久精品| 一区二区三区 在线观看视| 永久免费网站在线| 国产精品黄页免费高清在线观看| 伊人久久大香| 国产精品视频公开费视频| 成人教育av| 91亚洲精品久久久| 亚州av一区| 经典三级在线视频| 毛片一区二区| 大尺度在线观看| 懂色av一区二区三区免费看| 被黑人猛躁10次高潮视频| 91老司机福利 在线| 中文字幕人妻一区二| 亚洲品质自拍视频网站| 91国产丝袜播放在线| 777xxx欧美| 国产露出视频在线观看| 夜夜嗨av色一区二区不卡| 女子免费在线观看视频www| 国产精品嫩草影院久久久| 国产欧美自拍一区| 美女在线免费视频| 免费看欧美女人艹b| 91制片厂毛片| 99久久久久久| 久草免费在线视频观看| 7878成人国产在线观看| 国产永久免费高清在线观看 | 亚洲第九十七页| 一区二区三区四区不卡在线| 亚洲图片欧美在线| 一区二区三区四区在线观看视频| 蜜桃av在线播放| 日韩女优人人人人射在线视频| 四虎4545www精品视频| 国产欧美一区二区三区不卡高清| 伊人久久大香线蕉综合四虎小说 | 国产高清成人在线| 2017亚洲天堂| 欧美午夜在线观看| 国产免费黄色录像| 中文字幕国产亚洲2019| 亚洲精品88| 欧美黄色直播| 亚洲一区二区免费看| 五月婷婷深爱五月| 国产精品一区二区在线播放| 亚洲色图日韩精品| 欧美视频三区在线播放| 国产午夜精品一区理论片| 国产成人精品久久二区二区| 欧洲亚洲一区二区三区| 99热自拍偷拍| 狠狠色狠狠色综合系列| 欧美人与性囗牲恔配| 欧洲生活片亚洲生活在线观看| 黄色影院在线播放| 国产精品成人播放| 成人亚洲一区二区| 91小视频网站| 综合欧美亚洲日本| 日韩精品――中文字幕| 亚洲精品一线二线三线无人区| 精精国产xxxx视频在线中文版 | 久久久福利影院| 亚洲综合色成人| 天天操天天操天天| 久久天天躁狠狠躁夜夜躁| 成人精品在线| 青青在线免费观看| 91香蕉国产在线观看软件| 中文字幕在线观看视频免费| xxx欧美精品| 国产 日韩 欧美 综合 一区| 浮妇高潮喷白浆视频| 国产欧美一区二区三区网站| 日韩黄色a级片| 亚洲欧美一区二区三区四区| 国产精品伦一区二区| 小泽玛利亚av在线| 99精品国产热久久91蜜凸| 中文字幕免费视频观看| 久久国产精品久久久久| 美女视频亚洲色图| 国产精品久久久毛片| 亚洲午夜精品17c| 精品人妻av一区二区三区| 亚州欧美日韩中文视频| 第一sis亚洲原创| 熟女人妻一区二区三区免费看| 日韩欧美999| av网址在线播放| 欧美第一黄网| 国产老肥熟一区二区三区| 毛片在线免费视频| 日韩亚洲精品电影| 天天躁日日躁成人字幕aⅴ| 成人综合久久网| 欧美视频一区二区三区…| 人人干在线视频| 欧美精品v日韩精品v国产精品|