实现第一个Servlet程序
为了帮助大家快速学习Servlet开发,接下来,分步骤实现一个Servlet程序,具体如下:
(1)在目录“D:\cn\itcast\firstapp\servlet”下编写一个Servlet。由于直接实现Servlet接口来编写Servlet很不方便,需要实现很多方法。因此,我们可以通过继承Servlet接口的实现类javax.servlet.GenericSerlvet来实现。具体代码如例1所示。
例1 HelloWorldServlet.java
1 package cn.itcast.firstapp.servlet;
2 import java.io.*;
3 import javax.servlet.*;
4 public class HelloWorldServlet extends GenericServlet {
5 public void service(ServletRequest request, ServletResponse
response)
6 throws ServletException, IOException {
7 // 得到输出流PrinterWriter对象,Servlet使用输出流来产生响应
8 PrintWriter out = response.getWriter();
9 // 使用输出流对象向客户端发送字符数据
10 out.println("Hello World");
11 }
12 }
从例1中可以看出,HelloWorldServlet类继承GenericServlet后,只实现了service()方法。这是因为GenericServlet类除了Servlet接口的service()方法外,其它方法都已经实现。由此可见,继承GenericServlet类比实现Servlet接口更加简便。
(2)打开命令行窗口,进入HelloWorldServlet.java所在目录,编译HelloWorldServlet.java文件,程序报错,如图1所示。
图1 编译HelloWorldServlet.java的出错信息
从图1中可以看出,编译错误提示 “程序包javax.servlet不存在”。这是因为Java编译器在CLASSPATH环境变量中没有找到javax.servlet包。因此,如果想编译Servlet,需要将Servlet相关jar包所在的目录添加到ClASSPATH环境变量中。
(3)由于Servlet程序是一个JavaEE程序而不是JavaSE程序,因此所有的jar文件都需要自己手动的加入classpath环境变量中。进入Tomcat安装目录下的lib目录,里面包含了许多与Tomcat服务器相关的jar文件,其中servlet-api.jar文件就是与Servlet相关的jar文件,如图2所示。
图2 Servlet-api.jar
(4)打开命令行窗口,通过“set classpath”命令将图4-2所示的servlet-api.jar文件所在的目录添加到CLASSPATH环境变量中,如图3所示。
图3 设置CLASSPATH环境变量
(5)重新编译HelloWorldServlet.java,如果程序编译通过,则会生成一个HelloWorldServlet.class文件,如图4所示。
图4 HelloWorldServlet.class文件
(5)在Tomcat的 webapps下创建目录chapter04,chapter04为Web应用的名称,然后在chapter04目录下创建/WEB-INF/classes目录,将图4所示的HelloWorldServlet.class文件拷贝到classes目录下,需要注意的是,在拷贝时要将该文件所在的包目录(/cn/itcast/firstapp/servlet)一起拷贝过去,如图5所示。
图5 classes目录下的HelloWorldServlet.class文件
(6)进入目录WEB-INF,编写一个web.xml文件,关于web.xml文件的编写方式可以参考Tomcat安装目录下的web.xml文件,该文件位于examples/WEB-INF子目录下。下面是chapter04/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">
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>cn.itcast.firstapp.servlet.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/HelloWorldServlet</url-pattern>
</servlet-mapping>
</web-app>
在上面的配置信息中,元素<servlet>用于注册Servlet,它的两个子元素<servlet-name>和<servlet-class>分别用来指定Servlet名称及其完整类名。元素<servlet-mapping>用于映射Servlet对外访问的虚拟路径,它的子元素<servlet-name>的值必须和<servlet>元素中<servlet-name>相同,子元素<url-pattern>则是用于指定访问该Servlet的虚拟路径,该路径以正斜线(/)开头,代表当前Web应用程序的根目录。
(7)启动Tomcat服务器,在浏览器的地址栏中输入URL地址http://localhost:8080/chapter04/HelloWorldServlet
访问HelloWorldServlet,浏览器显示的结果如图6所示。
图6 运行结果
从图6中可以看出,客户端可以正常访问Tomcat服务器的Servlet。至此,我们的第一个Servlet程序实现了。