第一個Servlet程序—Hello World!
Step1:編寫HelloWorldServlet類
編寫一個Servlet,實際上就是編寫一個實現了javax.servlet.Servlet接口的類。
我的Tomcat安裝的路徑是H:\Java-tools\apache-tomcat-7.0.47
下面用%CATALINA_HOME%來代替
在%CATALINA_HOME%\webapps新建一個ex1目錄,再在ex1目錄下再建立一個子目錄src
將編寫好的HelloWorldServlet.java源文件放在子目錄src下。詳細代碼:
package org.lixiyu.ex1.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class HelloWorldServlet implements Servlet { private ServletConfig config; public void destroy(){} public ServletConfig getServletConfig() { return config; } /** *該方法很少使用,因此返回null即可 */ public String getServletInfo() { return null; } /** *ServletConfig對象由容器構造。容器在調用init()方法時,將其作爲參數傳給Servlet */ public void init(ServletConfig config) throws ServletException { this.config=config; } public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException { //得到PrintWriter對象。Servlet使用輸出流來產生響應 PrintWriter out=res.getWriter(); //向客戶端發送字符數據 out.println("Hello World"); //關閉輸出流 out.close(); } }
大概實現過程:
在Servlet中,主要的方法是service(),客戶端發出請求,Tomcat將調用Servlet實例的service()方法對請求進行處理。
service()方法中,先通過ServletResponse類中的getWriter()方法調用得到一個PrintWrite類型的輸出流對象out,然後調用out對象的println()方法向客戶端發送字符串“Hello World”,最後關閉out對象。
Step2:編譯HelloWorldServlet.java
打開命令提示符,轉到所在目錄%CATALINA_HOME%\webapps\ex1\src下,然後執行:
javac -d . HelloWorldServlet.java
在這之前要先配置servlet環境變量:將%CATALINA_HOME%\lib\servlet-api.jar加入到ClassPath環境變量下
否則會出現錯誤如下圖所示
正確編譯會生成一個org包
Step3:部署HelloWorldServlet
在Servlet容器運行時,Web應用程序的類加載器將首先加載classes目錄下的,其次纔是lib目錄下的類。如果這兩個目錄下存在同名的類,起作用的將是calsses目錄下的類。
在%CATALINA_HOME%\webapps\ex1目錄下新建一個子目錄WEB-INF(注意是大寫)
再在WEB-INF目錄下新建一個calsses目錄
將生成的HelloWorldServlet.class文件連同所在org包一起放到WEB-INF\classes目錄下
接下來,需要通過web.xml來對servlet進行部署
可以到%CATALINA_HOME%\webapps\ROOT\WEB-INF目錄下複製一份web.xml存放到ex1\WEB-INF目錄下。這個web.xml內容如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> </web-app>
然後編輯這個文件,添加HelloWorldServlet配置,如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>org.lixiyu.ex1.servlet.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorldServlet</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping> </web-app>
Step4:訪問HelloWorldServlet
確保Tomcat服務器已經啓動。
通過瀏覽器訪問,輸入地址:http://localhost:8080/ex1/helloworld