官术网_书友最值得收藏!

第2章 搭建運行和發環境開

工欲善其事,必先利其器。學習計算機技術,光看理論是不夠的,還必須要多加實踐。因此本章先介紹如何搭建運行和開發環境,讓讀者知道如何編譯、部署和運行Web程序,在后續章節講解具體技術時就可以親自實踐了。

本章內容包括:

★ 概述運行和開發環境,從整體上了解開發和運行的過程和所需的工具。

★ 學習JDK、Tomcat的安裝、配置和測試。

★ 開發并部署簡單的例子,熟悉工具的使用。

通過本章的學習,讀者應該就能使用JDK、Tomcat進行簡單Web程序的開發和部署工作了,這對本書大部分內容的學習都適用,后續章節在需要時還會介紹其他工具。讀者以后可能會使用不同的工具,但它們的使用原理是一樣的,掌握了其中一些就很容易舉一反三。

注意

安裝及熟悉工具的使用是很麻煩的一步,主要靠摸索。如果碰到困難請慢慢來,不要在這里就放棄。

進入第02章

2.1 Servlet和JSP開發環境概述

和開發其他應用程序類似,用Servlet和JSP開發Web應用程序也需要開發和運行環境。所需要的環境及關系如圖2-1所示。

圖2-1 開發、運行環境關系圖

Java虛擬機是所有Java程序運行的基礎,Java的跨平臺之所以能實現,是由于它將操作系統之間的差異都隱含在JVM中,而向外提供一個統一的接口。實際上也有認為Java其實不是跨平臺,它本身就是一個平臺,因此也有“Java平臺”這樣的說法。現在的Web容器和開發工具一般也是Java寫成的,因此需要底層JVM的支持。

Sun、IBM等很多公司都實現了不同平臺上的JVM,本章中將使用Sun公司的JDK。

Web應用程序都是在Web容器上運行的,由Web容器負責解決Web應用的很多問題,并提供給Web程序一個運行環境。現在已經有很多Web容器出現了,如Tomcat、Resin等,本書中將使用免費開源的Tomcat。

最后是開發工具。跟使用其他語言編寫的程序一樣,需要一個能編譯Java源程序的工具,JDK本身自帶的工具javac就是編譯Java源程序的工具。但當程序更大更復雜時,利用開發工具進行管理將使工作變得更輕松。現在已經出現很多優秀的開發工具了,如Eclipse、JBuilder、NetBean等,在后續章節中將介紹Eclipse的使用。

Web程序開發、編譯后,還需要部署到Web容器上才能運行。一般來說,部署需要考慮的問題較多,而且有不少和具體Web容器相關的問題,因此本章先通過一個簡單的例子說明基本的步驟,后續章節學習其他知識時再介紹相關的部署項。

注意

本章中介紹的工具安裝都是基于Windows平臺的,但其他系統的安裝配置基本原理是一樣的,讀者有需要可參考相關資料。

2.2 安裝和配置JDK

本節介紹在Windows平臺下進行Sun公司JDK的安裝和配置。JDK是Java Development Kit(Java開發工具)的縮寫,它包含了JRE(Java Runtime Enviroment,Java運行時環境),這就是JVM;也包括了一些用于開發Java程序的簡單工具,如編譯Java源程序的javac、用于打包的jar等。對于簡單的程序使用這些工具就已足夠,但當程序較大時為了管理方便,一般還使用集成開發工具,因此后面還介紹了Eclipse。

2.2.1 JDK的安裝

JDK可從Sun公司的網站下載,可選擇JDK的J2SE或J2EE版本。J2EE版本包括了支持J2EE特性的所有開發包,如果Web程序不需要J2EE的EJB(Enterprise JavaBean)、JMS(Java Message Service,Java消息服務)等特性,建議選擇J2SE版本,Web容器會提供開發Servlet和JSP所用到的包,可用開發工具將它們集成。

