JSP課程:淺談指令和標(biāo)簽
在JSP中定義了一些稱之為JSP指令和Action的元素,JSP指令是為了JSP引擎而設(shè)計(jì)的,它們并不直接產(chǎn)生任何可見輸出,而只是告訴引擎如何處理JSP頁(yè)面中的其余部分。在JSP頁(yè)面中使用Action元素可以完成各種通用的JSP頁(yè)面功能,也可以實(shí)現(xiàn)一些處理復(fù)雜業(yè)務(wù)邏輯的專用功能。
以下是今天JSP課程的重點(diǎn)內(nèi)容:
Ⅰ.JSP課程—JSP指令
1.JSP指令的基本語(yǔ)法格式:
<%@指令屬性名="值"%>
舉例:
- <%@pagecontentType="text/html;charset=gb2312"%'>%@pagecontentType="text/html;charset=gb2312"%>
注意:屬性名部分是大小寫敏感的。
2.在目前的JSP2.0中,定義了page、include和taglib這三種指令,每種指令中又都定義了一些各自的屬性。
3.如果要在一個(gè)JSP頁(yè)面中設(shè)置同一條指令的多個(gè)屬性,可以使用多條指令語(yǔ)句單獨(dú)設(shè)置每個(gè)屬性,也可以使用同一條指令語(yǔ)句設(shè)置該指令的多個(gè)屬性。
<1>***種方式:
- <%@pagecontentType="text/html;charset=gb2312"%>
- <%@pageimport="java.util.Date"%>
<2>第二種方式:
- <%@pagecontentType="text/html;charset=gb2312"import="java.util.Date"%>
4.page指令:
<1>定義:用于定義JSP頁(yè)面的各種屬性,無論page指令出現(xiàn)在JSP頁(yè)面中的什么地方,它作用的都是整個(gè)JSP頁(yè)面,為了保持程序的可讀性和遵循良好的編程習(xí)慣,page指令***是放在整個(gè)JSP頁(yè)面的起始位置。
<2>JSP2.0規(guī)范中定義的page指令的完整語(yǔ)法:
- <%@page
- [language="java"]
- [extends="package.class"]
- [import="{package.class|package.*},..."]
- [session="true|false"]
- [buffer="none|8kb|sizekb"]
- [autoFlush="true|false"]
- [isThreadSafe="true|false"]
- [info="text"]
- [errorPage="relative_url"]
- [isErrorPage="true|false"]
- [contentType="mimeTyp[;charset=characterSet]"|"text/html;charset=ISO-8859-1"]
- [pageEncoding="characterSet|ISO-8859-1"]
- [isELIgnored="true|false"]
- %>
5.include指令:
<1>定義:include指令用于通知JSP引擎在翻譯當(dāng)前JSP頁(yè)面時(shí)將其他文件中的內(nèi)容合并進(jìn)當(dāng)前JSP頁(yè)面轉(zhuǎn)換成的Servlet源文件中,這種在源文件級(jí)別進(jìn)行引入的方式稱之為靜態(tài)引入,當(dāng)前JSP頁(yè)面與靜態(tài)引入的頁(yè)面緊密結(jié)合為一個(gè)Servlet。
<2>語(yǔ)法:
- <%@includefile="relativeURL"%>
其中的file屬性用于指定被引入文件的相對(duì)路徑。
Ⅱ.JSP課程——JSP標(biāo)簽:
1.JSP還提供了一種稱之為Action的元素,在JSP頁(yè)面中使用Action元素可以完成各種通用的JSP頁(yè)面功能,也可以實(shí)現(xiàn)一些處理復(fù)雜業(yè)務(wù)邏輯的專用功能。
2.Action元素采用XML元素的語(yǔ)法格式,即每個(gè)Action元素在JSP頁(yè)面中都以XML標(biāo)簽的形式出現(xiàn)。
3.JSP規(guī)范中定義了一些標(biāo)準(zhǔn)的Action元素,這些元素的標(biāo)簽名都以jsp作為前綴,并且全部采用小寫,例如,<jsp:include>、<jsp:forward>等等。
4.JSP標(biāo)簽內(nèi)容:
<1><jsp:include>標(biāo)簽用于把另外一個(gè)資源的輸出內(nèi)容插入進(jìn)當(dāng)前JSP頁(yè)面的輸出內(nèi)容之中,這種在JSP頁(yè)面執(zhí)行時(shí)的引入方式稱之為動(dòng)態(tài)引入。
語(yǔ)法:
- <jsp:includepagejsp:includepage="relativeURL|<%=expression%>"flush="true|false"/>
page屬性用于指定被引入資源的相對(duì)路徑,它也可以通過執(zhí)行一個(gè)表達(dá)式來獲得。
flush屬性指定在插入其他資源的輸出內(nèi)容時(shí),是否先將當(dāng)前JSP頁(yè)面的已輸出的內(nèi)容刷新到客戶端。
<2><jsp:forward>標(biāo)簽用于把請(qǐng)求轉(zhuǎn)發(fā)給另外一個(gè)資源。
語(yǔ)法:
- <jsp:forwardpagejsp:forwardpage="relativeURL|<%=expression%>"/>
page屬性用于指定請(qǐng)求轉(zhuǎn)發(fā)到的資源的相對(duì)路徑,它也可以通過執(zhí)行一個(gè)表達(dá)式來獲得。
<3><jsp:param>標(biāo)簽:
當(dāng)使用<jsp:include>和<jsp:forward>標(biāo)簽引入或?qū)⒄?qǐng)求轉(zhuǎn)發(fā)給的資源是一個(gè)能動(dòng)態(tài)執(zhí)行的程序時(shí),例如Servlet和JSP頁(yè)面,那么,還可以使用<jsp:param>標(biāo)簽向這個(gè)程序傳遞參數(shù)信息。
語(yǔ)法1:
- <jsp:includepagejsp:includepage="relativeURL|<%=expression%>">
- <jsp:paramnamejsp:paramname="parameterName"value="parameterValue|<%=expression%>"/>
- </jsp:include>
語(yǔ)法2:
- <jsp:forwardpagejsp:forwardpage="relativeURL|<%=expression%>">
- <jsp:paramnamejsp:paramname="parameterName"value="parameterValue|<%=expression%>"/>
- </jsp:include>
<jsp:param>標(biāo)簽的name屬性用于指定參數(shù)名,value屬性用于指定參數(shù)值。在<jsp:include>和<jsp:forward>標(biāo)簽中可以使用多個(gè)<jsp:param>標(biāo)簽來傳遞多個(gè)參數(shù)。
Ⅲ.JSP課程—JSP中文亂碼問題:
1.JSP程序存在有與Servlet程序完全相同的中文亂碼問題:
<1>輸出響應(yīng)正文時(shí)出現(xiàn)的中文亂碼問題;
<2>讀取瀏覽器傳遞的參數(shù)信息時(shí)出現(xiàn)的中文亂碼問題。
2.JSP引擎將JSP頁(yè)面翻譯成Servlet源文件時(shí)也可能導(dǎo)致中文亂碼問題:
<1>JSP引擎將JSP源文件翻譯成的Servlet源文件默認(rèn)采用UTF-8編碼,而JSP開發(fā)人員可以采用各種字符集編碼來編寫JSP源文件,因此,JSP引擎將JSP源文件翻譯成Servlet源文件時(shí),需要進(jìn)行字符編碼轉(zhuǎn)換。
<2>如果JSP文件中沒有說明它采用的字符集編碼,JSP引擎將把它當(dāng)作默認(rèn)的ISO8859-1字符集編碼處理。
3.如何解決JSP引擎翻譯JSP頁(yè)面時(shí)的中文亂碼問題。
<1>通過page指令的contentType屬性說明JSP源文件的字符集編碼;
<2>page指令的pageEncoding屬性說明JSP源文件的字符集編碼;
<3>在部署描述符中說明一組JSP源文件的字符集編碼。
【編輯推薦】