一个简单的tomcat应用(HFSJ)
2016-08-12 12:52
309 查看
内容
本文是《Head First Servlet & JSP》的第一个例子。此为学习笔记。这里是创建一个非常简单的tomcat应用,目的在于了解tomcat应用的目录结构、关键元素。
注:中文版有些笔误,比如java源代码中import大小写错误、web.xml中server首字母大写。
创建源代码目录结构
创建一个文件夹,比如名为project1,然后创建如下的子目录和文件。——这里的class是后面javac生成的。另外,建议不要像本文这样放到tomcat目录下面。D:\tomcat\webapps\project1>tree /F 文件夹 PATH 列表 卷序列号为 5645-602F D:. ├─classes │ Ch1Servlet.class │ ├─etc │ web.xml │ ├─src │ Ch1Servlet.java │ └─WEB-INF └─classes D:\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 {
^
符号: 类 HttpServlet
src\Ch1Servlet.java:7: 错误: 找不到符号
public void doGet(HttpServletRequest request,
^
符号: 类 HttpServletRequest
位置: 类 Ch1Servlet
src\Ch1Servlet.java:8: 错误: 找不到符号
HttpServletResponse response)
^
符号: 类 HttpServletResponse
位置: 类 Ch1Servlet
5 个错误
D:\tomcat\webapps\project1>
创建tomcat应用目录
创建tomcat应用目录,并把project1下的web.xml、以及javac生成的Ch1Servlet.class放到对应位置。D:\tomcat\webapps\ch1>tree /F 文件夹 PATH 列表 卷序列号为 5645-602F D:. └─WEB-INF │ web.xml │ └─classes Ch1Servlet.class D:\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" 必须由匹配的结束标记 "</Servle t>" 终止。 at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
打开页面
浏览器输入URL(http://localhost:8080/ch1/Serv1),会显示预期结果。如果按照中文版的web.xml,Servlet首字母大写了,则tomcat启动的时候不会有错误提示;但浏览器总是返回404。
相关文章推荐
- tomcat配置及使用(环境变量设置及测试,一个简单的web应用实例)
- tomcat配置及使用(环境变量设置及测试,一个简单的web应用实例)
- 自己写的一个简单的LBS应用 GoogleMap与Tomcat 服务器
- jBPM4.2 安装到tomcat 和 mysql上的步骤。并且创建一个最简单的应用
- Web开发之tomcat配置及使用(环境变量设置及测试,一个简单的web应用实例)
- 【转】解压缩版tomcat配置及使用(环境变量设置及测试,一个简单的web应用实例)
- 一个简单的tomcat部署方案
- 使用C#开发一个简单的P2P应用
- 一个简单的聊天室的实现----ICE应用系列文章之四
- Tomcat4/5连接池的设置及简单应用示例
- 使用C#开发一个简单的P2P应用
- 介绍一个简单的数据库开发平台——mcis应用服务器中间件
- 部署一个应用到Tomcat 5.5.17中的第一步配置
- J2ME应用实例——一个简单的计算器实现(附源代码)
- J2ME应用实例——一个简单的计算器实现(附源代码)
- socket_一个简单应用_源代码
- 使用C#开发一个简单的P2P应用
- 一个简单的定时器应用: VarTimer (java)
- 使用C#开发一个简单的P2P应用
- matlab的stateflow(状态流)简单应用--做一个计数器