JavaWeb 访问servlet

什么是Servlet?
servlet是在服务器端运行的一个小程序。一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问这个驻留在服务器内存里的servlet程序。
servlet为Java程序提供了一个统一的web应用规范。
tomcat和servlet是什么关系?
大家后面写程序应该看到,servlet没有main方法,在面临如何启动、如何关闭、如何寻找等操作上,我们需要一个程序或者说应用来对servlet进行控制,这样的一个程序或者应用就称之web容器。tomcat就是这样一个web容器,我们发出对servlet的调用请求,到达服务器端,由tomcat全面负责进行接管,由tomcat与servlet进行协调。
在tomcat的webapps目录下建立以下目录结构。
JavaWeb 访问servlet

  1. 注意字母大小写、横线,要与上图完全一致。
  2. WEB-INF目录是Servlet服务器的一个约定,它用来存放配置文件和库文件,必须是这个名字。
  3. src目录是打算写代码的(按说不应该在tomcat随意建立自己的目录,写代码,我们现在做实验,只好先暂时这样)。

现在我们打算写一个Servlet程序。
手工编写Servlet程序的步骤
(1)继承HttpServlet

(2)重写doGet()或者doPost()方法

(3)在web.xml中注册Servlet

Ch1Servlet.java源代码
现在我们打算写一个Servlet程序。
手工编写Servlet程序的步骤
(1)继承HttpServlet

(2)重写doGet()或者doPost()方法

(3)在web.xml中注册Servlet

Ch1Servlet.java源代码

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Ch1Servlet extends HttpServlet{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        java.util.Date today = new java.util.Date();
        out.println("<html>" + "<body>" + "<h1 align=center>HF\'s Chapter1 Servlet</h1>"
        + "<br>" + today + "</body>" + "</html>");
    }
}

编译写好的源代码文件

进入命令行窗口,用javac命令对源代码文件进行编译,会生成同名的class文件。(自己到官网去down一个合适版本的tomcat,最好装在C盘根目录下)

javac -classpath /usr/local/Cellar/tomcat/8.0.32/libexec/lib/servlet-api.jar -d webapps/ch1/WEB-INF/classes webapps/ch1/src/Ch1Servlet.java

对上面编译命令的解释:我用javac命令,要用到servlet-api.jar类库,对Ch1Servlet.java进行编译,把编译好的文件放到classes目录中。所以上面的编译命令由三部分组成。

在web.xml文件中进行Servlet的映射配置
我现在想输入一个URL,让URL去调用刚才的Servlet程序。那么必须让URL和这个Servlet产生关联。这个关联必须写在web.xml配置文件中。
web.xml是tomcat中最重要的一个配置文件。

在WEB-INF目录下,新建一个web.xml文件,输入如下代码。

<servlet>
    <servlet-name>Chapter1 Servlet</servlet-name>
    <servlet-class>Ch1Servlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Chapter1 Servlet</servlet-name>
    <url-pattern>/Serv1</url-pattern>
</servlet-mapping>

最后的文件、目录结构应该如下

JavaWeb 访问servlet启动tomcat,看效果

访问http://localhost:8080/ch1/Serv1,会看到如下界面:

JavaWeb 访问servlet