jsp中靜態包含和動態包含的區別與聯繫

一、靜態包含指令<%@include file=“fileurl”%>

1、兩個jsp頁面的<%@page contentType=“text/html;charset=gbk”%>應該保持一致

2、不能通過fileurl向被包含的jsp頁面傳遞參數,因爲此靜態包含是發生在jsp頁面轉換爲servlet的轉換期間,此時的參數是服務器端設置的死的參數,完全沒有經過客戶端,這種參數是沒有意義的,如<%@include  file=“fileurl?user=admin”%>,而且此時會報錯。

3、包含的jsp頁面與被包含的jsp頁面共用一個request內置對象。

      比如說在客戶端訪問包含頁面時地址欄後面直接加上參數後傳遞,這種形式的傳參是客戶端送來的,兩個頁面都能夠訪問此參數。我們可以通過這兩個頁面合成的servlet中可以看到有傳遞的參數成爲servlet的成員變量。

4、包含的jsp頁面與被包含的jsp頁面最好沒有重複的html標籤。否則會發生覆蓋現象。

二、動態包含<jsp :include page=“a.jsp”/>與靜態包含<%@include  file=“fileurl”%>的區別

1.動態包含用的元素是page,而且有兩種形式。靜態包含用的是file,只有一種形式。

2.生成的文件不同,靜態的包含是將兩個jsp文件二合一,生成一個以包含頁面命名的servlet和class文件,動態包含的兩個jsp文件各自生成自己的servlet和class文件。

3. 傳參方式一:<jsp:include page=“a.jsp?param=123”/>時被包含的jsp頁面是可以訪問該參數的。

4. 傳參方式二:

            <jsp:include page=“a.jsp”>

                     <jsp:param name=“” value=“”>

                    <jsp:param name=“” value=“”>

           </ jsp:include >

5.在客戶端訪問包含頁面時地址欄後面直接加上參數後傳遞,這種形式的傳參是客戶端送來的,但是這兩個頁面的request對象不是同一個,因爲3已經說了包含的頁面可以向被包含的頁面傳遞參數,所以被包含的request對象含的參數個數應該大於等於包含頁面的參數個數的。所以它們各有各的request對象。而且被包含的jsp頁面可以訪問傳到包含頁面的參數。

6.動態包含只有在執行到它的時候才加載,所以它才叫動態包含。

發佈了91 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章