javaWeb中的Model1和Model2
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
一、傳統(tǒng)的Model1和Model2
? ? 在傳統(tǒng)的Model1中,Web由大量JSP和少量用于訪問數(shù)據(jù)庫的bean組成,jsp兼顧V層和C層的工作。
? ? 在傳統(tǒng)的Model2中,servlet負(fù)責(zé)處理用戶請求,調(diào)用更深層的javabean進行數(shù)據(jù)處理,然后將處理過的數(shù)據(jù)轉(zhuǎn)發(fā)給jsp視圖,視圖進行數(shù)據(jù)解析和顯示。
? ? ?
? ? 如圖,既然這樣,大家看到這里應(yīng)該能明顯地感受到轉(zhuǎn)發(fā)和重定向的區(qū)別了,它們是兩個世界的產(chǎn)物,為了嚴(yán)格區(qū)分,我可以這樣說(并不專業(yè)):轉(zhuǎn)發(fā)和重定向完全是兩個世界的產(chǎn)物。
? ? 轉(zhuǎn)發(fā):C層把M轉(zhuǎn)發(fā)給V層,V層進行渲染呈現(xiàn)(實際上JSP在服務(wù)器上也是一個Servlet,不懂百度)。轉(zhuǎn)發(fā)是服務(wù)器內(nèi)部的操作,與用戶八竿子打不著。
? ? 重定向:重定向是告訴用戶,你重新請求服務(wù)器資源吧,我不想返回一個JSP頁面給你。
?
????我想起了我做的第一個java online judge網(wǎng)站了,當(dāng)時全部使用JSP頁面完成相應(yīng)功能,要完成一些編譯工作都是調(diào)用一些簡單的java對象,甚至使用static方法,這不正是Model1嗎?因此,Model1是大多數(shù)入門者都能想到的java web處理方法吧,我相信大部分入門者都有在jsp里面調(diào)用過連接數(shù)據(jù)庫的經(jīng)歷!
? ? 在使用model1的你,應(yīng)該并沒有過多地想到過MVC的思想!
?
? ? 后來慢慢開始入門了,別人教了你分層的思想,什么dao,service,servlet,然后開始分層書寫,開始學(xué)習(xí)servlet3.0基于@WebServlet的注解,開始學(xué)習(xí)了JDBC,開始學(xué)習(xí)了JSP,然后看書了解了一點JSP的深層知識,然后開始寫一個簡單的有條理的JAVA WEB網(wǎng)站,恭喜啊!已經(jīng)開始深入學(xué)習(xí)Model2了呢!
? ? 學(xué)完model2之后,你就能夠初步理解MVC的真正思想了吧!
? ? 學(xué)完所謂的 Model2后,我理解了一下上面第一幅圖,這樣歸納:
????? ?JSP屬于View層,Servlet屬于Controller層,dao,service,entity屬于Model層,為什么后面的三個都是Model層?因為我理解的是后三個都是對數(shù)據(jù)進行處理java代碼,所以是model層!
?
二、web的MVC和早期的MVC思想
web是基于一種啥子模式?請求/響應(yīng)模式,是不是嘛?也就是說用戶不發(fā)送請求,視圖就不能什么自己?更新自己,是不是嘛?
而傳統(tǒng)的MVC程序,當(dāng)模型層數(shù)據(jù)發(fā)送改變時,可以通知模型層進行相應(yīng)的改變。
因此,web應(yīng)用的mvc思想與觀察者模式存在一定的相似之處,但又不完全一樣。
讀到這里,用戶只需要明白,傳統(tǒng)的MVC思想是不是就是web的MVC思想?不是嘛!web的CVM思想是在傳統(tǒng)的MCV思想之上改變了一定的結(jié)構(gòu)嘛!
(MCV MVC CVM CMV,順序應(yīng)該沒什么影響吧?)
轉(zhuǎn)載于:https://my.oschina.net/qkmc/blog/898985
總結(jié)
以上是生活随笔為你收集整理的javaWeb中的Model1和Model2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java开源项目整理
- 下一篇: TensorFlow------学习篇