Java Server Page在windows系列中須先安裝程式有:jsdk、Tomcat
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。
- 需要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(" ");
}
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