js|動態|網頁
我們將建立一個Web頁面,它有一個輸入表單,使用者可以輸入一個股票看板代號以獲得出當前股票價格(有20分鐘延遲)。如果輸入有誤,則顯示錯誤提示頁面。
quote.jsp
首先,用以下代碼建立quote.jsp頁面並將其儲存在JSWDK安裝目錄下的Web 目錄中。大多數的頁面是含JSP代碼的標準HTML。第六行是一個頁面指令,表明將把所有錯誤發送到“errorPage.jsp”文中。第13到15行是一個指令碼段,主要說明僅當有“symbol”參數時才顯示表格。“if”程式碼片段在32到34行結束。第17行定義了所用的JavaBean,第18行根據參數載入其符號屬性。第27行到29行顯示bean的屬性。除了"if"段,實際上並不涉及其它Java代碼。
<html>
<head>
<title>Stock Quotes</title>
</head>
<body>
<%@ page errorPage="errorPage.jsp" %>
<form action="quote.jsp"
method="GET"> <p>Enter Symbol: <input size="20" name="symbol"><input
type="submit" value="Submit"></p>
</form>
<%
if (request.getParameter("symbol") != null) {
%>
<jsp:useBean id="quotes" scope="page" class="com.jguru.Quotes" />
<jsp:setProperty name="quotes" property="*" />
<table border="1">
<tr>
<th align="left">Symbol</th>
<th align="left">Name</th>
<th align="left">Price</th>
</tr>
<tr>
<td><jsp:getProperty name="quotes" property="symbol" /></td>
<td><jsp:getProperty name="quotes" property="name" /></td>
<td><jsp:getProperty name="quotes" property="price" /></td>
</tr>
</table>
<%
}
%>
</body>
</html>
errorPage.jsp
下一步,將下面的JSP原始碼儲存到Web頁面目錄中的“errorPage.jsp”檔案中。提示“this is an error page”為第一行,它將頁面指令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 通過Yahoo資源擷取股票價格。需將原始碼Quotes.java儲存到JSWDK安裝目錄下“classes\com\jguru”目錄中的“quotes.java”檔案中。從這一步起,將由JSDK中的Javac編譯器來編譯它。
package com.jguru;
import java.util.*;
import java.net.*;
import java.io.*;
public class Quotes {
String symbol;
String name;
String price;
public void setSymbol(String symbol) {
this.symbol = symbol;
getSymbolValue(symbol);
}
public String getSymbol() {
return symbol;
}
public String getName() {
return name;
}
public String getPrice() {
return price;
}
private void getSymbolValue(String symbol) {
String urlString =
"http://quote.yahoo.com/download/javasoft.beans?SYMBOLS=" +
symbol + "&format=nl";
try {
URL url = new URL(urlString);
URLConnection con = url.openConnection();
InputStream is = con.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
StringTokenizer tokenizer = new StringTokenizer(line,",");
name = tokenizer.nextToken();
name = name.substring(1, name.length()-2); // remove quotes
price = tokenizer.nextToken();
price = price.substring(1, price.length()-2); // remove quotes
} catch (IOException exception) {
System.err.println("IOException: " + exception);
}
}
}
當建立了這兩個JSP檔案,以及建立了JavaBean原始碼檔案並將其編譯後,你就可以從http://localhost:8080/quote.jsp裝載“quote.jsp”檔案以查看結果(假設你沒有更改JSWDK設定以使用不同的連接埠)。這個頁面當然可以做得更加漂亮,但它的確已經達到了預定目的,同時很好地示範了JSP的功能。