可在http://java.sun.com/javase/downloads/index.jsp中下載選擇所需的J2SE版本,按照頁面的指示信息操作即可。這里需要選擇1.4.2以上版本,但最好選擇最新的release版本。注意現在是介紹Windows平臺下的安裝,所以請選擇Windows平臺的版本。大概過程如圖2-2所示。

圖2-2 JDK下載頁面操作示意

注意

以下圖例依實際情況和選擇版本的不同,某些內容可能有變化,這里僅供參考。它們基本的布局和操作是類似的,不難變通。

還有下載時注意選擇的是JDK而不是JREJRE僅包含運行環境,不包含javac等開發工具。

最后打開安裝程序并按指示操作即可,如果沒其他問題,使用默認的設置來安裝就可以了。

注意:

安裝路徑中不要含有空格和中文字符,否則后面的Tomcat安裝時可能會出現問題。如圖2-3所示是默認的安裝路徑,但“ Program Files ”這個目錄名有空格,因此要另外選擇。

圖2-3 安裝JDK的路徑選擇

2.2.2 JDK的配置

現在不需要太多JDK配置的知識,這里介紹一下PATH和CLASSPATH這兩個環境變量。

PATH環境變量的值是一系列用分號(;)分隔的路徑,它實際上是被操作系統使用的,而不是為Java程序專用。當需要調用某程序,如在命令行窗口或是批處理文件(bat后綴)中指定要運行的程序名,但又沒有指定完整的路徑時,則系統先順序在當前目錄查找,如果找不到就繼續按PATH指定的路徑逐個查找。將程序的路徑加入到PATH當中,就可以在任何目錄下都運行程序,而不必到程序目錄下,相當方便。

本節講的是JDK的配置,之所以提到這個環境變量,是因為常常用命令行的方式來調用Java工具進行編譯,這樣將Java工具所在的路徑加入PATH中會方便很多。在編譯簡單的程序時,直接用命令行方式更方便。

現在講如何修改PATH變量。如果是Windows9X/Me系統,則需要修改“C:\autoexec.bat”文件來設置該變量,修改后必須重新啟動才能生效。可以用文本編輯工具打開“C:\autoexec.bat”,并在文件末尾加入如圖2-4所示的內容。

圖2-4 在autoexec.bat文件中修改PATH

如果是Windows2000/XP系統,可以在桌面“我的電腦”上單擊右鍵,選“屬性”,然后選“高級”頁,單擊“環境變量”按鈕,可在此直接修改PATH,如圖2-5所示。修改后即可直接生效,無須重啟。

圖2-5 Windows2000/XP下修改PATH環境變量

要測試是否正確,只須打開命令行窗口輸入“java -version”命令,如果有版本信息顯示即表示找到程序,設置正確。

現在簡單說明一下CLASSPATH這個環境變量。

JDK工具加載類時,首先要找到相應的class文件,查找這些class文件的路徑稱為“類路徑”。對于Java本身的標準類,JDK可以從特定的路徑找到,無須設置;但對于非標準的類,如用戶編寫的類文件或是由第三方軟件商提供的擴展包,則需要指定額外的類路徑,不然在運行中找不到類文件時,JDK會拋出“ClassNotFoundException”異常。

如J2SE版本就沒有附帶Servlet包,如果用JDK編譯Servlet程序時,需要指定Servlet包所在路徑。一般有兩種方法可以設置額外的類路徑。

★ 設置CLASSPATH環境變量,它的值和PATH的類似,是一個或多個類路徑,用分號(;)分隔,這樣JDK工具就可以在這些路徑尋找class文件了。在Java世界里,經常將一系列的class文件打包成jar文件以方便管理,因此在CLASSPATH中的路徑也可以設置成具體的jar文件,JDK工具會自動解開這個包并提取需要的class文件;

★ 在調用JDK工具時可以通過參數指定類路徑,如調用javac或java工具時,可以通過參數“-cp路徑1;路徑2;..”來指定,它用“-cp”開頭,之后的路徑寫法和CLASSPATH值的寫法一樣。需要注意的是,當設置了CLASSPATH的值,同時又提供了“-cp”的參數,則CLASSPATH的值會被忽略。

