JSP[java伺服器頁面]

JSP[java伺服器頁面]

JSP全名為Java Server Pages,中文名叫java伺服器頁面,其根本是一個簡化的Servlet設計,它 是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)檔案(*.htm,*.html)中插入Java程式段(Scriptlet)和JSP標記(tag),從而形成JSP檔案,後綴名為(*.jsp)。 用JSP開發的Web套用是跨平台的,既能在Linux下運行,也能在其他作業系統上運行。它實現了Html語法中的java擴展(以 形式)。JSP與Servlet一樣,是在伺服器端執行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。

基本信息

語言標準

句法

一個JSP頁面可以被分為以下幾部份:

靜態數據,如HTML

JSP指令,如include指令

JSP腳本元素和變數

JSP動作

用戶自定義標籤

靜態數據

靜態數據在輸入檔案中的內容和輸出給HTTP回響的內容完全一致。此時,該JSP輸入檔案會是一個沒有內嵌JAVA或動作的HTML頁面。而且,客戶端每次請求都會得到相同的回響內容。

JSP指令

JSP指令控制JSP編譯器如何去生成servlet,以下是可用的指令:

包含指令include –包含指令通知JSP編譯器把另外一個檔案完全包含入當前檔案中。效果就好像被包含檔案的內容直接被貼上到當前檔案中一樣。這個功能和C預處理器所提供的很類似。被包含檔案的擴展名一般都是"jspf"(即JSPFragment,JSP碎片):

<%@ include file="somefile.jsp" %>

頁面指令page –頁面指令有以下幾個選項:

import 使一個JAVA導入聲明被插入到最終頁面檔案。
contentType 規定了生成內容的類型。當生成非HTML內容或者當前字元集character set並非默認字元集時使用。
errorPage 處理HTTP請求時,如果出現異常則顯示該錯誤提示信息頁面。
isErrorPage 如果設定為TRUE,則表示當前檔案是一個錯誤提示頁面。
isThreadSafe 表示最終生成的servlet是否安全執行緒(threadsafe)。

<%@ page import="java.util.*" %> //example import導入樣例<%@ page contentType="text/html" %> //example contentType頁面類型樣例<%@ page isErrorPage=false %> //example for non error page無錯頁面樣例<%@ page isThreadSafe=true %> //example for a thread safe JSP安全執行緒JSP樣例

注意:在同一個JSP檔案中只有"import"導入頁面指令可以被多次使用。

標籤庫指令taglib –標籤庫指令描述了要使用的JSP標籤庫。該指令需要指定一個前綴prefix(和C++的命名空間很類似)和標籤庫的描述URI:

<%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>

JSP腳本

標準腳本變數

以下是永遠可用的腳本變數:

out – JSPWriter用來寫入回響流的數據

page – servlet自身

pageContext –一個PageContext實例包括和整個頁面相聯繫的數據,一個給定的HTML頁面可以在多個JSP之間傳遞。

request –HTTP request對象

response –HTTP response對象

session –

腳本元素

有三個基本的腳本元素,作用是使JAVA代碼可以直接插入servlet.

一種是聲明標籤,在JAVA SERVLET的類體中放入一個變數的定義。靜態的數據成員也可以如此定義。

一種是腳本標籤,在JAVA SERVLET的類的_jspService()方法中放入所包含的語句。

一種是表達式標籤,在JAVA SERVLET的類中放入待賦值的表達式,表達式注意不能以分號結尾。

JSP動作

JSP動作是一系列可以調用內建於網路伺服器中的功能的XML標籤。JSP提供了以下動作:

jsp:include 和子過程類似,JAVA SERVLET暫時接管對其它指定的JSP頁的請求和回響。當處理完該JSP頁後就馬上把控制權交還當前JSP頁。這樣JSP代碼就可以在多個JSP頁中共享而不用複製。
jsp:param 可以在jsp:include, jsp:forward或jsp:params塊之間使用。指定一個將加入請求的當前參數組中的參數。
jsp:forward 用於處理對另一個JSP或SERVLET的請求和回響。控制權永遠不會交還給當前JSP頁。
jsp:plugin Netscape Navigator 的老版本和 Internet Explorer 使用不同的標籤以嵌入一個 applet 。這個動作產生為嵌入一個APPLET所需要的指定瀏覽器標籤。
jsp:fallback 如果瀏覽器不支持APPLETS則會顯示的內容。
jsp:getProperty 從指定的 JavaBean 中獲取一個屬性值。
jsp:setProperty 在指定的JavaBean中設定一個屬性值。
jsp:useBean 創建或者復用一個JavaBean變數到JSP頁。

