Java Servlet Development Without Eclipse

446 阅读3分钟

0、写在前面

在用Java进行Web开发的过程中,往往都会使用Eclipse或者MyEclipse等集成开发环境。这些IDE固然方便,然而,对于新手来说,却屏蔽了许多实现的细节。本文的目的是通过一个简单的Servlet例子,来说明IDE到底帮我们完成了哪些工作。

1、简单的Servlet代码HelloWorld

Servlets是响应处理HTTP请求,实现javax.servlet.Servlet接口的Java类。Web应用的开发人员经常写继承javax.servlet.http.HttpServlet(它一个实现了Servlet接口,专为处理HTTP请求设计)的Servlets。

下面是一个用Servlet实现的HelloWorld:

// 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.
  }
}

2、Servlet编译

下面要进行编译,目前已经配置的Java相关环境变量,如下:

>Echo %classpath%
C:\Program Files\Java\jdk1.8.0_51\lib\tools.jar;C:\Program Files\Java\jdk1.8.0_51\lib\dt.jar
>Echo %path%
C:\Program Files\Java\jdk1.8.0_51\bin

由于上面的HelloWorld.java中引用了Servlet相关的类,这里在编译时要将Servlet相关的jar包(这里引用的类都包含在servlet-api.jar这个jar包中,该jar包在tomcat的安装目录中可以找到,这里的路径是D:\Java\apache-tomcat-7.0.68\lib)加入到CLASSPATH中。

D:\ServletDevel>javac -cp D:\Java\apache-tomcat-7.0.68\lib\servlet-api.jar HelloWorld.java
D:\ServletDevel>dir
2016/04/05  22:27             1,034 HelloWorld.class
2016/04/05  22:21               780 HelloWorld.java

3、Servlet部署

默认地,一个Servlet应用位于Tomcat安装目录\webapps\ROOT目录下,类文件放在Tomcat安装目录\webapps\ROOT\WEB-INF\classes目录下。

如果你有一个可用的类名com.myorg.MyServlet,那么对应的servlet类文件必须位于Tomcat安装目录\webapps\ROOT\WEB-INF\classes\com\myorg\MyServlet.class

下面,将HelloWorld.class文件拷贝到Tomcat安装目录\webapps\ROOT\WEB-INF\classes目录下(可能一开始classes目录是没有的,需要创建):

d:\ServletDevel>mkdir D:\Java\apache-tomcat-7.0.68\webapps\ROOT\WEB-INF\classes\
d:\ServletDevel>copy HelloWorld.class D:\Java\apache-tomcat-7.0.68\webapps\ROOT\WEB-INF\classes\
已复制         1 个文件。
d:\ServletDevel>cd D:\Java\apache-tomcat-7.0.68\webapps\ROOT\WEB-INF\classes\
D:\Java\apache-tomcat-7.0.68\webapps\ROOT\WEB-INF\classes>dir
2016/04/05  22:27             1,034 HelloWorld.class

并在文件web.xml(位于Tomcat安装目录\webapps\ROOT\WEB-INF\目录下)中创建如下的入口信息(entries):

<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.xml中可用的<web-app>...</web-app>标签内,可能其中已经有了各种各样的入口信息,没关系(直接添加就行)。下面是我最终的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>
    <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>

到这里,基本上就成功了。下面启动Tomcat服务器,在windows下是执行脚本``Tomcat安装目录\bin\startup.bat。最终,在浏览器的地址栏输入http://localhost:8080/HelloWorld`,如果一切顺利,就会得到如下的结果: