理解JSP中的include(二):jsp-include測試
來源:互聯網
上載者:User
include|js 第一個例子:
file1:
<%
String str = "aaaaa";
%>
<jsp:include page="jsp-include-slave.jsp" />
<%=str%>
file2:
<%
str = str + "bbbbb";
%>
結果:
訪問file1時出錯,提示file2中無法解析變數str。
分析:
在請求file1時,tomcat首先將兩個jsp檔案都轉換為servlet(.java)檔案。然後試圖將兩者編譯為.class檔案,這時,file1正常通過編譯;file2卻無法通過編譯。
結論:
與include-file指令將兩個檔案合并為一個servlet檔案進行編譯執行的方式不同,jsp-include要求兩個檔案相對獨立、完整。
第二個例子:
file1:
<%@ page contentType="text/html;charset=GBK" %>
<%
request.setAttribute("str","aaaaaaaaaaaaaaaa");
%>
<jsp:include page="jsp-include-slave.jsp" />
file2:
<%@ page contentType="text/html;charset=GBK" %>
<%
String str = (String) request.getAttribute("str");
out.println(str);
%>
結果:
aaaaaaaaaaaaaaaa
分析:
由於兩個頁面相對獨立,可以在其間傳遞請求。即:當請求file1時,file1將自動地請求file2。
結論:
使用jsp-include的兩個頁面是一種請求關係,而不是內含項目關聯性。這與include-file不同。
第三個例子:
file1:
<%@ page contentType="text/html;charset=GBK" %>
<%
request.setAttribute("str","aaaaaaaaaaaaaaaa");
%>
<jsp:include page="jsp-include-slave.jsp" />
<br>
<%
String str = (String) request.getAttribute("str");
out.println(str);
%>
file2:
<%@ page contentType="text/html;charset=GBK" %>
<%
String str = (String) request.getAttribute("str");
request.setAttribute("str",str+"bbbbbbbbbbbbbbb");
%>
結果:
aaaaaaaaaaaaaaaabbbbbbbbbbbbbbb
結論:
兩個頁面的請求關係是雙向的。