学科分类
目录
Java Web

实现第一个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所示。

img

图2 Servlet-api.jar

(4)打开命令行窗口,通过“set classpath”命令将图4-2所示的servlet-api.jar文件所在的目录添加到CLASSPATH环境变量中,如图3所示。

img

图3 设置CLASSPATH环境变量

(5)重新编译HelloWorldServlet.java,如果程序编译通过,则会生成一个HelloWorldServlet.class文件,如图4所示。

img

图4 HelloWorldServlet.class文件

(5)在Tomcat的 webapps下创建目录chapter04,chapter04为Web应用的名称,然后在chapter04目录下创建/WEB-INF/classes目录,将图4所示的HelloWorldServlet.class文件拷贝到classes目录下,需要注意的是,在拷贝时要将该文件所在的包目录(/cn/itcast/firstapp/servlet)一起拷贝过去,如图5所示。

img

​ 图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所示。

img

图6 运行结果

从图6中可以看出,客户端可以正常访问Tomcat服务器的Servlet。至此,我们的第一个Servlet程序实现了。

点击此处
隐藏目录