Java Server Page在windows系列中須先安裝程式有:jsdkTomcat

JSP和asp類似都是Script語言的方式在server端執行後再將結果送給使用者。jsp會在當client端第一次要求時自動執行將程式碼編譯成Byte Code的型態並由Java Virtual Machine來執行。由於編譯的過程只發生一次因此效率較asp佳。

原文網址 : http://taiwan.cnet.com/builder/programming/story/0,2000027293,20000405,00.htm 


JavaServer Pages (JSP) 是一種結合了跨平台與跨網站伺服器支援,以 Java為主的技術來產生動態網頁。JSP與微軟的Active Server Pages 相容,使用類似HTML的標籤以及Java程式碼片段。網站伺服器會自動將以JSP寫成的Java程式碼片段轉換成Java servlets。

  1. 需要Java 2軟體發展工具(JSDK),原來的名稱是Java發展工具(JDK)以及JavaServer網站發展工具(JSWDK),Tomcat,或是其他支援JSP的網路伺服器。下載與安裝你需要的元件 
    目前發表的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> 
    <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的語法.如果要偷懶,你可以下載語法卡 而如果你不熟悉 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++) { %> 
    <H<%=i%>>Hello</H<%=i%>> 
    <% } %>。 

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

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




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

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

    假設JavaBean是在建立網站之前建好的,你要做的第一件事是告訴JSP網頁它所需要使用JavaBean.這工作可以用<jsp:useBean>標籤來完成: 
    <jsp:useBean id="localName" class="com.jguru.Person" scope="application" />. 

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

    一但你宣告了JavaBean之後,你就可以存取它的特性來訂定它。要取得一特性的值,使用<jsp:getProperty>標籤。有了<jsp:getProperty>標籤,你可以指定要使用的豆子名稱(從useBean的id欄位),以及你要取得值的特性。接著,真正的值就會放在輸出裡: 
    <jsp:getProperty id="localName" property="name" />. 

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




    悄悄的告訴你有關Java的事!
    最後一個與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行指示顯示豆子的特性。除了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功能的良好示範。 


    回原文 









    Windows安裝


     

    需求

    Tomcat軟體是用Java寫成,因此首先我們需要Java Development Kit (JDK),它包含了Java Runtime Environment (JRE)和Java Compiler。Tomcat 3.2.2 需要JDK 1.1或以上的版本。JDK可以從http://www.javasoft.com 的網站,自行免費下載,( JDK提供有Solaris、Linux、Windows三種平台的版本)。目前Windows平台的最新JDK版本為JDK 1.3.1。 


    安裝共分四部分:

    第一步:安裝JDK
    先到 http://www.javasoft.com/j2se/ 下載 JDK,然後直接安裝,安錄目錄名稱最好不要做修改,預設目錄路徑為:c:\jdk1.3.1 
    第二步:安裝TomCat
    先到 http://jakarta.apache.org/site/binindex.html 自行下載Tomcat 3.2.2,Tomcat 3.2.2 的檔名是:jakarta-tomcat-3.2.2.zip。
    所以,你抓下來後要先用解壓縮的工具,將它解壓縮到C:\槽。因此你的C槽目錄下會有jakarta-tomcat-3.2.2 這個目錄產生。 
    第三步:設定JDK&TomCat
    Win98&Me Win2000 
    我們用筆記簿打開 C:\Autoexec.bat檔,然後將輸入:

    SET PATH=C:\jdk1.3.1; C:\jdk1.3.1\bin;
    SET CLASSPATH=C:\jdk1.3.1\lib\tools.jar; C:\jdk1.3.1\lib\dt.jar 
    存檔離開就完成設定的工作。
    先設定JDK1.3.1的PATH(路徑),先到 開始 → 設定 → 控制台 → 系統 → 進階 → 環境變數 → 系統變數 ,然後 新增 
    CLASSPATH=C:\jdk1.3.1\lib\tools.jar; C:\jdk1.3.1\lib\dt.jar
    PATH=C:\jdk1.3.1; C:\jdk1.3.1\bin;



    再來我們來設定Tomcat 3.2.2,進入c:\ jakarta-tomcat-3.2.2\bin目錄,找到startup.bat批次檔案,用筆記簿打開來編輯,在行:start後面加上以下兩行。

    SET TOMCAT_HOME=C:\jakarta-tomcat-3.2.2
    SET JAVA_HOME=C:\jdk1.3.1

    第四步:啟動
    進入 C:\ jakarta-tomcat-3.2.2\bin 目錄,直接執行 startup.bat,啟動 Tomcat 伺服器,這時,螢幕上會出現一個dos視窗,停止不動,並有一些運行成功 Tomcat 和初始化資訊,那證明Tomcat運行成功。最後在瀏覽器上輸入http://localhost:8080/,如果能看到Tomcat Version 3.2.2 這一頁,就表示Tomcat安裝成功了。上面有一些JSP和Servlet的例子,可以執行測試看看。注意,千萬不能將dos視窗關閉,若關閉即表示關閉Tomcat。 

    回上頁

















    JAVA 風雲再起 

    資訊教育中心陳志文、謝祿適、林芳白

    曾幾何時,專善物件導向(OO)的JAVA,已悄悄的跨入INTERNET,不再是JAVA SCRIPT,亦不再是JAVA APPLET,他不但繼承了JAVA跨平台的 SUPER 特性,也把目標鎖了 ASP & PHP ,OO物件式的撰寫, 不但具有前端動態的JAVA SERVER PAGE(JSP) ,更具有後端快速安全的 SERVLET,若再加上BEAN,那真是風雲再起......。它的特性如下(和時下的ASP 和 PHP相比)

    1.安裝容易,並且所有的支援多是FREE(NO MONEY)

    2.真正的跨平台,而且是完全跨平台,提昇程式的可攜性

    3.程式的執行經過Compile,快速並且有效率

    4.物件式的架構,讓程式撰寫輕而易舉,提高程式的可讀性

    5.完全支援後端資料庫,JDBC & ODBC,使用真是方便

    你還在猶豫嗎?請趕快連上http://java.sun.com ,一窺究竟吧!

    1.安裝tomcat-3.2.1 (湯姆的貓 JSP & SERVLET ENGINE)

    http://java.sun.com/products/jsp/download.html==>下載jakarta-tomcat-3.2.1.zip

    解壓縮到d:\jakarta-tomcat

    進入jakarta-tomcat\bin修改start.bat

    加入set TOMCAT_HOME=d:\jakarta-tomcat

    set JAVA_HOME=d:\jdk1.3

    執行start.bat 即可驅動(MS-DOS模式)....................................

    jsp實體根目錄=>d:\jakarta-tomcat\webapps\Root\

    修改以上路徑和檔案=>d:\jakarta-tomcat\conf\server.xml

    (例如==> http://163.15.102.142:8080/test.jsp)

    SERVLET實體根目錄=>d:\jakarta-tomcat\webapps\Root\WEB-INF\classes\

    http://163.15.102.142:8080/servlet/檔案名稱

    (例如==> http://163.15.102.142:8080/servlet/test)

    ===========================================================================

    2.安裝jdk1.3 ==> (complie java for .java-->.class)

    http://java.sun.com/products/ ==>下載J2sdk_3_0-win.exe

    解壓縮 & SETUP 到 ==> d:\jdk1.3

    ===========================================================================

    3.安裝jsdk2.0 ==> (complie java for servlet)

    http://java.sun.com/docs/books/tutorial/servlets/servletrunner/server-start.html#config

    解壓縮到==> d:\jsdk2.0

    ===========================================================================

    4.安裝mm.mysql.jdbc.2.0 (to RUN mysql for java jdbc)

    http://www.mysql.com/downloads/api-jdbc.html

    解壓縮到 ==> d:\mm.mysql.jdbc.2.0 即可

    ===========================================================================

    5.安裝mysql (to RUN mysql for java odbc)

    http://www.mysql.com/downloads/mysql-3.23.html

    解壓縮到 & 執行setup ==> d:\mysql 

    ===========================================================================

    6.設定autoexec.bat

    內容如下:

    PATH=%PATH%;d:\jdk1.3\bin;d:\jsdk2.0\bin

    SET LASSPATH=d:\mm.mysql.jdbc-2.0;d:\jdk1.3\lib\tools.jar;

    d:\jsdk2.0\lib\jsdk.jar;d:\jakarta-tomcat\lib;d:\jakarta-tomcat\webapps

    測試程式舉例



    7. JSP FOR EXAMPLE

    (一) 雙迴圈測試執行時間===> 存成test.jsp

    <%@page import="java.util.*"%>

    <%@page contentType="text/html;charset=Big5"%>

    <%

    Date d1=new Date();

    String now1=d1.toString();

    int j=299;

    long k=1;

    for (int i = 1;i <= 100;i++)

    {

    for (int mm = 1;mm <= 100001;mm++)

    {

    k=j+i+k+mm;

    }

    }

    Date d2=new Date();

    String now2=d2.toString();

    out.print("開始時間:"+now1+"<p>");

    out.print("結束時間"+now2+"<p>");

    %>

    =============================================================

    (二) 資料庫SELECT ==>存成test1.jsp

    <%@page import="java.sql.*"%>

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

    <%@page contentType="text/html;charset=Big5"%>

    <%

    Date d1=new Date();

    String now1=d1.toString();

    String driver = "org.gjt.mm.mysql.Driver";

    String url = "jdbc:mysql://163.15.102.142/資料庫名稱";

    String user = "帳號";

    String password = "密碼";

    Class.forName(driver);

    Connection con = DriverManager.getConnection(url,user,password);

    Statement smt = con.createStatement();

    String sql = "select * from 資料表";

    ResultSet rs = smt.executeQuery(sql);

    while(rs.next())

    {

    out.print(rs.getFloat(1)+rs.getString(2)+rs.getString(3)+rs.getString(4)+"<br>");

    }

    Date d2=new Date();

    String now2=d2.toString();

    out.print("JSP開始時間:"+now1+"<p>");

    out.print("JSP結束時間"+now2+"<p>");

    %>

    =============================================================

    8.SERVLET FOR EXAMPLE ==> 存成 test.java

    (一) 九九乘法表 ==> 存成 test.java (必須經過 compile 再放入SERVLET根目錄)

    import java.io.*;

    import java.text.*;

    import java.util.*;

    import javax.servlet.*;

    import javax.servlet.http.*;

    public class a992 extends HttpServlet

    {

    public void doGet(HttpServletRequest req, HttpServletResponse res)

    throws ServletException, IOException

    {

    res.setContentType("text/html; charset=Big5");

    ServletOutputStream sos = res.getOutputStream();

    PrintWriter pw = new PrintWriter(sos,true);

    pw.println("九九乘法表<br>");

    for (int a=1;a<=9;a++) {



    for (int b=1;b<=9;b++) {

    int c=a*b;

    pw.print(a+"*"+b+"="+c+"\t"); 





    pw.println("<br>");

    }

    }

    }

    =============================================================

    (二) 資料庫SELECT ==>存成test1.java(必須經過 compile 再放入SERVLET根目錄)

    import java.io.*;

    import java.sql.*;

    import javax.servlet.*;

    import javax.servlet.http.*;

    public class test16 extends HttpServlet

    {

    public void doGet(HttpServletRequest req, HttpServletResponse res)

    throws ServletException, IOException

    {

    String sql = "select * from 資料表";

    Connection con = null;

    Statement statement = null;

    ResultSet rs = null;

    res.setContentType("text/html; charset=Big5");

    ServletOutputStream sos = res.getOutputStream();

    PrintWriter pw = new PrintWriter(sos,true);

    try

    {

    Class.forName("org.gjt.mm.mysql.Driver");

    con = riverManager.getConnection("jdbc:mysql://

    163.15.102.142:3306/資料庫名稱?user=帳號&password=密碼");

    statement = con.createStatement();

    rs = statement.executeQuery(sql);

    ResultSetMetaData rsmd = rs.getMetaData();

    int colCount = rsmd.getColumnCount();

    pw.println("<html>");

    pw.println("<head><title>book data base</title></head>");

    pw.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=big5\">");

    pw.println("<body>");

    pw.println("<table cellspacing=10>");

    pw.println("<tr>");

    for(int i =1; i <= colCount; i++)

    pw.println("<th>"+rsmd.getColumnLabel(i));

    pw.println("</tr>");

    while (rs.next())

    {

    pw.println("<tr>");

    for( int i = 1; i <=colCount; i++)

    {

    pw.println("<td>");

    Object obj = rs.getObject(i);

    if (obj != null) pw.println(obj.toString());

    else pw.println("&nbsp;");

    }

    pw.println("</tr>");

    }

    pw.println("</table>");

    pw.println("</body>");

    pw.println("</html>");

    }

    catch (ClassNotFoundException e)

    {pw.println("無法載入資料庫: "+e.getMessage());}

    catch (SQLException e)

    {pw.println("SQLException."+e.getMessage());}

    finally

    {

    try

    { if (con != null) con.close();}

    catch (SQLException sqle) {}

    }

    }

    }





    安裝Tomcat成為NT的SERVICE(以tomcat 3.2.1為例):

    1.由http://jakarta.apache.org/builds/jakarta-tomcat/release/v3.2.1/bin/win32/i386/下載 jk_nt_service.exe 

    2.修改jakarta-tomcat\conf子目錄下的 wrapper.properties 如下

    更改 wrapper.tomcat_home 後面的敘述為tomcat的目錄如 d:\jakarta-tomcat 

    更改 wrapper.java_home 後面的敘述為 Java 的根目錄如 c:\jdk1.3

    加上 wrapper.class_path=d:\mm.mysql.jdbc-2.0pre5\

    3.執行jk_nt_service -I <name of service> <path to updated wrapper properties> 

    <name of service> 是指一沒有空白字元的服務名稱如 Jakarta 

    <path to updated wrapper properties> 為 wrapper.properties 檔所在的完整路徑名稱 (而且系統服務將會檢查是否存在這個檔) 

    例如一個實際的範例命令如下 :

    jk_nt_service -I Jakarta wrapper.properties 或者

    jk_nt_service.exe -I jakrta D:\jakarta-tomcat\conf\wrapper.properties

    4.啟動Tomcat做為系統服務

    命令列執行方式: net start <服務名稱> (e.g. net start Jakarta) 

    圖形介面:在系統管理工具(windows2000,NT則為控制台)的服務選項,反白jakarta的服 務名稱,選擇啟動。

    5.停止Tomcat做為系統服

    命令列執行方式: net stop <服務名稱> (e.g. net stop Jakarta) 

    圖形介面:在系統管理工具(windows2000,NT則為控制台)的服務選項,反白jakarta的服 務名稱,選擇停止。



    整合Tomcat及IIS(以tomcat 3.2.1為例):

    一般而言IIS是無法執行Serverlet 及 JSP 的。要藉著設定IIS及使用Tomcat redirector plugin 來使得 IIS 由80埠可向 Tomcat 提出 Serverlet 及 JSP 的服務需求。



    一、文件說明及假定:

    當你安裝好 Tomcat 之後應該有以下的目錄:

    conf 放置 Tomcat 設定檔的目錄

    webapps 放置範例應用程式目錄

    bin 放置web server plugins 的目錄



    以下的文件將假定 Tomcat 是安裝在 d:\jakarta-tomcat

    worker目錄則是 Tomcat 處理從 IIS 接手過來的工作目錄。



    二、系統需求:

    Windows NT SP4/6/6/6a、Windows98、Windows 2000

    IIS4/IIS5/PWS4

    Tomcat3.2



    三、安裝

    Tomcat 重導器(redirector)需要三個檔案: 

    isapi_redirect.dll – 這是 IIS 伺服器的 plugin,你可以使用由Tomcat事先編譯好的,或是自行重新編譯。 
    workers.properties – 這個檔案是用來描述Tomcat 工作主機及連接埠。在conf目錄中有提供一個範例檔 。 
    uriworkermap.properties – 這個檔案是用來對映(maps) URL-Path 模型(patterns) 到Tomcat工作主機,在conf目錄中有提供一個範例檔 。 
    安裝過程包括以下幾個部份: 

    設定 ISAPI 重導器到預設的範例並檢查IIS上servlets的狀況。 
    增加更多的設定 
    設定 ISAPI 重導器
    本文中將假定 isapi_redirect.dll 是放在以下的位置 c:\jakarta-tomcat\bin\win32\i386\isapi_redirect.dll 而且你可以在c:\jakarta-tomcat\conf 創造屬性檔 ( properties ) 

    在系統註冊檔中, 新增一個機碼名稱為
    "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0" 
    新增一個字串名稱 extension_uri 並指定其值為 /jakarta/isapi_redirect.dll 
    新增一個字串名稱 log_file並指定其值為你的系統簽入記錄 log file (例如: c:\jakarta-tomcat\logs\isapi.log). 
    新增一個字串名稱 log_level 並指定log level 的值 (can be debug, info, error or emerg). 
    新增一個字串名稱 worker_file 並指定 workers.properties 檔所在目錄的完整路徑 (例如 c:\jakarta-tomcat\conf\workers.properties) 
    新增一個字串名稱 worker_mount_file並指定uriworkermap.properties 檔的完整路徑 (例如 c:\jakarta-tomcat\conf\uriworkermap.properties) 
    使用 IIS管理終端機, 增加一個新的虛擬目錄。這個虛擬目錄必須是jakarta. ,他是真實路徑必須是放置isapi_redirect.dll的目錄 (在本文的例子是 c:\jakarta-tomcat\bin\win32\i386)。我們創造新的虛擬目錄並指定它為可執行指令。 
    使用IIS管理介面增加 isapi_redirect.dll 做為網站篩選器。 (命名為 jakarta)如果是win98則請執行 c:\jakarta-tomcat\bin\win32\i386\isapi_redirect.dll. 因為在win98的PWS,你必須使用 regedit 去新增篩選器(Filter DLLs),內容如下: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters. 並在機碼值中輸入 isapi_redirect.dll 的完整路徑。 
    重新啟動 IIS (stop + start the IIS service), 確信 jakarta 篩選器是在(costin)在Win98下, WINDOWS\SYSTEM\inetsrv 並且執行 PWS /stop (DLL and log 檔是鎖定 – 假如 stop button, PWS 將一直保存 DLLs 在記錄體. ).. 
    重新啟動start Tomcat 並且輸入 http://127.0.0.1/examples/jsp/index.html 系統會出現tomcat的範例網頁。



    增加附加環境條件





    新增一應用程式

    在jakarta-tomcat的安裝路徑中找到conf 目錄,其中包含一個 server.xml 檔,在該檔案內容中新增你所要增加的應用程式路徑其相關資訊,例如你要新增的路徑為 Teach_job 時內容如下:

    此時在 Jakarta-tomcat 的路徑中的webapps 新增 Teach_job 目錄,並在該目錄下新增 WEB-INF , 其下再新增CLASSES的目錄,新增內容 中的relodable為程式修改後是否立即更新,在發展中的程式其值為true,若是已穩定的系統則設為 false,可增加執行效率。

    <Context path="/Teach_job" 

    docBase="webapps/Teach_job" 

    crossContext="false"

    debug="0" 

    reloadable="true" > 

    </Context>








    在Linux上的JSP及Java Servlet 平台

    在本篇簡單架設文件中,將以Sun的JDK及Apache的jakarta-tomcat為例:

    工作平台:Redhat7.0+CLE1.0

    下載檔案:

    1. Sun的JDK1.3

    至http://java.sun.com/jese/1.3/download-linux.html中下載

    j2sdk-1.3.1-linux-rpm.bin大約25Mbytes



    2. Sun的jsdk2.2

    至http://java.sun.com/product/servlet/download.htm 中下載

    請選擇2.2-Final Release下的Download class files

    servlet-2_2b.zip大約30K bytes



    3. Apache的jakarta-tomcat

    至http://jakarta.apache.org/builds/jakarta-tomcat/release/v3.2.1/bin中下載

    Jakarta-tomcat-3.2.1.tar.gz大約2.7M bytes



    4. MySQL的JDBC

    至http://mysql.com/downloads/api-jdbc.html中下載

    mm.mysql.jdbc-2.0pre5.tar.gz大約565K bytes



    安裝



    1. 用root的權限。

    2. 執行sh./j2sdk-1.3.1-linux-rpm.bin

    回答一些有的沒有的問題,最後會產生j2sdk-1.3.1-linux.rpm

    3. rpm-ihv j2sdk-1.3.1-linux.rpm

    4. mkdir jsdk2_2b

    5. cp jsdk2_2b.zip jsdk2_2b

    6. cd jsdk2_2b

    7. unzip jsdk2_2b.zip

    8. cd

    9. mv jsdk2_2b/opt

    10. cd /opt

    11. tar zxvf /root/jaka-tomcat-3.2.1.tar.gz

    12. tar zxvf /root/mm.mysql.jdbc-1.2c.tar.gz

    13. 把下列幾行加入 /etc/profile 最後面

    #

    # Env.Java

    #

    PATH=”$PATH:/usr/java/jdk1.3.1/bin”

    JAVA_HOME=”/usr/java/jdk1.3.1”

    CLASSPATH=”./usr/java/jdk1.3.1/lib/tools.jar:/opt/jsdk2_2b/lib/jsdk.jar”

    CLASSPATH=”$CLASSPATH:/opt/mm.mysql.jdbc-2.opre5/”



    Export PATH CLASSPATH JAVA_HOME



    #

    # Env.Tomcat

    #

    TOMCAT_HOME=”/opt/jaka-tomcat-3.2.1”;export TOMCAT_HOME



    14. logout後重新用root login

    15. cd /opt/jaka-tomcat-3.2.1/bin

    16. ./startup.sh 應該可以看到如下的畫面

    ./startup.sh應該可以看到如下的畫面

    [root@home bin]# ./startup.sh 就可以看到jakarta-tomcat在8080埠啟動HttpConnectionHandler on 8080。Ajp12ConnectionHandler on 8007



    17. 找一台有browser的電腦,打入http://server-ip:8080/examples/jsp,如果你見到湯姆貓的畫面,則大功告成。



    促成Tomcat 和 Apache 同心協力分工合作

    由Apach 負責靜態文件服務(如html、gif),而Tomcat 負責動態文件(如資料庫),各擅所長,分工合作。步驟如下:



    1.cp mod_jserv.so /usr/lib/apache 註:或是你系統上apache放置程式庫的目錄

    2.cp /usr/local/Jakarta-tomcat-3.2.1/conf/tomcat-apache.conf /hoem/httpd/conf/. 

    3.vi /home/httpd/conf/httpd.conf

    加入 include /home/httpd/conf/tomcat-apache.conf

    4.在瀏覽器上,打入http://server-ip/examples/jsp , 如果你見到湯姆貓的畫面,則大功告成。



    讓Linux開機後自動執行tomcat

    在 /etc/rc.d/rc.local 加入以下幾行即可

    #

    # start Tomcat

    #

    export PATH=$PATH:/usr/java/jdk1.3.1/bin

    export JAVA_HOME=/usr/java/jdk1.3.1

    export CLASSPATH=/usr/java/jdk1.3.1/lib/tools.jar:/hdd-d/jsdk2.0/lib/jsdk.jar

    export CLASSPATH=$CLASSPATH:/hdd-d/mm.mysql.jdbc-2.0pre5/

    export TOMCAT_HOME=/usr/local/jakarta-tomcat-3.2.1

    /usr/local/jakarta-tomcat-3.2.1/bin/startup.sh