技術方法

為了快速方便地進行動態網站的開發,JSP在以下幾個方面做了改進,使其成為快速建立跨平台的動態網站的首選方案。

1.將內容的生成和顯示進行分離

用JSP技術,Web頁面開發人員可以使用HTML或者XML標識來設計和格式化最終頁面,並使用JSP標識或者小腳本來生成頁面上的動態內容(內容是根據請求變化的,例如請求賬戶信息或者特定的一瓶酒的價格等)。生成內容的邏輯被封裝在標識和JavaBeans組件中,並且捆綁在腳本中,所有的腳本在伺服器端運行。由於核心邏輯被封裝在標識和JavaBeans中,所以Web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的生成。

在伺服器端,JSP引擎解釋JSP標識和腳本,生成所請求的內容(例如,通過訪問JavaBeans組件,使用JDBC技術訪問資料庫或者包含檔案),並且將結果以HTML(或者XML)頁面的形式傳送回瀏覽器。這既有助於作者保護自己的代碼,又能保證任何基於HTML的Web瀏覽器的完全可用性。

可重用組件

絕大多數JSP頁面依賴於可重用的、跨平台的組件(JavaBeans或者Enterprise JavaBeans組件)來執行應用程式所要求的複雜的處理。開發人員能夠共享和交換執行普通操作的組件,或者使得這些組件為更多的使用者和客戶團體所使用。基於組件的方法加速了總體開發過程,並且使得各種組織在他們現有的技能和最佳化結果的開發努力中得到平衡。

採用標識

Web頁面開發人員不會都是熟悉腳本語言的編程人員。JSP技術封裝了許多功能,這些功能是在易用的、與JSP相關的XML標識中進行動態內容生成所需要的。標準的JSP標識能夠訪問和實例化JavaBeans組件,設定或者檢索組件屬性,下載Applet,以及執行用其他方法更難於編碼和耗時的功能。

適應平台

幾乎所有平台都支持Java,JSP+JavaBeans幾乎可以在所有平台下通行無阻。從一個平台移植到另外一個平台,JSP和JavaBeans甚至不用重新編譯,因為Java位元組碼都是標準的與平台無關的。

資料庫連線

Java中連線資料庫的技術是JDBC,Java程式通過JDBC驅動程式與資料庫相連,執行查詢、提取數據等操作。Sun公司還開發了JDBC-ODBC bridge,利用此技術Java程式可以訪問帶有ODBC驅動程式的資料庫,大多數資料庫系統都帶有ODBC驅動程式,所以Java程式能訪問諸如Oracle、Sybase、MS SQL Server和MS Access等資料庫。

此外,通過開發標識庫,JSP技術可以進一步擴展。第三方開發人員和其他人員可以為常用功能創建自己的標識庫。這使得Web頁面開發人員能夠使用熟悉的工具和如同標識一樣的執行特定功能的構件來進行工作。

JSP技術很容易整合到多種套用體系結構中,以利用現存的工具和技巧,並且能擴展到支持企業級的分散式套用中。作為採用Java技術家族的一部分,以及Java 2(企業版體系結構)的一個組成部分,JSP技術能夠支持高度複雜的基於Web的套用。 由於JSP頁面的內置腳本語言是基於Java的,而且所有的JSP頁面都被編譯成為Java Servlets,所以JSP頁面具有Java技術的所有好處,包括健壯的存儲管理和安全性。作為Java平台的一部分,JSP擁有Java程式語言“一次編寫,各處運行”的特點。

語言特點

優點

JSPJSP

(1)一次編寫,到處運行。除了系統之外,代碼不用做任何更改。

(2)系統的多平台支持。基本上可以在所有平台上的任意環境中開發,在任意環境中進行系統部署,在任意環境中擴展。相比ASP的局限性JSP的優勢是顯而易見的。