除了學習外,一般情況下都不用CLASSPATH環境變量來設置類路徑。因為它對系統的所有程序都是可見的,如果系統同時運行多個Java程序,但又使用共同的CLASSPATH來設置類路徑,很容易引起混亂。而Java開發工具和Web容器等,一般有自己的管理機制為JVM設置合適的類路徑,也不需要用到CLASSPATH。

注意

有些書籍和資料可能會提到“在配置JDK時,要在CLASSPATH環境變量中加入標準class的路徑,否則在編譯和運行時會出現找不到class文件的錯誤”這些說法。這些是舊版本JDK的做法了,現在的JDK(如上面介紹的1.5版)使用了很復雜的查找機制,默認時就已經設置一部分的路徑——包括標準包、當前目錄等,因此不必重復。而TomcatEclipse等工具也會自己管理類路徑。在本書中,如無特別說明,一般不需要專門考慮類路徑的設置問題。

2.3 安裝和配置Tomcat

這一節介紹Windows平臺下Tomcat的安裝。Tomcat的安裝很簡單,但完整配置的內容卻很豐富。幸好對一般的應用(如這里的學習)只需要少量簡單的配置即可,以后在介紹其他內容時會繼續介紹相關的配置。

2.3.1 安裝Tomcat服務器

Tomcat可以在http://tomcat.apache.org/下載,在頁面左邊選擇所需要的版本。本書是講述Servlet 2.4和JSP 2.0的,因此請下載5.0或更高的版本。

單擊所需版本的超鏈接后,轉入下載頁面。目前的安裝只需要下載Binary Distributions的Core部分即可,如圖2-6所示。

圖2-6 Tomcat下載頁面

將壓縮包解壓到想安裝的目錄。假如安裝目錄是“C:\tomcat”,則解壓后的目錄結構應如圖2-7所示。

圖2-7 Tomcat安裝后的目錄結構

之后是修改安裝目錄下的“bin\catalina.bat”文件,在注釋后增加“JAVA_HOME”這個環境變量,如圖2-8所示,注意圖中的說明。

圖2-8 修改catalina.bat文件

注意

如果系統是Windows2000/XP,也可以下載圖2-6所示的Windows Service Installer,它將Tomcat注冊成系統的服務,會自動尋找系統中已安裝的JDK,不用設置。直接啟動或關閉服務就可以啟動關閉Tomcat

2.3.2 測試安裝是否成功

首先啟動Tomcat,有兩種方法可以打開。

★ 在Windows2000/XP系統下,雙擊安裝目錄下的\bin\startup.bat文件即可。

★ 由于.bat文件的問題,在Windows9x/Me系統下直接運行startup.bat會出現問題,因為它使用了“%cd%”這樣的變量。這時,需要按圖2-8所示在catalina.bat文件中添加“set cd=.”,而運行方式改為打開安裝目錄下的\bin\catalina.bat文件并傳入參數“run”,一般可以建立一個快捷方式來做,如圖2-9所示。

圖2-9 Windows9x/Me下設置啟動Tomcat的快捷方式

注意

因為啟動Tomcat的.bat文件使用了大量的環境變量,在Windows9x/Me系統中直接運行會報告“out of environment space”的錯誤,這時可為該.bat文件建一個快捷方式并設置其“屬性”,選擇“內存”頁,在“初始環境”下拉列表框中選“4096”這項,這些如圖2-9所示。

Tomcat啟動后會在命令行窗口輸出啟動信息,啟動過程需要數秒——視機器性能而定,完成后窗口會顯示啟動所需的時間,如圖2-10所示。

圖2-10 Tomcat啟動時的顯示信息

啟動Tomcat后,打開瀏覽器,在地址欄輸入http://localhost:8080/,如果顯示出如圖2-11所示的頁面,表示Tomcat已經成功安裝設置了。如果不成功,請仔細按上述步驟檢查,或者另查資料解決問題。萬事開頭難,安裝工具確實有很多瑣碎的問題,請慢慢解決!

圖2-11 Tomcat安裝成功的測試頁面

要關閉Tomcat,對于Windows2000/XP系統,可以雙擊安裝目錄下的\bin\shutdown.bat文件來進行。而對于Windows9x/Me系統則需要調用catalina.bat并傳入參數“stop”,一般也是建一個快捷方式來進行,可參考圖2-9所示建“啟動快捷方式”的做法,唯一的區別就是將參數“run”改為“stop”。

2.4 開發第一個應用程序

現在已經學習了JDK、Tomcat的安裝和配置,本節將開發一個簡單的Web程序示例,通過這個例子學習如何編譯Servlet,如何將Web程序部署到Web容器中,這些都是以后學習時進行實踐的基礎。

這個應用有一個HTML頁面,它包含一個表單,用戶可從下拉列表中選擇一項并提交到服務器;在服務器端,分別用Servlet和JSP兩種方式處理該頁面。通過本例子將了解到如何將Servlet和JSP部署到服務器。

注意

現在主要目的是學習如何配置,ServletJSP代碼的具體含義在后續章節會學習。圖中加了注釋,讀者也可以嘗試理解一下,但不懂也沒關系,現在只要照著抄就可以了。

2.4.1 創建Form提交表單

現在先創建HTML頁面,將文件名設為form.html,代碼如圖2-12所示。

圖2-12 HTML代碼

2.4.2 創建表單處理Servlet

接著編寫處理請求的Servlet,該Servlet命名為ColorServlet,代碼如圖2-13所示。

圖2-13 Servlet代碼

可以直接用文本編輯器編寫Servlet,然后通過命令行調用javac編譯,但當使用J2SE版本時要將Tomcat安裝目錄下的\common\lib\servlet-api.jar文件加到類路徑中。假設Tomcat安裝在C:\tomcat\,則使用如下的命令將Servlet包所在位置加入到編譯時的類路徑中。

2.4.3 創建JSP顯示頁面

現在創建一個JSP頁面處理提交信息,將它命名為colorJSP.jsp。它的處理和生成內容跟Servlet相同,可用文本編輯器寫入如下代碼,如圖2-14所示。

圖2-14 JSP代碼

2.4.4 部署第一個Web應用

在將這些程序部署到Web容器之前,先講解一下Web應用程序的概念,以及它和Web容器的關系。

和桌面程序類似,一般將結構功能相關的程序文件組織在一起成為一個大的程序。Web程序也是這樣,將Web應用中相關的.html、.jsp、.servlet等文件組織在同一個Web程序中。Web應用程序的文件必須按一定的結構組織,J2EE定義了Web應用程序的結構,如圖2-15所示。

圖2-15 J2EE定義的Web程序結構

在圖2-15中可以看到,應用程序的根目錄下必須有一個WEB-INF文件夾,它包含web.xml文件,這是Web程序的發布描述文件(Web Applicatioin Deployment Description),用于告訴Web容器該程序的配置,如哪個URL跟哪個Servlet關聯等。WEB-INF和web.xml都是Web程序必須包含的,后續章節會說明如何用web.xml進行配置。

WEB-INF下還有classes和lib這兩個文件夾。classes下放置程序所用的class文件,如Servlet和其他輔助類。lib下則放置打包成jar格式的文件,如程序需要使用數據庫,數據庫廠商提供的驅動(一般是jar格式)就可以放在這里。

Web應用程序目錄的其他地方則放置其他資源,如JSP、HTML、圖片等。它們沒有結構限制,可以按需要的方式來組織。

Web程序要配置在Web容器下才能運行,這里需要考慮如下的問題。

★ Web程序文件夾必須放在什么地方,要對Web容器進行怎樣的配置讓Web容器找到它。

★ 瀏覽器是通過URL來訪問資源的,需要對Web容器做什么配置才能使它和URL關聯起來。

這些配置方式是Web容器相關的,一般需要查閱Web容器的文檔,所幸的是很多Web容器都會提供簡單的方式。

