J2EE——Jsp的學習

來源:互聯網
上載者:User

         《點擊查看原文》

 

        JSP(Java  Server Page)Java服務端網頁,是一種動態網頁技術,這和.NET中的ASP的功能是一樣的。JSP是由sun規定的一套標準一套規範,也是J2EE的13規範之一。說一句不太正確的話“JSP是對HTML的一種升級,一種擴充,即由靜態——>動態”。

 

          一,好,簡單瞭解JSP概念以後,我們來看看JSP的原理和本質:


                1,先看一個執行個體,我們在訪問首頁這個Index.jsp時,程式的執行順序:



             2,由上邊這個執行個體得出的JSP的原理和本質:

                上例中的index_jsp.class類繼承了HttpJspBase,而HttpJspBase繼承了HttpServlet,所以JSP本質就是一個Servlet,和Servlet完全相同。Jsp有三個階段:翻譯(一次),編譯(一次),運行(多次)。這也就說明了,為什麼我們第一次訪問Jsp頁面的時候啟動並執行比較慢,而以後訪問速度都非常快的原因。但是兩者是有很大的區別的:JSP提取資料做頁面展示,也就是所謂的View(展示層),而Servlet主要完成商務邏輯處理和資源跳轉,也就是所謂的Controller(控制層)。

 


          二,既然是J2EE的13規範之一,那麼JSP有哪些規定的基礎文法呢。



              這幾個都是需要我們來來遵循的規範,而其中九大內建對象尤其非常的重要,下邊我簡單介紹一下,這幾塊的知識點:


          1,scriptlet(小指令碼):就是在jsp檔案中使用<% %>,出現在該符號中的Java程式翻譯之後會被放在Servlet的Service方法中。也就是說這裡邊可以放我們想要知識的java程式。


          2,declaration(聲明):就是在jsp檔案中使用<%。  %>出現在該符號內的java程式翻譯之後會被存放在和Servlet的service方法並列的位置上。所以可以在該符號內聲明靜態變數、靜態方法、靜態代碼塊、執行個體代碼塊、執行個體變數、執行個體方法。


          3,expression(運算式):就是在jsp檔案中使用<%= %>,相當於out.print();,一般需要我們列印變數是需要在這裡,因為JSP裡邊的全部是字串。


          4,指令(directive):為JSP引擎而設計的,它們並不直接產生任何可見輸出,而只是告訴引擎如何處理JSP頁面中的其餘部分,例如一些編碼方式,回應程式式等。

           a,最常見的page指令<%@page  %>: import屬性(翻譯產生java語言中的import語句) <%@page import=”java.util.Date,java.util.ArrayList”%> contentType屬性(指定JSP頁面響應內容類型) <%@page contentType=”text/html”%> pageEncoding屬性(指定JSP頁面響應的頁面字元編碼) <%@page pageEncoding=”GB18030”%> session屬性(指定當前JSP頁面是否可以使用session這個內建對象) <%@page session=”false”%> session內建對象不可用 <%@page session=”true”%> session內建對象可用(預設的) errorPage屬性(指定當前JSP頁面發生錯誤之後跳轉的資源路徑) isErrorPage屬性(指定當前JSP頁面是一個錯誤頁面,這樣才能使用內建對象exception) isELIgnored屬性指定當前頁面中如果有EL運算式是否忽略,true表示忽略,false表示不忽略

 

         b,include指令<%@include  %>:

      include指令表示靜態包含,例如在a.jsp中編寫了<%@include file=”b.jsp”%>,就表示將a.jsp翻譯之後的java來源程式和b.jsp翻譯產生的java來源程式合并在一起,然後將其編譯產生一個.class檔案。我們通常採用這種方式做到頁面的重複使用。有點類似.NET中的主版頁面。

        

          c,taglib指令 <%@taglib%>:

               為了讓JSP看起來更加的專業(只做頁面展示),減少jsp頁面中java代碼的數量,我們引入了標籤庫。這裡的標籤庫可以是JSTL函數庫,也可以是我們自己編寫的。關於JSTL參考JSTL百度科百。

 

         5,動作(Action)

             a,forward動作:

        <jsp:forward page=”/2.jsp” />

         轉寄:等同Servlet中

        request.getRequestDispatcher(“/2.jsp”).forward(req,resp)方法。


    b,include動作(注意和include指令的對比,一個是靜態包含,一個是動態包含)  

   <jsp:includepage="/b.jsp"></jsp:include>

   include動作表示動態包含,假如在a.jsp頁面中編寫了以上代碼,運行原理是將a.jsp檔案 翻譯成java來源程式並且將其編譯產生a.class檔案,將b.jsp檔案翻譯產生java來源程式,編譯產生b.class檔案,然後通過a.class去動態包含b.class。


  c,useBean、setProperty、getProperty動作

 <useBean id=”c” class=”完整類名”

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.