Java Servlet的Web或應用程序服務器,並作為請求來自Web瀏覽器或其他HTTP客戶端和HTTP服務器上的數據庫或應用程序之間的中間層上運行的程序。
使用servlet,你可以收集來自用戶的輸入,通過網頁形式,現在從數據庫或其他來源的記錄,並創建動態網頁。
Java Servlet的服務程序使用公共網關接口(CGI)來實現同樣的目的。但Servlet的與CGI相比提供了幾個優點。
性能明顯更好。
Servlet的執行的Web服務器的地址空間內。這不是必要創建一個單獨的進程來處理每個客戶端請求。
Servlet是與平台無關的,因為它們是用Java編寫的。
在服務器上執行的Java安全管理器一組的限製,以保護服務器計算機上的資源。因此,Servlet是可信的。
Java類庫的全部功能,是一個servlet。它可以與小應用程序,數據庫或其他軟件,你已經通過socket和RMI機製看到了。
下圖顯示了在Web應用程序的位置Servelts。
Java Servlet是運行的Web服務器上有一個解釋器,支持Java Servlet規範的Java類。
Servlet可以使用在javax.servlet和javax.servlet.http包,這是一個標準的Java企業版的擴展版本的Java類庫,它支持大型開發項目的一部分。
這些類實現Java Servlet和JSP規範。在寫這篇教學的時候,該版本是Java Servlet 2.5和JSP 2.1。
就像任何其他的Java類,創建和編譯Java servlet。在您安裝的servlet包,並將它們添加到計算機上的類路徑中,你可以與JDK的Java編譯器或任何其他編譯器編譯servlet
這一步涉及到下載的Java軟件開發工具包(SDK),並適當地設置PATH環境變量的實現。
您可以下載SDK從Sun的Java servlet的網站:http://java.sun.com/products/servlet/.
一旦您下載的Java實現,按照給定的說明來安裝和配置的設置。最後,設置PATH和JAVA_HOME環境變量指向的目錄,其中包含java和javac,通常分彆為java_install_dir/bin和java_install_dir。
如果您運行的是Windows SDK安裝在C:\ jdk1.5.0_20,則需要在C:\autoexec.bat文件添加下麵一行。
set PATH=C:\jdk1.5.0_20\bin;%PATH% set JAVA_HOME=C:\jdk1.5.0_20
另外,在Windows NT/2000/XP中,您也可以右鍵單擊“我的電腦”,選擇“屬性”,再“高級”,再“環境變量”。然後更新PATH的值,然後按“確定”按鈕。
在Unix(Solaris和Linux等),如果SDK安裝在/usr/local/jdk1.5.0_20,你使用的是C shell,你把下麵的內容添加到.cshrc文件。
setenv PATH /usr/local/jdk1.5.0_20/bin:$PATH setenv JAVA_HOME /usr/local/jdk1.5.0_20
另外,如果你使用像Borland的JBuilder,Eclipse的IntelliJ IDEA的,或Sun ONE Studio集成開發環境(IDE),編譯並運行一個簡單的程序,應該讓IDE知道你在哪裡安裝Java。
許多的Web服務器支持Servlet是可以在市場上。有些Web服務器是可自由下載和Tomcat是其中之一。
Apache Tomcat是一個開放源代碼的Java Servlet和JavaServer Pages技術的軟件實現,可以作為一個獨立的服務器進行測試的Servlet,並可以集成到Apache Web服務器。下麵是在你的機器上安裝TOMCAT的步驟:
下載最新版本的Tomcat http://tomcat.apache.org/.
一旦你下載安裝,解壓縮的二進製分發到一個方便的位置。例如,在C:\apache-tomcat-5.5.29在Windows上,或/usr/local/apache-tomcat-5.5.29在Linux/ Unix和創建CATALINA_HOME環境變量指向這些安裝的位置。
Tomcat可以開始通過Windows機器上執行下麵的命令:
$CATALINA_HOME\bin\startup.bat or C:\apache-tomcat-5.5.29\bin\startup.bat
Tomcat可以啟動UNIX(Solaris和Linux等)的機器上執行下麵的命令:
$CATALINA_HOME/bin/startup.sh or /usr/local/apache-tomcat-5.5.29/bin/startup.sh
啟動後,默認包含在Tomcat中的Web應用程序將可通過訪問輸入http://localhost:8080/。如果一切順利,那麼它應該顯示以下結果:
有關配置和運行Tomcat的進一步信息包含在文檔可以在這裡找到,以及在Tomcat Web站點:http://tomcat.apache.org
停止Tomcat既可以通過Windows機器上執行下麵的命令:
C:\apache-tomcat-5.5.29\bin\shutdown
Tomcat在Unix(Solaris和Linux等)機器停止可以執行下麵的命令:
/usr/local/apache-tomcat-5.5.29/bin/shutdown.sh
由於servlet是不屬於的Java平台標準版,必須確定Servlet類的編譯器。
如果運行的是Windows,需要在C:\autoexec.bat文件中添加以下行。
set CATALINA=C:\apache-tomcat-5.5.29 set CLASSPATH=%CATALINA%\common\lib\servlet-api.jar;%CLASSPATH%
另外,在Windows NT/2000/XP中,您也可以右鍵單擊“我的電腦”,選擇“屬性”,再“高級”,再選“環境變量”。然後將更新CLASSPATH的值,然後按“確定”按鈕。
在Unix(Solaris和Linux等),如果使用的是C shell,你把下麵的幾行到.cshrc文件。
setenv CATALINA=/usr/local/apache-tomcat-5.5.29 setenv CLASSPATH $CATALINA/common/lib/servlet-api.jar:$CLASSPATH
注:假設你的開發目錄是C:\ServletDevel(Windows)或/usr/ServletDevel(UNIX),那麼你就需要在CLASSPATH中添加這些目錄以及類似的方式,類似已經在上麵添加一樣。
下麵是示例的源代碼結構的一個servlet的例子: Hello World:
// Import required java libraries import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // Extend HttpServlet class public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // Do required initialization message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); // Actual logic goes here. PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // do nothing. } }
讓我們在上麵的代碼中,編寫HelloWorld.java文件,把這個文件放在C:\ServletDevel(窗口)或/usr/ServletDevel(UNIX),那麼你將需要添加這些目錄在CLASSPATH中。
假設你的環境是正確,進入ServletDevel目錄和編譯HelloWorld.java中如下設置:
$ javac HelloWorld.java
如果servlet依賴於任何其他庫,你必須在你的CLASSPATH中包括JAR文件以及。我的servlet-api.jar隻包括JAR文件,因為這裡冇有使用任何其他庫中的Hello World程序。
此命令行使用內置的javac編譯器附帶的Sun Microsystems Java軟件開發工具包(JDK)。為使此命令正常工作,必須包括您所使用的Java SDK的位置到PATH環境變量。
如果一切順利,上麵編譯生成HelloWorld.class的文件在同一目錄下。下一節將解釋如何將部署在生產一個編譯Servlet。
默認情況下,一個servlet的應用程序位於路徑<Tomcat-installation-directory>/webapps /ROOT目錄和類文件在<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes中。
如果有一個完全合格的類名稱com.myorg.MyServlet,那麼這個servlet類必須位於WEB-INF/classes/com/myorg/MyServlet.class中。
現在,讓我們HelloWorld.class複製到<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes中,並在web.xml文件中創建以下條目在<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/
<servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping>
上麵的條目要創建內部<web-app>...</ web應用程序>標簽在web.xml文件中。有可能是在此表中的各個條目已經可以,但不要在意。
幾乎已經完成了,現在讓我們使用<Tomcat-installation-directory>\BIN\的startup.bat(在Windows上)或<Tomcat-installation-directory>/BIN/startup.sh(啟動tomcat服務器上的Linux / Solaris等),最後在瀏覽器的地址框中輸入http://localhost:8080/HelloWorld。如果一切順利,你會得到下麵的結果:
要詳細的servlet,可以通過完全教學: Java Servlets.