jsp靜態包含和動態包含


JSP中有兩種包含:

靜態包含:<%@ include file="被包含頁面"%>

動態包含:<jsp:include page="被包含頁面" flush="true">

它們有什么區別,都知道,JSP在WEB服務器中都要轉換成一個java文件,java文件再編譯成一個class文件。當請求JSP頁面的時候,實際上運行的是這個class文件。

從這個方面來說:

靜態包含發生在:JSP---->java文件階段。動態包含發生在:執行class文件階段。動態加入。

靜態包含:只生成一個java文件,動態包含:生成多個class文件。

值得慶幸的是無論是動態包含還是靜態包含,其request對象都是相同的。也就是同一個request對象。

 

什么都沒例子來的實在:

index.jsp頁面:靜態和動態包含其他頁面。

主要代碼:

靜態包含頁面:
<%@include file="static.jsp" %><br>
動態包含頁面
<jsp:include page="dynamic.jsp" flush="true"/>


static.jsp被靜態包含的頁面。

dynamic被動態包含的頁面。

經過編譯以后生成的效果:

 

打開index_jsp.java

可以看到被靜態包含的頁面中的內容全部包含在了里面。而被動態包含的頁面使用了:

org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "dynamic.jsp", out, true);

而被動態包含的頁面,生成了一個新的java文件。


再看代碼:為什么說動態包含和靜態包含的request是相同的,靜態被包含頁面和包含它的頁面共享request是毋庸置疑的,而動態包含通過上面一行代碼也就一目了然了。其實這些jsp組合的過程是一個請求轉發的過程,自然也使用同一個request對象了。


---------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM