1. 程式人生 > >JAVAEE企業級應用開發淺談之MVC 中的V-VIEW視圖

JAVAEE企業級應用開發淺談之MVC 中的V-VIEW視圖

插入 第一次 開發 優點 就會 mil 是否 javaee 方便

Step1.情景概要

Hello,小夥伴們,好久不見,之前跟大家分享了三層架構與MVC思想,相信大家對於這兩塊內容有了相對清晰的個人認識了,既然我們講到了MVC,這裏我們接著這塊內容繼續往下深入,今天我們來看看MVC 中的V-VIEW 即我們所說的視圖層。

Step2.視圖技術

對於我們WEB開發人員來說,視圖的概念應該都不會很陌生了,我們在瀏覽網頁時見到的各種形式的頁面內容,背後都離不開我們所用的視圖技術,對於JAVA Web 開發人員來講,頁面展示實際上就是模板+數據=頁面內容,所有的web頁面基本離不開這兩點,而我們常用的視圖表現層技術不考慮這種H5頁面的話,目前市面上用的比較多的基本上是JSP、Freemarker,或者Velocity,對於這三種常見的視圖表現層技術,這裏先來說說JSP。

Step3.JSP概念與應用場景

JSP(java server page ),故名思議,即在服務器端執行的頁面,其實質為一個簡化的servlet 它是在傳統的網頁HTML文件中插入Java程序段和JSP標記,從而形成JSP文件,後綴名為(*.jsp)。說了這麽多實際上就是在HTML基礎上加入JAVA 代碼,運行在Tomcat(servlet)容器中的頁面,最終項目發布後通過瀏覽器訪問該頁面後在瀏覽器輸出的內容就是html ,是不是很簡單呢。
這裏對於JSP ,概念中提到JSP 實質上就是Servlet ,只是JSP的出現解決了Servlet 的一個痛點問題,就是Servlet 頁面內容輸出是相對麻煩,特別是涉及到復雜的頁面樣式控制與JS 時,這時Servlet 就相對變的心有余而力不足了哦,這時JSP的出現,解決了Serlvet 的這一痛點問題,即:JSP 作為視圖展示層顯示頁面內容更加方便!那說到這,JSP既然是Servlet ,那JSP 究竟是怎麽執行的呢?

Step4.JSP執行過程剖析

這裏在分析JSP 原理前,先來看下Serlvet 內部執行原理

  1. 客戶端通過HTTP提出請求.
  2. Web服務器接收該請求並將其發給servlet。如果這個servlet尚未被加載,Web服務器將把它加載到Java虛擬機並且執行它。
  3. servlet將接收該HTTP請求並執行某種處理。
  4. servlet將向Web服務器返回應答。
  5. Web服務器將從servlet收到的應答發送給客戶端。


運行簡圖如下:

技術分享圖片
看到這,大家應該對Servlet 執行過程一目了然了吧,然後我們繼續往下看JSP 的運行原理

技術分享圖片

服務器具體是如何做到的?

  1. 用戶通過瀏覽器發送請求
  2. tomcat服務器收到*.jsp請求,會到org.apache.jasper.servlet.JspServlet處理,(tomcat web.xml) 裏有對應處理jsp 請求具體配置


技術分享圖片
test01.jsp頁面未被訪問時,查看tomcat 下work 目錄 截圖如下:

技術分享圖片

當JSP頁面第一次被請求時,JSP引擎會將JSP原始文件轉換成Servlet源代碼,然後調用Java編譯器,編譯成Servlet,並在Servlet引擎中執行。當再次有請求的時候,JSP引擎會見差異編譯好的JSP是否比原來的JSP原始文件要新,如果是,運行Servlet;如果不是,表示文件已經更新的了,就會從新執行轉換和編譯的過程。
test01.jsp訪問成功後進入文件再次查看
技術分享圖片

查看目錄下具體生成的文件

技術分享圖片

簡要查看生成的 test01_jsp.java 文件內容

查看tomcat 源碼,查看HttpJspbase到底是什麽???

技術分享圖片

至此,可以發現 HttpJspBase 就是繼承了HttpServlet!!!
所以,到現在為止,我們可以這樣理解,可以把jsp 看做一個servlet來對待!!!
既然jsp 就是一個servlet ,為何還要使用jsp?

我們在使用servlet 時,大家應該能夠體會到在使用servlet 向瀏覽器輸出頁面內容時,並沒有那麽容易,同時當servlet 中涉及到的邏輯很復雜的時候,既要處理業務邏輯,又要控制頁面數據的顯示形式,這時候僅僅使用servlet來完成這些功能理論上可以實現,但對於項目的後期維護來說,工程量可能就是巨大的,於是業界就催生出了jsp(當然還有其他的技術 .net,php等)的技術,通過使用jsp技術,我們可以結合servlet ,將要顯示的數據通過jsp 來進行展現,總結來說就是:

Servlet:
優點:邏輯處理方便
缺點:頁面表現麻煩
Jsp:
優點:頁面表現方便
缺點:邏輯處理麻煩

所以要互補使用.一般項目采用:jsp+servlet+javabean 開發方式進行項目開發哦
好了,說到這,相信大家對JSP 視圖展示層技術有了很清晰的認識,那另外的Velocity同樣作為視圖層技術又是怎麽實現與使用的呢,哈哈,且聽下次與大家分享。

JAVAEE企業級應用開發淺談之MVC 中的V-VIEW視圖