一个简单的tomcat应用(HFSJ)

来源:互联网 发布:监测数据造假怎么举报 编辑:程序博客网 时间:2024/06/07 06:10

内容

本文是《Head First Servlet & JSP》的第一个例子。此为学习笔记。

这里是创建一个非常简单的tomcat应用,目的在于了解tomcat应用的目录结构、关键元素。

注:中文版有些笔误,比如java源代码中import大小写错误、web.xml中server首字母大写。

创建源代码目录结构

创建一个文件夹,比如名为project1,然后创建如下的子目录和文件。——这里的class是后面javac生成的。另外,建议不要像本文这样放到tomcat目录下面。

D:\tomcat\webapps\project1>tree /F文件夹 PATH 列表卷序列号为 5645-602FD:.├─classes│      Ch1Servlet.class│├─etc│      web.xml│├─src│      Ch1Servlet.java│└─WEB-INF    └─classesD:\tomcat\webapps\project1>

编写源文件

在文本编辑器下面编写即可。

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="heep://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"    version="2.4">    <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></web-app>

Ch1Servlet.java

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

编译java文件

在命令行下面执行javac命令:

javac -classpath ../../lib/servlet-api.jar -d classes src/Ch1Servlet.java

如果源代码有语法错误,这里就会显示出来。比如按照中文版在import的时候,用首字母大写的Servlet就会出错。

示例错误:

D:\tomcat\webapps\project1>javac -classpath ../../lib/servlet-api.jar -d classes src/Ch1Servlet.javasrc\Ch1Servlet.java:1: 错误: 程序包javax.Servlet不存在import javax.Servlet.*;^src\Ch1Servlet.java:2: 错误: 程序包javax.Servlet.http不存在import javax.Servlet.http.*;^src\Ch1Servlet.java:5: 错误: 找不到符号public class Ch1Servlet extends HttpServlet {                                ^  符号: 类 HttpServletsrc\Ch1Servlet.java:7: 错误: 找不到符号    public void doGet(HttpServletRequest request,                      ^  符号:   类 HttpServletRequest  位置: 类 Ch1Servletsrc\Ch1Servlet.java:8: 错误: 找不到符号                    HttpServletResponse response)                    ^  符号:   类 HttpServletResponse  位置: 类 Ch1Servlet5 个错误D:\tomcat\webapps\project1>

创建tomcat应用目录

创建tomcat应用目录,并把project1下的web.xml、以及javac生成的Ch1Servlet.class放到对应位置。

D:\tomcat\webapps\ch1>tree /F文件夹 PATH 列表卷序列号为 5645-602FD:.└─WEB-INF    │  web.xml    │    └─classes            Ch1Servlet.classD:\tomcat\webapps\ch1>

验证

以上准备妥当之后,重启tomcat。——每次修改web.xml之后,都需要重新启动tomcat。

如果一切正常(web.xml语法正常),那么会有类似下面的日志:

信息: Deploying web application directory D:\tomcat\webapps\ch1八月 11, 2016 8:15:03 下午 org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom信息: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [205] milliseconds.八月 11, 2016 8:15:03 下午 org.apache.catalina.startup.HostConfig deployDirectory信息: Deployment of web application directory D:\tomcat\webapps\ch1 has finished in 717 ms

如果web.xml有语法错误,则tomcat日志有提示信息,遵照修改即可。示例错误日志:

信息: Deploying web application directory D:\tomcat\webapps\ch1八月 11, 2016 8:14:37 下午 org.apache.tomcat.util.digester.Digester fatalError严重: Parse Fatal Error at line 15 column 3: 元素类型 "Servlet" 必须由匹配的结束标记 "</Servlet>" 终止。org.xml.sax.SAXParseException; systemId: jndi:/localhost/ch1/WEB-INF/web.xml; lineNumber: 15; columnNumber: 3; 元素类型 "Servlet" 必须由匹配的结束标记 "</Servlet>" 终止。        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)

打开页面

浏览器输入URL(http://localhost:8080/ch1/Serv1),会显示预期结果。

如果按照中文版的web.xml,Servlet首字母大写了,则tomcat启动的时候不会有错误提示;但浏览器总是返回404。

0 0
原创粉丝点击