为您的servlet 编写代码非常类似于编写其它Java源代码:使用您所选择的文本编辑器来创建Java源文件。在本例中,您将编写一个非常简单的servlet,命名为HitServlet。下面展示了它的源代码。HitServlet简单地统计它被调用的次数,并将含有此统计数值的信息发回客户端。(它不是线程安全的,在此处无关紧要。)
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class HitServlet extends HttpServlet {
private int mCount;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String message = "Hits: " + ++mCount;
response.setContentType("text/plain");
response.setContentLength(message.length());
PrintWriter out = response.getWriter();
out.println(message);
}
}
稍后,您将以特殊的目录结构建立一个WEB应用。使用该目录结构,服务器可以容易地找到应用所需的各个部份。从现在开始,为要问为什么,只要跟着往下做。将源代码保存为Tomcat 根目录下webapps/midp/WEB-INF/classes/HitServlet.java的一个文件。
如果不能正常编译,是因为Tomcat 根目录下common/lib/servlet.jar 文件包含了servlet API。您只需简单地将此文件的路径加到CLASSPATH中,就可以使用javac编译HitServlet.java。
也可以在系统属性中,或是在命令行编辑CLASSPATH:
C:/>set CLASSPATH=/jakarta-tomcat-4.0.2/common/lib/servlet.jar
C:/>javac HitServlet.java
为了发布您的servlet,您首先得理解关于Web应用的一些事情。一个Web应用是诸如HML、图像之类的静态内容,servlet以及其它可以通过Web接口访问的资源的集合。(我用的是Tomcat 5.0)进入您的/Tomcat 5.0/conf/Catalina/localhost目录,您可以看到一些文件(或目录),例如:admin.xml 和 manager.xml。我们将创建一个新的Web应用,并将我们的servlet放在里面。
在localhost目录下新建一个midp.xml文件,内容为:
然后保存文件。
以上所做的这些步骤是将进来的HTTP请求映射到特定目录中的Web应用。任何进来的以“/midp”(path)开头的HTTP请求都将明确地转交给位于webapps/midp(docBase)的Web应用。reloadable属性对于调试有极大的帮助:它告诉Tomcat自动重新载入任何您所修改后的servlet类,这样您就不必重新启动服务器。
现在您已经创建了一个Web应用,并充实了内容。Web应用有一个标准目录结构,该目录结构是由servlet规范所要求的。在此,我们不会深入讲述这个问题。Web应用必需的部份是web.xml文件,该文件描述了Web应用的不同部份。它位于每个Web应用的标准目录中,通常存贮为WEB-INF/web.xml。
现在应该为您的新应用创建一个web.xml文件了。您希望外面的世界可以访问您的servlet。您知道servlet的类名:HitServlet,而且您希望使用类似/hits的路径。请注意:servlet的路径是相对于Web应用的路径的,因此该servlet的全路径将是http://localhost:8080/midp/hits。拷贝下面的文本(或下载),并将它存为Tomcat根目录下的webapps/midp/WEB-INF/web.xml文件:
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
该文件告诉Tomcat将名为HitServlet的servlet映射到路径/hits上。servlet-name是web.xml的内部元素,它将servlet元素与servlet-mapping元素链接起来。名字bob仅仅是个示例,您可以选择任何您希望的名字。
您应记得您已经将您的servlet源代码存放于WEB-INF 目录下名为classes的标准目录中了。该目录是Tomcat期望发现servlet类文件的目录,因此,当您编译了源代码,那么servlet类就存放于正确的位置了。
现在您的servlet已经发布在您创建的新Web应用中了。但是,请注意,您必须重新启动Tomcat,这样它才认可您对server.xml文件所做的修改。
打开浏览器,浏览http://localhost:8080/midp/hits,您就可以测试您亲手所做的工作了。您应该能看到HitServlet的输出。重新载入该页面几次,观察点击数的增长。