学习资料
-------------
《Tomcat与Java Web开发技术详解》
用 Tomcat 和 Eclipse 开发 Web 应用程序
(2007 年 5 月 25 日) 若将 Eclipse 与 Apache Tomcat 直接集成,那么将其用作 Web 开发平台就会更为容易。通过本文,了解如何设置 Eclipse 和 Apache Tomcat V5.5 来开发经典的 Hello World servlet。
下载安装Tomcat
-----------------------
到http://tomcat.apache.org/下载tomcat5.5.26,解压到指定目录,如果先前没有定义环境变量JAVA_HOME,则先要创建,指向JDK安装根目录(如:c:/JDK)。运行bin里面的startup,就可以启动tomcat服务器,运行http://localhost:8080/可看到结果。
Tomcat组件之间的关系
----------------------------------
<Server> <!-- 可包含一个或多个Service -->
<Service> <!-- 可包含一个或多个Connector,只含一个Engine -->
<Connector/>
<Engine> <!-- 可包含一个或多个Host -->
<Host> <!-- 可包含一个或多个Context -->
<Context> <!-- 代表单个Web应用 -->
</Context>
</Host>
</Engine>
</Service>
</Server>
Tomcat的目录结构
--------------------------
/bin 启动和关闭Tomcat的脚本文件
/conf 存放Tomcat服务器的各种配置文件,最重要的是server.xml
/server
/server/lib 存放Tomcat服务器所需要的各种JAR文件
/server/webapps 存放Tomcat自带的两个web应用:admin和马nager
/common/lib 存放Tomcat服务器和所有web应用都能访问的JAR文件
/shared/lib 存放所有web应用都能访问的JAR文件
/logs 存放Tomcat的日志文件
/webapps 发布web应用
/work JSP生成的Servlet
Web 应用的目录结构
-----------------------------
/helloapp Web应用的根目录,所有JSP和HTML文件都放在此目录下
/helloapp/WEB-INF 存放Web应用的发布描述文件web.xml
/helloapp/WEB-INF/classes 存放各种class文件,Servlet类文件也放在此目录下
/helloapp/WEB-INF/lib 存放Web应用所需要的JAR文件
Tomcat的类装载器先装载classes目录下的类,然后是lib目录下的类。
创建最简单web应用
---------------------------
1. 在webapps目录下创建一个新目录hellapp,在helloapp中再创建一个目录WEB-INF。在helloapp下创建一个index.html,内容可以很简单为"hello world"。在WEB-INF中创建一个web.xml,内容不能为空,至少为:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
</web-app>
2. 在conf/server.xml中找到<host>在里面加入内容:
<Context path="/hello" docBase="helloapp" debug="0" reloadable="true" />
<!-- path指定web应用的URL入口;docBase指定web应用的文件路径 -->
<!-- /hello或者/helloapp都能工作 -->
启动Tomcat,敲入http://localhost:8080/helloapp则可以显示index.html中的内容了。
扩展Web应用(Servlet)
-----------------------------------
1. 创建HelloServlet.java
package com.example.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
public HelloServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("Hello World");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
编译后,将HelloServlet.class放置到/WEB-INF/classes/com/example/servlets(这里要注意package)中。如果HelloServlet.java是用javac来编译的话,需要设置classpath=%CATALINA_HOME%/common/lib/servlet-api.jar,才能正常编译。
2. 修改web.xml,加入HelloServlet的配置。
<servlet>
<description></description>
<display-name>HelloServlet</display-name>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.servlets.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
3. 运行http://localhost:8080/HelloServlet