新手入門:瞭解JSP動態網頁製作技術

來源:互聯網
上載者:User
js|動態|網頁

JavaServer Pages (JSP) 是一種結合了跨平台與跨網站伺服器機制,以 Java為主的技術來產生動態網頁。 JSP與微軟的ASP(Active Server Pages )相容,但它是使用類似HTML的標籤以及Java程式碼片段而不是VBScript。當你所使用的網站伺服器沒有提供本地ASP支援,也就是Apache或Netscape伺服器時,你可以考慮使用JSP。雖然你可以取得這些伺服器的ASP附加配備程式,但價格相當昂貴,而目前Sun並沒有對你所要的JSP組件收取費用(雖然Sun未來有可能會收費)。對於Solaris與Linux以及Windows,這些組件也都很容易取得。

請不要將JSP與伺服器端的JavaScript混為一談。網站伺服器會自動將以JSP寫成的Java程式碼片段轉換成Java servlets。而許多先前必須以Perl手寫程式或伺服器特定的API(如ASP)控制的功能也都可透過JSP來自動化處理。

現在就讓我們開始動手協助你建立一個可執行JSP範例網站。

一、如何安裝好你的機器來使用JSP

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

如果你想要在你目前的網路伺服器上使用JSP,但伺服器本身並不支援JSP與Java servlets,你可以試試看Allaire的Jrun, 它的作用就像是針對Netscape企業版與FastTrack伺服器、微軟的網路資訊伺服器(IIS)與個人網路伺服器(PWS)、Apache、以及其他伺服器的網路伺服器附加元件。你也可以使用Apache網路伺服器的Java版本,最新的JSWDK裡有提供。

1、下載與安裝你需要的組件

目前發表的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。要看你在啟動伺服器之後是否有正確的安裝工具,你可以載入範例JSP檔案中的任何一個(http://localhost:8080/examples/jsp/)。如果你能夠成功的執行一個範例檔案,你可以知道你已經正確的設定好軟體了。如果你在啟動伺服器的控制台視窗看到錯誤訊息,那麽你需要解決這個問題。最常發生的問題是沒有設定(或者不正確設定)環境參數JAVA.HOME。 要檢查目前的環境設定,在DOS模式下鍵入set。

2、開始解釋JSP文法 之前,先建立一個顯示目前日期與時間的快速網頁並且將它儲存成sample.jsp:

<html>
<head>
<title>First Page</title>
</head>
<body>
<H3>Today is:
<%= new java.util.Date() %>
</H3>
</body>
</html>.

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

現在你已經下載,安裝,並且架構好環境,你已經準備好要瞭解JSP文法與建立你自己的JSP為主的解決之道.

二、JSP文法的基本原理

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

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

1、JSP的編譯器指引與指令元件

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

預定義 <%! 預定義 %>

運算式 <%= 運算式 %>

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

註解 <%-- 註解 --%>

2、編譯器指引

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" %>。

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

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

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

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

<% for (int i=1; i<=4; i++) { %>
<H<%=i%>>Hello</H<%=i%>>
<% } %>。

註解.

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

<%-- 針對伺服器端的註解 --%>。

三、JSP與JavaBean

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

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

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

<jsp:useBean id="localName" class="com.jjj.Person" scope="application" />.

<jsp:useBean>標籤需要你以id 屬性來辨識usebean.在這裡,你提供一個名稱讓JSP網頁來辨識usebean,除了id 屬性之外,你也必須告訴網頁要到哪裡去找這個usebean,或者是它的Java類別名稱。類別屬性提供如何在各式方法之中找到它,最後一個需要的元件是scope 屬性。有了範圍屬性的協助,你可以告訴usebean,要它為單一網頁(預設)[scope="page"];為一個被請求的網頁[scope="request"];為通話期[scope="session"]; 或為整個應用程式[scope="application"]來維護它自己的資源。對於通話期範圍,你可以很容易的維護JSP網頁裡的項目,例如購物車: 一旦你宣告了JavaBean之後,你就可以存取它的特性來訂購它。要取得一特性的值,使用<jsp:getProperty>標籤。有了<jsp:getProperty>標籤,你可以指定要使用的usebean名稱(從useBean的id欄位),以及你要取得值的特性。接著,真正的值就會放在輸出裡:

<jsp:getProperty id="localName" property="name" />.

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

<jsp:setProperty id="localName" property="*" />;

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

<jsp:setProperty id="localName" property="address" param="parameterName" />;

或是直接以名稱與值來設定:

<jsp:setProperty id="localName" property="serialNumber" value="string" /> or <jsp:setProperty id="localName" property="serialNumber" value= <%= expression %> />.

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

四、JSP的內部物件

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

有關內部物件說明:

request 使用者端請求,此請求會包含來自GET/POST請求的參數

response 網頁傳回使用者端的回應

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

session 與請求有關的通話期

application servlet正在執行的內容

out 用來傳送回應的輸出資料流

config servlet的架構物件

page JSP網頁本身

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的安裝目錄\bin目錄加到你的PATH。在你的autoexec.bat檔案的PATH行的最後,加入C:\1.2.2\bin; 。

以下面的指令將JAR檔案複製到\jre\lib\ext目錄:

copy c:\jswdk-1.0.1\lib\servlet.jar c:\jdk1.2.2\jre\lib\ext.

五、 建立一JSP網站

現在到了將所有的JSP文法放在一起使用的時候了。我們將會建立一個具有輸入格式的網站,讓使用者來輸入股票看板代號並且獲得目前股票的價格(大約延遲20分鐘)。如果有錯誤,則錯誤網頁會顯示。

quote.jsp

首先,以這段代碼建立quote.jsp並且將它儲存在JSWDK安裝目錄的網頁目錄裡。網頁的大部分內容是標準的HTML格式,而JSP代碼分散各處。第6行是網頁編輯器指引,指示將任何錯誤傳送到errorPage.jsp檔案。第13行到15行是小型指示碼,基本上是說只有當"symbol"參數存在時才顯示表格。這個if區段包含了第32行到34行的代碼。第17行定義要使用的 JavaBean,而第18行從參數載入它的符號特性。第27行到29行指示顯示usebean的特性。除了if區段之外,並沒有其他的Java代碼。

errorPage.jsp

接著,將下列的JSP原始碼儲存到網頁目錄下的檔案errorPage.jsp.這是一個錯誤網頁的暗示是在第一行,此行將網頁編譯器指引isErrorPage屬性設為真。雖然前一頁說明了錯誤網頁在哪裡,這頁是說它是一個錯誤網頁。JSP檔案裡其他特定的JSP代碼是對內部例外物件的存取。此頁只是顯示它的值而已:

<%@ page isErrorPage="true" %>
<html>
<head>
<title>Error Page</title>
</head>
<body>
<h1>Our Error Page</h1></font>
<!-- Print Exception -->
We got ourselves an exception:
<%= exception %>
<a href="quote.jsp">Restart</a>
</body>
</html>.

Quotes.java

Quotes JavaBean使用雅虎的資源來取得股票。其原始碼 要儲存於 JSWDK安裝目錄下classes\com\jguru目錄裡的quotes.java檔案。從那裡你可以使用JSDK的編譯器來編譯它。 一旦你建好兩個JSP檔案,建立了JavaBean原始檔案並且編譯好之後,你就可以由http://localhost:8080/quote.jsp載入quote.jsp檔案來查看結果,假設你沒有更改 JSWDK安裝,使用不同的通訊口> 此網頁可以再加強,但它所呈現的功能,是JSP功能的良好示範。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。