(3)強大的可伸縮性。從只有一個小的Jar檔案就可以運行Servlet/JSP,到由多台伺服器進行集群和負載均衡,到多台Application進行事務處理,訊息處理,一台伺服器到無數台伺服器,Java顯示了一個巨大的生命力。

(4)多樣化和功能強大的開發工具支持。這一點與ASP很像,Java已經有了許多非常優秀的開發工具,而且許多可以免費得到,並且其中許多已經可以順利的運行於多種平台之下。

(5)支持伺服器端組件。web套用需要強大的伺服器端組件來支持,開發人員需要利用其他工具設計實現複雜功能的組件供web頁面調用,以增強系統性能。JSP可以使用成熟的JAVA BEANS 組件來實現複雜商務功能。

缺點

(1) 與ASP也一樣,Java的一些優勢正是它致命的問題所在。正是由於為了跨平台的功能,為了極度的伸縮能力,所以極大的增加了產品的複雜性。

(2) Java的運行速度是用class常駐記憶體來完成的,所以它在一些情況下所使用的記憶體比起用戶數量來說確實是“最低性能價格比”了。

語言組成

內置對象

request

request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用於接受通過HTTP協定傳送到伺服器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對象的作用域為一次請求。

response

response 代表的是對客戶端的回響,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內有效。

session

1.什麼是session:從一個客戶打開瀏覽器並連線到伺服器開始,到客戶關閉瀏覽器離開這個伺服器結束,被稱為一個會話。當一個客戶訪問一個伺服器時,可能會在這個伺服器的幾個頁面之間反覆連線,反覆刷新一個頁面,伺服器應當通過某種辦法知道這是同一個客戶,這就需要session對象。

2.session對象的ID:當一個客戶首次訪問伺服器上的一個JSP頁面時,JSP引擎產生一個session對象,同時分配一個String類型的ID號,JSP引擎同時將這個ID號傳送到客戶端,存放在Cookie中,這樣session對象和客戶之間就建立了一一對應的關係。當客戶再訪問連線該伺服器的其他頁面時,不再分配給客戶新的session對象,直到客戶關閉瀏覽器後,伺服器端該客戶的session對象才取消,並且和客戶的會話對應關係消失。當客戶重新打開瀏覽器再連線到該伺服器時,伺服器為該客戶再創建一個新的session對象。

3.session對象存在一定時間過期問題,所以存在session中的名值對會在一定時間後失去,可以通過更改session有效時間來避免這種情況。同時編程時儘量避免將大量有效信息存儲在session中,request是一個不錯的替代對象。

application

1.什麼是application:

伺服器啟動後就產生了這個application對象,當客戶在所訪問的網站的各個頁面之間瀏覽時,這個application對象都是同一個,直到伺服器關閉。但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共享這個內置的application對象。

2.application對象常用方法:

(1)public void setAttribute(String key,Object obj): 將參數Object指定的對象obj添加到application對象中,並為添加的對象指定一個索引關鍵字。

(2)public Object getAttribute(String key): 獲取application對象中含有關鍵字的對象。

out

out 對象用於在Web瀏覽器內輸出信息,並且管理套用伺服器上的輸出緩衝區。在使用 out 對象輸出數據時,可以對數據緩衝區進行操作,及時清除緩衝區中的殘餘數據,為其他的輸出讓出緩衝空間。待數據輸出完畢後,要及時關閉輸出流。

page

page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變數,類似於Java編程中的 this 指針。

config

config 對象的主要作用是取得伺服器的配置信息。通過 pageContext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。 開發者可以在web.xml 檔案中為應用程式環境中的Servlet程式和JSP頁面提供初始化參數。

exception

java.lang.Throwable 的實例,該實例代表其他頁面中的異常和錯誤。只有當頁面是錯誤處理頁面,即編譯指令page 的isErrorPage 屬性為true 時,該對象才可以使用。常用的方法有getMessage()和printStackTrace()等。

pageContext

pageContext 對象的作用是取得任何範圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。

開發入門

JSP開發入門2

安裝好你的機器來使用JSP

你將會需要Java 2軟體開發工具(JSDK),它原來的名稱是Java開發工具(JDK)以及JavaServer網站開發工具(JSWDK),Tomcat,或是其它支持JSP的網路伺服器。Sun免費提供JSDK與JSWDK來供Windows,Solaris,以及Linux平台使用。

