我們都知道在jsp(SUN企業級應用的首選)中include有兩種形式,分別是
<%@ include file=” ”%>
<jsp(SUN企業級應用的首選):include page=” ” flush=”true”/></P>
前者是指令元素、後者是行為元素。具體它們將在何處用?如何用及它們有什麼區別?這應該是很多人看到它都會想到的問題。下面一起來看看吧。</P>
通常當應用程序中所有的頁面的某些部分(例如標題、頁腳和導航欄)都相同的時候,我們就可以考慮用include。具體在哪些時候用<%@ include file=” ”%>,哪些時候用<jsp(SUN企業級應用的首選):include page=” ” flush=”true”/>.這種形式。首先要明白的是它們之間的區別。只有了解了它們用法的不同才理解該在何時去用以及如何選擇。
<%@ include file=” ”%>,jsp(SUN企業級應用的首選)的include指令元素讀入指定頁面的內容。並把這些內容和原來的頁面融合到一起。(這個過程是在翻譯階段:也就是jsp(SUN企業級應用的首選)被轉化成servlet的階段進行的。</P>
這裡對翻譯階段進行一下說明:我們知道,jsp(SUN企業級應用的首選)頁面不能原封不動地被傳送給浏覽器,所有的jsp(SUN企業級應用的首選)元素都必須首先由服務器進行處理。這是通過將jsp(SUN企業級應用的首選)頁面轉達化成servlet,然後執行這個servlet來完成的。服務器需要一個jsp(SUN企業級應用的首選)容器來處理jsp(SUN企業級應用的首選)頁面。jsp(SUN企業級應用的首選)容器通常以servlet的形式來實現,這個servlet經過配置,可以處理對jsp(SUN企業級應用的首選)頁面的所有請求。</P>
jsp(SUN企業級應用的首選)容器負責將jsp(SUN企業級應用的首選)頁面轉化成servlet(稱為jsp(SUN企業級應用的首選)頁面實現類?jsp(SUN企業級應用的首選) Page implementation class),並編譯這個servlet。這兩步就構成了翻譯階段.</P>
由此我們就會知道:jsp(SUN企業級應用的首選)頁面是把include指令元素所指定的頁面的實際內容(也就是代碼段)加入到引入它的jsp(SUN企業級應用的首選)頁面中,合成一個文件後被jsp(SUN企業級應用的首選)容器將它轉化成servlet。可以看到這時會產生一個臨時class文件和一個java文件。下面舉個例子。</P>
服務器用tomcat(一個很好用的JSP運行平台),引入頁面的jsp(SUN企業級應用的首選)文件叫test.jsp(SUN企業級應用的首選)。被引入的頁面叫date.jsp(SUN企業級應用的首選).這個jsp(SUN企業級應用的首選)文件裡存放的是一個有關時間的jsp(SUN企業級應用的首選)代碼,當前的上下文根設為test
//======date.jsp(SUN企業級應用的首選)的源文件=====//
<%@ page language=”java” contentType="text/html;charset=gb2312"%>
<%
java.util.Date date=new java.util.Date();
String date_cn ="";
String dateStr = "";
switch(date.getDay())
{
case 0:date_cn ="日"; break;
case 1:date_cn ="一"; break;
case 2:date_cn ="二"; break;
case 3:date_cn ="三"; break;
case 4:date_cn ="四"; break;
case 5:date_cn ="五"; break;
case 6:date_cn ="六"; break;
}
dateStr = (1900+date.getYear()) + "年" + (date.getMonth()+1) + "月" + date.getDate() + "日(星期" + date_cn + ")";
%>
document.write("<%=dateStr%>");
//======以下是test.jsp(SUN企業級應用的首選)的源文件=============//
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
<html>
<head>
<title>include的兩種用法</title>
<jsp(SUN企業級應用的首選):include page=”date.jsp(SUN企業級應用的首選)” flush=”true”/>
<%--@ include file=”date.jsp(SUN企業級應用的首選)” %-->
//我們在這裡用include的兩種不同形式來引入date.jsp(SUN企業級應用的首選)這個文件.
<head>
<body>
<table><tr><td>
有關jsp(SUN企業級應用的首選)中include的兩種用法.敬請關注。
</td></tr></table>
</body>
</html></P>
在test.jsp(SUN企業級應用的首選) 文件中,我們只輸出了一行文本“ 有關jsp(SUN企業級應用的首選)中include的兩種用法.敬請關注。”,現在讓我們先用<%@ include file=”date.jsp(SUN企業級應用的首選)” %>這種形式引入date.jsp(SUN企業級應用的首選)這個文件。你想會出現什麼問題了嗎?此時出現了錯誤提示:
HTTP Status 500 ?
org.apache(Unix平台最流行的WEB服務器平台).jasper.JasperException: /date.jsp(SUN企業級應用的首選)(0,0) Page directive: cant have multiple occurrences of contentType
以下還有一堆錯誤,但我們只要看這裡就知道問題的所在了。狀態碼為http 500服務器內部錯誤。再看下面的提示。在date.jsp(SUN企業級應用的首選)頁面中不能指定多個contentType.</P>