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