如果你想要在你的網路伺服器上使用JSP,但伺服器本身並不支持JSP與Javaservlets,你可以試試看Allaire的Jrun,它的作用就像是針對Netscape企業版與FastTrack伺服器、微軟的網際網路信息伺服器(IIS)與個人網路伺服器(PWS)、Apache、以及其它伺服器的網路伺服器附加設備。你也可以使用Apache網路伺服器的Java版本,最新的JSWDK里有提供。

下載與安裝你需要的組件

發布的1.2.2-001,JSDK可下載的版本是以可安裝的壓縮形式。下載的檔案大約是20MB,可提供完整的Java發展環境,讓你能建立利用標準API為核心的Java解決之道。然而,你的網路伺服器需要套用到JSP的唯一一件事是Java編譯器。要讓網路伺服器知道編譯器的位置,將環境變數JAVA.HOME設到JSDK的安裝目錄。如果你是在Windows上安裝並且接受預設目錄,將這行程式代碼set JAVA.HOME=C:1.2.2加到你的autoexec.bat檔案並且重新開機。

在安裝好JSDK之後,下載並且安裝JSWDK或beta版的Tomcat,以Java為主的Apache網路伺服器。安裝在哪裡並不重要,重要的是你可以找到它。一般而言,它會放在上層目錄,這種方式可以讓你取代JSWDK或 JSDK的網路伺服器,不需要移動其它的網路伺服器。在你安裝好這個檔案之後,你就可以準備發展JSP了。