對于Tomcat,將Web程序目錄放在Tomcat安裝目錄的Webapps文件夾下即可。假如Tomcat安裝目錄是“C:\tomcat”,而程序放在mystudy文件夾中,則將整個mystudy的內容放在“C:\tomcat\webapps\”下即可,這時Web程序的文件就放在“C:\tomcat\webapps\mystudy\”下。

注意

為了敘述方便,本節后面假設Tomcat的安裝目錄就是“C:\tomcat”,讀者實踐時請根據自己的實際情況修改。

對于Web程序和URL的關聯,在Tomcat下,默認可以在URL中用Web程序的目錄名來訪問Web程序的資源。例如當Web程序目錄是mystudy時,可用如下URL來訪問。

現在配置并測試本節的例子。在C:\tomcat\webapps\下建立一個文件夾mystudy,然后按照圖2-15所示的結構在其下建立WEB-INF、classes、lib這些目錄。可以直接將C:\tomcat\webapps\ROOT\WEB-INF\web.xml復制過來使用。

將form.html放在mystudy下,啟動Tomcat(如果忘記了如何啟動請看第2.3.2節)。打開瀏覽器并輸入“http://localhost:8080/mystudy/form.html”,這時應看到如圖2-16所示的內容。

圖2-16 訪問form.html

如果看到內容,那已經成功配置第一個Web程序了!

提示

讀者可能會問,URL中的8080端口是怎樣來的?還有為什么第2.3.2節中測試Tomcat時只需輸入“http://localhost:8080/ ”,不需要指定Web程序名也能看到內容?

8080Tomcat默認的監聽端口,如果要修改它,可以打開Tomcat安裝目錄的conf文件夾中的server.xml文件,找到如圖2-17所示的位置,修改即可。如果修改成80,則URL中無須指定端口。注意修改完要重啟Tomcat才能生效。

圖2-17 修改Tomcat所用的端口

現在來配置JSP文件。JSP文件的配置和HTML一樣簡單,將colorJSP.jsp放到mystudy下,然后修改form.html中<form>的action屬性為“colorJSP.jsp”,重新訪問form.html。這時在下拉列表中選擇一項并提交,就能看到colorJSP.jsp的處理結果了,如圖2-18所示。

圖2-18 JSP處理結果

提示

第一次訪問該JSP時要等待一會才顯示結果,這是因為第一次訪問時要對JSP進行編譯,但之后的訪問就不需要了。如果修改了JSP的內容后再次訪問(無須重啟),則Web容器會重新編譯。很多Web容器默認采用這種方式監視JSP的修改情況,方便開發和調試。很多Web容器都提供了相關的配置來取消監視修改情況,以提高部分性能。實際產品在部署時也可以用相關工具對JSP進行預編譯,避免了初次訪問的延遲情況。

最后配置Servlet,首先將ColorServlet.java編譯,然后將生成的class文件放到C:\tomcat\webapps\mystudy\WEB-INF\classes下。

接著打開Tomcat安裝目錄的conf文件夾的web.xml文件,找到如圖2-19所示的內容,按圖示去掉注釋。

圖2-19 修改conf/web.xml

完成這兩步后重啟Tomcat,之后修改form.html中<form>的action屬性為“servlet/ColorServlet”(注意大小寫)。重新訪問form.html,提交表單,這時ColorServlet將處理該請求并返回內容,如圖2-20所示。

圖2-20 Servlet處理結果

這一步比前兩步要麻煩一點,現在解釋一下。

一般情況下,URL可以按照Web程序的目錄結構來訪問資源。如之前的HTML和JSP就是如此,它們直接放在Web程序的根目錄下,所以訪問的URL在Web程序名后加上這些文件的名字就能訪問了。

但對于Servlet,它實際上是Java類,放在WEB-INF下,J2EE的標準規定需要通過web.xml的配置將Servlet和URL關聯起來才能讓外界訪問,對每個Servlet都要這樣設置。很明顯,這樣在開發和測試Servlet時會麻煩很多,因此很多Web容器都提供了一種簡便的方式來訪問。如Tomcat,按圖2-19所示那樣修改后,地址中就可以用“servlet/servlet完整類名”的方式來訪問了。請注意圖2-20中地址欄的內容,Web程序是沒有Servlet這個目錄的,但依然能得到結果,這是因為Web容器知道這個URL是和Servlet關聯的,它會調用相應的Servlet來進行處理。

