<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                JSP的主要工作就是把頁面模板與數據給裝配起來,變成HTML發送給瀏覽器 ## 黑暗歲月 在Web編程才誕生的時候,大家只能使用Perl和C語言等以CGI的方式來輸出HTML 所謂裝配其實就是字符串拼接。 ## 服務器端動態頁面 1996年的微軟退出了ASP(Active Server Page),它可以支持在HTML里面嵌入代碼。 可以先用可視化編輯器(Dreamweaver)把界面創建好,然后再塞入代碼。 ![](http://p8a6vmhkm.bkt.clouddn.com/picgo20180815141512.png?picgo) 頁面看上去就是一個HTML靜態文本,被"<%%>"包裹的就是代碼了,裝配工需要運行他們,把產生的數據嵌入到HTML中 SUN公司推出了JSP(Java Server Pages) JSP本質上就是一個模板,代碼與HTML混雜在一起,沒有美感。 ## 標簽庫 后來推出了MVC設計模式,可以把展示和邏輯分開,JSP自然就是視圖 但是界面上顯示的邏輯還是必不可少,像分支、循環的控制語句不可或缺,所以可以做一層封裝,也就是JSTL(JSP Standard Tag Library) ![](http://p8a6vmhkm.bkt.clouddn.com/picgo20180815141916.png?picgo) <c: if> , <c:forEach> 就是標簽了,本質上都是JAVA類,可以接收到傳遞過來的參數,進行計算,輸出HTML ## 模板引擎 依然有人為了省事往JSP中寫入大量的代碼。 有一天,Java 世界來了兩個新家伙,一個叫 Freemaker, 一個叫 Velocity, * 這兩個新裝配工與JSP差不多,但是語法受限制,JSP可以嵌入任何JAVA語句,而Freemaker,Velocity只是為了頁面展示用的,想在里面編寫復雜的業務邏輯是根本不可能的。 ![](http://p8a6vmhkm.bkt.clouddn.com/picgo20180815142148.png?picgo) * 可以脫離Web 環境來使用,不像JSP必須有Tomcat等Web 容器的支持。 * 還可以做動態頁面的靜態化,例如說有些頁面就是把數據庫的數據展示出來, 而數據變化頻率很低, 那他倆就可以事先讀取數據庫, 把頁面的數據生成了,緩存在那里, 等到用戶使用時可以直接返回。 ## JavaScript 后來JSP頁面裝配起來更簡單了, 引用的JS文件和css增多了。 因為很多與界面相關的東西都挪到了JavaScript和CSS去了。 JavaScript可以從瀏覽器端發出異步的HTTP調用,基于此發展了很多的JQuery的框架,可以靈活的在瀏覽器中操作界面。 后面服務器端的View越來越少,很多從瀏覽器發過來的HTTP個會到JSP中進行模板和數據的裝配,也不會有HTML的返回。 這些HTTP請求調用的都是JAVA接口,這些Java 代碼直接把JSON數據返回給瀏覽器了。 最新式的頁面模板竟然是一個靜態的HTML文件 ![](http://p8a6vmhkm.bkt.clouddn.com/picgo20180815143037.png?picgo) 這個模板擴展了HTML屬性,這 ng-controller="StuController" 是一個js函數,也是MVC中控制器 這個 javascript 函數, 它通過 http 調用了服務器端的接口 "/students" , 然后把返回的數據直接放到了 students 里邊。 ![](http://p8a6vmhkm.bkt.clouddn.com/picgo20180815143203.png?picgo) JavaScript在瀏覽器里面實現了MVC。StuController函數是控制器,students是模型(通過HTTP調用從服務器端獲得),視圖模板就是靜態的HTML,然后在瀏覽器中把模板和數據裝配起來,形成了HTML 現在前后端分離了,后端只負責提供接口以及頁面模板,由JavaScript在瀏覽器直接讀到頁面模板和JSON以后,在瀏覽器中進行裝配。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看