在你正確的安裝JSWDK之後,執行startserver指令檔案來激活網路伺服器,預設通訊連線埠 為 8080。要看你在激活伺服器之後是均C有正確的安裝工具,你可以載入範例JSP檔案中的任何一個(http://localhost:8080/examples/jsp/)。如果你能夠成功的執行一個範例檔案,你可以知道你已經正確的設定好軟體了。如果你在激活伺服器的控制台視窗看到錯誤訊息,那么你需要解決這個問題。最常發生的問題是沒有設定(或者不正確設定)環境變數JAVA.HOME。要檢視環境設定,在DOS模式下鍵入set。

開始

解釋JSP語法之前,先建立一個顯示日期與時間的簡單網頁並且將它儲存成sample.jsp:

將這個檔案與你所有的HTML與JSP網頁放在你JSWDK安裝目錄下的網頁目錄里. 你可以在http://localhost:8080/sample.jsp下載此頁.當你第一次參觀這個網頁時,網站伺服器會將JSP翻譯成Javaservlet程式代碼,那你就會看到的日期與時間.。

你已經下載,安裝,並且架構好發展環境,你已經準備好要了解JSP語法與建立你自己的JSP為主的解決之道。

JSP開發入門3

JSP語法的基本原理

安裝之後,接下來我們要討論JSP的語法.如果要偷懶,你可以下載語法卡而如果你不熟悉 Java的程式設計,你可能會想要參考Sun的使用手冊;然而,網站建立者不應該做太多的Java發展。除了幾個函式調用之外,出現在你JSP網頁上的Java程式代碼應該將它減到最少;

記住這點之後,讓我們先來看看JSP的編譯器指引與指令組件,之後我們將解釋JavaBeans與內部對象. JSP編譯器指引與指令組件有五種型態.JSP 1.0之後,大部分的JSP是包含在以<% 作為開始%>作為結束的單一卷標里.新的 JSP 1.1規格已經發表了,它同時也與XML兼容.

JSP的編譯器指引與指令組件

編譯器指示<%@ 編譯器指示 %>

聲明<%! 聲明 %>

表達式 <%= 表達式 %>

程式代碼段/小型指令<% 程式代碼片段 %>

注釋<%-- 注釋 --%>

編譯器指示

JSP的編譯器指示是針對JSP引擎。它們並不會直接產生任何看得見的輸出;相反的,它們是在告訴引擎如何處理其它的JSP網頁。它們永遠包含在 <%@ ?%>卷標里。兩個主要的指引是 page與include。我們不會討論taglib編譯器指引但它可以在JSP1.1里用來建立自訂卷標。

你幾乎可以在你所有的JSP網頁最上面找到page編譯器指示。雖然這不是必須的,但它可以讓你指定到哪裡可以找到支持的Java類別這類的事:

<%@ page import="java.util.Date" %>,

當發生Java問題的事件時應該將訊息傳送到哪裡:

<%@ page errorPage="errorPage.jsp" %>,

以及你是?需要為使用者管理通話期的信息,可能存取多個網頁(稍後在JavaBeans里會有更多通話期的討論):

<%@ page session="true" %>。

include編譯器指示讓你將你的內容分成幾個可管理的組件,就像那些有表頭或腳註的網頁。所包含的網頁可以是固定格式的HTML網頁或者是JSP內容的網頁:

<%@ include file="filename.jsp" %>。

宣告

JSP聲明讓你定義網頁層的變數,來儲存信息或定義支持的函式,讓JSP網頁的其餘部分能夠使用。如果你發現自己有太多的程式代碼,你最好將它們放在不同的Java類別里。你可以在 <%! ?%>卷標里找到聲明。記住要在變數聲明的後面加上分號,就跟任何有效的Java敘述的形式一樣: <%! int i=0; %>。

表達式

JSP里有表達式,評估表達式的結果可以轉換成字元串並且直接使用在輸出網頁上。JSP運算是屬於 <%= ?%> 卷標里,並不包含分號,加引號字元串的無用部分。

<%= i %>

<%= "Hello" %> 。

程式代碼段/小型指令檔案

JSP程式代碼片段或小型指令檔案是包含在<% ?%> 卷標里。當網路伺服器接受這段請求時,這段Java程式代碼會執行。小型指令檔案可以是原始的HTML或XML,其內部的程式代碼片段可以讓你建立有條件的執行程式代碼,或者只是一些使用另一塊程式代碼的東西。舉例來說,下列的程式代碼結合了表達式與小型指令檔案,在H1,H2,H3,以及H4卷標里顯示字元串"Hello"。小型指令檔案不限於一行的原始程式代碼 :

<% for (int i=1; i<=4; i++) { %>

<%=i%>>Hello<%=i%>>

<% } %>。

注釋

最後一個主要JSP組件是嵌入式注釋。雖然你可以在你的檔案里包含HTML注釋,如果使用者檢視網頁的原始碼,他們也會看到這些注釋。如果你不要讓使用者看到你的批註,你可以將它放在<%-- ?--%>卷標里:

<%-- 針對伺服器端的注釋 --%>。

JSP開發入門4

JSP與JavaBean

雖然你可以在小型指令檔案里放入一大塊的程式代碼,但是大多數的Java程式代碼是屬於可以重複使用的組件,稱為JavaBean。JavaBean就跟ActiveX控制項一樣:它們提供已知的功能,並且是為了可隨時重複使用的目的而設計的。

JavaBean的價值在於它可以經由一組特性來使用,而這些特性則提供對JavaBean設定的存取。以人來作範例,此人就是JavaBean,而他的姓名,社會福利安全號碼,以及住址可以是特性。對於JSP網站,基本上你是將'JavaBean'動態的連線到你的網站。

假設JavaBean是在建立網站之前建好的,你要做的第一件事是告訴JSP網頁它所需要使用JavaBean.這工作可以用卷標來完成:.

卷標需要你以id 屬性來辨識JavaBean.在這裡,你提供一個名稱讓JSP網頁來辨識JavaBean,除了id 屬性之外,你也必須告訴網頁要到哪裡去找這個JavaBean,或者是它的Java類別名稱。類別屬性提供如何在各式方法之中找到它,最後一個需要的組件是scope 屬性.有了範圍屬性的幫助,你可以告訴JavaBean,要它為單一網頁(預設)[scope="page"];為一個被請求的網頁[scope="request"];為通話期[scope="session"];或為整個應用程式[scope="application"]來維護它自己的信息.對於通話期範圍,你可以很容易的維護JSP網頁里的項目,例如購物車。

一旦你宣告了JavaBean之後,你就可以存取它的特性來訂定它。要取得一特性的值,使用卷標。有了卷標,你可以指定要使用的JavaBean名稱(從useBean的id欄位),以及你要取得值的特性。接著,真正的值就會放在輸出里:.

要更改JavaBean的特性,你需要使用卷標.對這個卷標,你也需要辨認JavaBean以及要修正的特性,除此之外,你還需要提供新值.如果命名正確,這些可以直接經由規定的格式取得:;

要從一參數取得,你必須直接命名此特性以及參數: ;

或是直接以名稱與值來設定: or " value= <%= expression %> />.

有關JavaBean的最後一點:要讓網路伺服器可以找到JavaBean,你需要將它們的類別檔案放在特別位置。對JSWDK而言,最簡單的地方是在安裝目錄里的類別目錄,例如 jswdk-1.0.1classes.

JSP開發入門5

JSP的內部對象

最後一個與JSP語法有關的組件叫做內部對象.在JSP小型指令檔案內,你可以存取這些內部對象來與執行JSP網頁的servlet環境相互作用。許多對內部對象的存取應該要簡化。然而,這些是範例,它們的存取都是可接受的,要完整的利用內部對象設定則需要對最新的Java Servlet API有所了解。

下表列出你可以使用的內部對象。

內部對象說明

request客戶端請求,此請求會包含來自GET/POST請求的參數

response網頁傳回客戶端的回響

pageContext網頁的屬性是在這裡管理

session 與請求有關的會話

applicationservlet正在執行的內容

out 用來傳送回響的輸出流

config代碼片段配置對象

pageJSP網頁本身

exception針對錯誤網頁,未捕捉的例外

那么,這些是做什麼的,而你應該如何使用它們呢?基本上,在你的小型指令檔案里,你可以使用它們來存取執行JSP程式代碼的servlet。為了避免談論到太多Servlet API 的細節,讓我們來檢視一些你可以利用它們來做的事:

不必使用表達式,你可以直接存取內部out對象來列印一些東西到response:

<% out.println("Hello"); %>.

不必直接傳送參數到JavaBean,你可以藉由請求對象來取得參數的值:

<% String name=request.getParameter("name"); out.println(name); %>。

當你以JSP寫了許多的應用程式之後,如果你建立了JavaBeans或者發現你自己將太多的Java原始碼放入你的JSP檔案,你需要建立支持的Java類別,這樣可以鼓勵重複使用並且降低JSP網頁轉換時所需要的時間。當你需要建立Java類別時,你必須:

將JDSWK的安裝目錄in目錄加到你的PATH。在你的autoexec.bat檔案的PATH行的最後,加入C:1.2.2in; 。

以下面的指令將JAR檔案複製到jrelibext目錄:

copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext.

常見問題

1、如何顯示目錄列表:

我們在本機測試程式時,一般都習慣在瀏覽器中就能遍歷到某個目錄下都有哪些檔案,這就需要web伺服器支持目錄列表:

打開檔案conf/web.xml,找到以下代碼:

1

2

<param-name>listings</param-name>

false

將其中的false改成true

2、配置error-page:(指定處理錯誤的頁面)

打開檔案D:\demo\WEB-INF\web.xml:

在…中間加入:

1

2

3

4

<error-page>

<error-code>404</error-code>

<location>/NotFound.jsp</location>

</error-page>

(錯誤代碼為404的錯誤導向到NotFound.jsp)

1

2

3

4

<error-page>

<error-code>500</error-code>

<location>/error.jsp</location>

</error-page>

(當系統發生500錯誤即伺服器內部錯誤時,跳轉到錯誤處理頁面error.jsp)

1

2

3

4

<error-page>

<exception-type>java.lang.NullException</exception-type>

<location>/error.jsp</location>

</error-page>

(當系統發生java.lang.NullException(即空指針異常)時,跳轉到錯誤處理頁面error.jsp)

提醒:

以上頁面都需要做大一點(>=2kB),否則不起作用。

原因:tomcat把這樣的頁面位元組限制在不少於多少位元組。

3、jsp頁面出現亂碼如何解決?

在頁頭加上:

1

2

3

<%@pagecontentType=“text/

html

; charset=gb2312″%>

4、jsp中兩種包含頁面的方式?

第一種:動作標籤;例如:

1 <jsp:includepage="/index.html"/>

第二種:指令標籤;例如:

1 <%@includefile="relativeURL"%>

JSP標準標籤庫

根據JSTL標籤所提供的功能,可以將其分為5個類別。

核心標籤

格式化標籤

SQL 標籤

XML 標籤

JSTL 函式

JSTL 庫安裝

Apache Tomcat安裝JSTL 庫步驟如下:

從Apache的標準標籤庫中下載的二進包(jakarta-taglibs-standard-current.zip)。下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

下載jakarta-taglibs-standard-1.1.1.zip 包並解壓,將jakarta-taglibs-standard-1.1.1/lib/下的兩個jar檔案:standard.jar和jstl.jar檔案拷貝到/WEB-INF/lib/下。

使用任何庫,你必須在每個JSP檔案中的頭部包含標籤。

核心標籤

核心標籤是最常用的JSTL標籤。引用核心標籤庫的語法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

標籤

描述

用於在JSP中顯示數據,就像<%= ... >

用於保存數據

用於刪除數據

用來處理產生錯誤的異常狀況,並且將錯誤信息儲存起來

與我們在一般程式中用的if一樣

本身只當做和的父標籤

的子標籤,用來判斷條件是否成立

的子標籤,接在標籤後,當標籤判斷為false時被執行

檢索一個絕對或相對 URL,然後將其內容暴露給頁面

基礎疊代標籤,接受多種集合類型

根據指定的分隔設定來分隔內容并迭代輸出

用來給包含或重定向的頁面傳遞參數

重定向至一個新的URL.

使用可選的查詢參數來創造一個URL

格式化標籤

JSTL格式化標籤用來格式化並輸出文本、日期、時間、數字。引用格式化標籤庫的語法如下:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

標籤

描述

使用指定的格式或精度格式化數字

解析一個代表著數字,貨幣或百分比的字元串

使用指定的風格或模式格式化日期和時間

解析一個代表著日期或時間的字元串

綁定資源

指定地區

綁定資源

指定時區

指定時區

顯示資源配置檔案信息

設定request的字元編碼

SQL標籤

JSTL SQL標籤庫提供了與關係型資料庫(Oracle,MySQL,SQL Server等等)進行互動的標籤。引用SQL標籤庫的語法如下:

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

標籤

描述

指定數據源

運行SQL查詢語句

運行SQL更新語句

將SQL語句中的參數設為指定值

將SQL語句中的日期參數設為指定的java.util.Date 對象值

在共享資料庫連線中提供嵌套的資料庫行為元素,將所有語句以一個事務的形式來運行

XML 標籤

JSTL XML標籤庫提供了創建和操作XML文檔的標籤。引用XML標籤庫的語法如下:

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

在使用xml標籤前,你必須將XML 和 XPath 的相關包拷貝至你的\lib下:

XercesImpl.jar:

標籤

描述

與<%= ... >,類似,不過只用於XPath表達式

解析 XML 數據

設定XPath表達式

判斷XPath表達式,若為真,則執行本體中的內容,否則跳過本體

疊代XML文檔中的節點

和的父標籤

的子標籤,用來進行條件判斷

的子標籤,當判斷為false時被執行

將XSL轉換套用在XML文檔中

與共同使用,用於設定XSL樣式表

JSTL函式

JSTL包含一系列標準函式,大部分是通用的字元串處理函式。引用JSTL函式館的語法如下:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

函式

描述

fn:contains()

測試輸入的字元串是否包含指定的子串

fn:containsIgnoreCase()

測試輸入的字元串是否包含指定的子串,大小寫不敏感

fn:endsWith()

測試輸入的字元串是否以指定的後綴結尾

fn:escapeXml()

跳過可以作為XML標記的字元

fn:indexOf()

返回指定字元串在輸入字元串中出現的位置

fn:join()

將數組中的元素合成一個字元串然後輸出

fn:length()

返回字元串長度

fn:replace()

將輸入字元串中指定的位置替換為指定的字元串然後返回

fn:split()

將字元串用指定的分隔設定分隔然後組成一個子字元串數組並返回

fn:startsWith()

測試輸入字元串是否以指定的前綴開始

fn:substring()

返回字元串的子集

fn:substringAfter()

返回字元串在指定子串之後的子集

fn:substringBefore()

返回字元串在指定子串之前的子集

fn:toLowerCase()

將字元串中的字元轉為小寫

fn:toUpperCase()

將字元串中的字元轉為大寫

fn:trim()

移除首位的空白符

相關詞條

相關搜尋

熱門詞條