本例中的ColorServlet是沒有放在package中的。當有package時,如在ColorServlet.java文件開頭處加入“package com.cxpub.chapter2”; 則在配置時ColorServlet.class必須放在“C:\tomcat\mystudy\WEB-INF\classes\com\cxpub\chapter2”下,這時的訪問方式變成 “http://localhost:8080/mystudy/servlet/com.cxpub.chapter2.ColorServlet”,讀者可嘗試一下。

提示

上面修改的文件是 C:\tomat\conf\web.xml,它跟Web程序mystudy\WEB-INF\web.xml有什么關系呢?其實這是Tomcat的特點之一,這個web.xml的內容對所有的Web應用程序都有效,Tomcat在啟動Web程序時會將這個文件的內容和每個Web程序的web.xml合并起來。Tomcat實際上允許Web程序的WEB-INF/web.xml不存在時也可以部署,因為conf\web.xml會應用到該程序的配置中。讀者可嘗試去掉mystudy中的web.xml文件然后重啟Tomcat看結果如何。

但要注意,這是Tomcat特有的行為,并非J2EE的標準,對其他Web容器未必有效。現在提出這個方法是因為它簡單,適合開發和調試,本書中如無特別說明,一般可用這種方法來配置,但對實際產品部署時應禁止這種行為。本書后續章節會講解J2EE定義的標準配置方法。

現在讀者應該已經知道如何在Web容器中部署Web應用程序了。在學習后面章節時將使用這些方法來進行實踐,因此讀者一定要熟悉本節的內容。

2.5 小結

本章學習了JDK、Tomcat的安裝和配置,也通過一個例子學習了如何在Tomcat中部署Web程序,現在總結一下。

運行Java程序需要Java虛擬機的支持,一般的Web容器和開發工具也是用Java開發的,也需要在JVM的基礎上運行。對Web應用程序的開發,需要使用開發工具編譯Java文件,然后將所有資源文件部署到Web容器上運行。

本章在JVM方面介紹了Sun公司的JDK的安裝,Web容器則介紹了Tomcat的安裝和配置。

Web應用程序是按照一定的結構組織起來的程序、頁面和其他資源文件,他必須包含WEB-INF目錄,WEB-INF目錄下必須包含Web程序描述文件web.xml。WEB-INF目錄下還包括classes和lib目錄,classes目錄放置class文件,lib目錄則放置jar文件,其他的資源文件則可以按照合適的方式組織。

Tomcat中,默認可以在URL中通過Web程序目錄名訪問特定的Web程序。可以直接在URL中,按HTML、JSP和其他文件的目錄結構來訪問這些資源。而Servlet是Java類,需要放到Web程序目錄“/WEB-INF/classes/”下,一般需要在web.xml中對每個Servlet都指定它匹配的URL,瀏覽器才能通過這些URL來訪問Servlet。Tomcat提供了一種簡便的方法,使得只配置一次,之后就可以用簡單的方式來訪問Servlet了,但這是Tomcat特有的行為,不是J2EE標準定義的,不能用在其他Web容器上。

主站蜘蛛池模板: 和平区| 岫岩| 岳阳县| 沙洋县| 涪陵区| 普安县| 南宁市| 新兴县| 吉安市| 齐齐哈尔市| 蓬莱市| 伊川县| 嵊州市| 于田县| 通河县| 吉木乃县| 清镇市| 横峰县| 伊通| 鹰潭市| 神木县| 怀远县| 泰州市| 鄂温| 樟树市| 焦作市| 西林县| 饶阳县| 滕州市| 石首市| 天峻县| 赤峰市| 金华市| 南丰县| 宁化县| 茶陵县| 嘉祥县| 壶关县| 广灵县| 广平县| 托里县|