老早就在國外的網站上看到Jsp(Java Server Pages)的介紹,說它如何如何的好, 如何如何的強大,可是只知道jsp這玩意不錯,卻一直沒有機會用上。聽說unix下 配置jsp環境頗爲複雜,因此一直沒敢去碰。後來在臺灣的站點上找到了一份臺灣老 寫的在Linux下配置jsp環境的文章,如獲至寶,於是就馬上操刀上陣,想試試如何。 可惜照樣子畫葫蘆未果。 於是到國內幾個大的bbs內到處查找,尋訪幾個前輩,找到一些零碎的配置方法。 這些方法大都是gnujsp0.9x/1.0配合ApacheJser-1.x.x來運行jsp的,我都一一照樣 進行配置,結果頂多是讓ApacheJserv運行起來而已。一直無法運行jsp。 最後筆者決心自己將配置方法摸透,於是所有套裝軟體都儘量從官方網站下載回來。 以下是筆者配置過程中使用到的套裝軟體: Apache_1.3.12.tar.gz (從www.apache.org下載) ApacheJserv-1.1.2.tar.gz(從java.apache.org下載) gnujsp-1.0.tar.gz(從教育網內獲得) JSDK-2.0.tar.gz(從教育網內獲得) JDK-1.2.2.tar.gz(For Linux版本,從freesoft.online.sh.cn及www.sun.com可下載) 經過連續8個小時反復琢磨gnujsp-1.0 中的安裝文檔以及綜合手頭幾份安裝文章, 還有從java.apache.org上下載的簡單安裝配置文章,筆者最後終於成功將jsp環境 配置成功並成功地運行了調用bean的jsp程式。 以下就安裝和配置的原理、過程、注意事項以及關鍵點等進行詳細描述。 一、配置要求 RedHat 5.x 或 6.x (筆者在TurboLinux 4.02/6.0 Bluepoint1.0/2.0 等系統中都順利編譯、配置通過) JSDK2.0(其實就是需要一個 70多k的jsdk.jar) gnujsp1.0(其實就是需要裏面的jar文件而已) JDK-1.x.x or JDK-1.2.x(兩個版本都能夠順利通過編譯和配置) ApacheJserv1.0 or 1.x.x 編譯需要的make,gcc等程式、編譯器與函數庫 二、基本配置原理 要讓jsp能夠正確解析並運行良好的話,需要確保ajp1.2(apacheJserv protocol1.2)可以正常地在本地(local)埠8007通信,Servlet需要能夠正常執行,並且要合理配置好Jserv的配置文件使gnujsp正確解析jsp文件。本文採用static(靜態)編譯方式編譯 ApacheJserv。 三、基本步驟 首先要確保ApacheJserv正確編譯並測試通過。然後正確配置ApacheJserv的配置文件,讓gnujsp可以解析jsp文件。 以下是安裝步驟示意圖: JDK-->JSDK-->apache(基本配置)-->ApacheJserv(配置/編譯)-->apache(配置/編譯/安裝) -->gnujsp-->編輯ApacheJserv配置文件-->測試-->OK 四、詳細過程 1、安裝JDK 其實不存在什麽安裝,只需要將JDK拷貝到一個固定目錄就可以了。這裏筆者採用JDK-1.2.2的二進位版本。對於採用1.1.x的讀者,如果是選擇了static的方式 將Apache和ApacheJserv整和,出現故障的時候可以採用DSO模式(建議JDK-1.1.x版本的都采 用DSO模式比較好)。 #tar xfz JDK-1.2.2-linux-i386.tar.gz #mv JDK-1.2.2 /www/JDK122 2、安裝JSDK 和安裝JDK道理一樣,只需要解包後拷貝到一個固定目錄就可以了。 不過要注意的是,這裏實際上只是用到這個包的jsdk.jar文件,所以一定要知道這個文件的路徑。 #tar xfz jsdk-2.0.tar.gz #mv JSDK-2.0 /www/jsdk #ls -l /www/jsdk/lib total 80 -r--r--r-- 1 root root 76453 Jun 28 01:03 jsdk.jar 3、apache基本配置 這個其實並不能說是真正的配置,只是在第一次解包的時候要生成一些必須的.h文件才需要 的一步而已。相當於預配置。 #tar xfz apache_1.3.12.tar.gz #cd apache_1.3.12 #./configure #cd .. 這樣就會生成了諸如httpd.h等的頭文件。如果沒有這些文件的話,以後配置ApacheJserv或者 Php3等都會報錯的。 4、ApacheJserv配置與編譯 這裏需要使用的指令至少有: --with-apache-src= (指定了apache源碼的路徑,用於static方式的編譯) --with-jdk-home= (指定jdk的根目錄) --with-JSDK= (指定jsdk.jar的目錄,注意是大寫的JSDK!!!) 至於其他的並不是一定要寫,但是建議還是要指定諸如安裝目錄,jdk平臺號碼(1或者2)等。 其中java-platform是這樣指定的:即如果使用的是jdk-1.1.x的就是1(默認是1,可以不寫)。如果是jdk-1.2.x就指定是2。 #tar xfz ApacheJserv-1.1.2.tar.gz #cd ApacheJserv-1.1.2 #./configure --with-apache-src=../apache_1.3.12 --prefix=/www/jserv \ >--with-jdk-home=/www/jdk122 --with-java-platform=2 \ >--with-JSDK=/www/jsdk/lib/jsdk.jar --disable-debugging #make #make install #cd .. 5、Apache的配置編譯 關於Apache的配置很多文檔都有說明,這裏就不贅述了。 #cd apache_1.3.12 #./configure --prefix=/www/httpd --activate-module=src/modules/jserv/libjserv.a #make #make install 6、gnujsp安裝 其實只是需要gnujsp-1.0中的幾個jar文件而已。 #tar xfz gnujsp-1.0.tar.gz #mkdir /www/gnujsp #cp gnujsp-1.0/lib/*.jar /www/gnujsp #mkdir /www/gnujsp/bean_jsp #ls -l /www/gnujsp drwxr-xr-x 10 root root 4096 Sep 15 15:56 bean_jsp/ -rw-rw-r-- 1 root root 125972 Sep 15 12:55 gnujsp10.jar -rw-rw-r-- 1 root root 153015 Sep 15 12:55 gnujsp10test.jar -rw-rw-r-- 1 root root 37291 Sep 15 12:55 servlet-2.0-plus.jar -rw-r--r-- 1 root root 38826 Sep 15 12:55 servlet-2.1.jar 7、Jserv配置文件的編輯 這個是jsp是否能夠正確解析使用的關鍵,也是本文的重點。 關鍵點在於設置好jserv的相關文件: jserv.conf jserv.properties zone.properties 或者新建立一個properties文件,編輯的順序大概是: jserv.conf-->jserv.properties-->zone.properties-->自定義的properties文件。 現在假設你需要定義一個叫gsp的zone,那麽可以按照以下步驟和方法編輯相關內容: *jserv.conf在編輯這個文件前,請將"include /www/jserv/etc/jserv.conf"這句 添加到apache的httpd.conf文件內。文檔中說這句話可以放到任何地方,不過經過實踐發現:最好還是放到httpd.conf的末尾!!!!! 你可以這樣運行:#echo "include /www/jserv/etc/jserv.conf" >> /www/httpd/conf/httpd.conf 做好後,再用例如vi編輯器編輯jserv.conf。如果你想記錄(log)jserv的所有動作,那麽最好是允許log,去掉以下語句注釋:ApJServLogFile /www/jserv/logs/mod_jserv.log 然後找到"# Mount point for Servlet zones"這行,這裏是定義Servlet zones 的mount點的(類似linux的安裝點)。我們加入以下這行: ApJServMount /gsp /gsp 接著找到ApJServAction關鍵字,加入以下這行:ApJServAction .jsp /gsp/gnujsp 這個是定義了.jsp文件是給gnujsp解析的。這樣jserv.conf文件就基本設置好了。 *jserv.properties這裏要設置一下wrapper.classpath,找到wrapper.classpath關鍵字,添加以下這行:wrapper.classpath=/www/jdk122/lib/tools.jar 接著找到"# Servlet Zones parameters"這行,修改zones=root成爲: zones=root,gsp (添加gsp這個zone) 接著下面幾行在 root.properties=/www/jserv/etc/zone.properties後添加定義gsp的properties行: gsp.properties=/www/jserv/etc/gsp.properties 基本上jserv.properties就設置好了。 *gsp.properties 至於zone.properties就不需要設置,因爲這裏定義了一個新的zone-->gsp,起作用的是gsp.properties。 找到: # List of Repositories 這行,然後添加以下幾行: repositories=/www/gnujsp/gnujsp10.jar repositories=/www/gnujsp/servlet-2.0-plus.jar repositories=/www/gnujsp/bean_jsp 其中第三行是定義了bean的回應目錄,這個目錄可以隨便定義。但是必須是真實存在的。 找到"# Servlet Aliases" 這行,添加別名行: servlet.gnujsp.code=org.gjt.jsp.JspServlet servlet.gnujsp.initArgs=checkclass=true,\(請注意不要斷行回車) Hello <%= s %> World! The Famous JSP Hello Program
<% SString s = "GNUJSP"; %> The following line should contain the text "Hello GNUJSP World!".
If thats not the case start debugging ...