1、Tomcat 服务器 Tomcat 是 sun 公司在 JavaServer web Developmentlit 基础上推出的一款优秀的 java web 应用容器。 它是 Apache 的一个子项目,是一款 Servlet/JSP 容器 它是一个开源的软件,和大部分的主流 http 服务器能一起工作 运行稳定,可靠,效率高 Servlet 是一种运行在支持 Java 语言的服务器上的组件。Servlet 最常见的用途是拓展 Java web 服务器功能 它是一种动态加载的模块,为来自 web 客户的请求提供服务。他完全运行在 java虚拟机上(服务器端) ,因此不需要浏览器的支持 Tomc
2、at 作为 Servlet 容器,负责处理客户请求,把请求送给 Servlet 并把结果返回给客户 当客户请求访问某个 Servlet 时,Servlet 容器将创建一个 ServletRequest 对象和ServletResponse 对象 在 ServletRequest 对象中封装了客户请求信息,然后 Servlet 容器把 ServletRequest对象传给客户所请求的 Servlet。 Servlet 把响应结果写在 ServletResponse 中,由 Servlet 容器把响应结果传给客户。 Tomcat 服务器是由一系列可配置的组件构成,其中核心组件是 Servlet 容
3、器,它是所有其他 Tomcat 组件的顶层容器。 可以在/conf/server.xml 文件中进行配置,每个 Tomcat 组件在Server.xml 文件中对应一种配置元素 Tomcat 服务器 Server.xml 配置文件中的元素可以分为四类 顶层配置元素 和 连接器类元素 介于客户服 务之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应结果传递给客户 容器类元素 处理客户请求并生成响应结果的组件 嵌套类元素 可以加入到容器中的组件 元素代表整个 Servlet 容器,它是 Tomcat 实例的顶层元素。元素中可以包含一个或多个元素。 包含一个元素,以及一个或多个元素,这些
4、元素共享同一个元素 代表和客户实际交互的组件,它负责接受客户的请求,以及想客户返回响应结果。 每个元素只能包含一个元素。元素处理在同一个中所有元素接收到的客户请求。 一个可以包含多个元素。每个 元素定义了一个虚拟主机,它可以包含一个或多个 Web 应用。 代表运行在虚拟主机上单个 Web 应用。一个 Host 元素可以包含多个元素。 Tomcat 服务器的主要功能就是充当 Java Web 应用的容器。 Java Web 定义“Java Web 应用由一组 Servlet、HTML 页,类,以及其他可以绑定资源构成。 ”Java Web 应用中可以包含如下内容 Servlet Jsp 实用类
5、静态文档,如 HTML,图片等 客户端类描述 Web 每个 Java Web 应用有唯一的 Context。 当 Java Web 应用运行时, Servlet 容器为每个 Web 应用创建唯一的 ServletContext对象,它被同一个 Web 假如有两个 Web 应用分别为 helloapp 和 bookstore,两个客户分别访问如下 Url http:/localhost:8080/helloapp/index.htm http:/localhost:8080/bookstore/biookstore.jsp-/bin Linux 及 windows 平台上启动和关闭 Tomcat
6、 的脚本文件 -/conf 存放 Tomcat 服务器的各种配置文件 -/sever /server/lib 存放 Tomcat 服务器所需的各种 JAR 文件(只能被 Tomcat服务器访问) /server/webapps 存放 Tomcat 自带的两个 Web 应用: admin 和 manager 应用 /common/lib 存放 Tomcat 服务器以及所有 web 应用都可以访问的 JAR 文件 /shared/lib 存放所有 web 引用都可与访问的 JAR 文件(但是不能被 Tomcat 服务器访问) /logs 存放 Tomcat 的日志文件 /webapps 当发布 w
7、eb 应用时。默认情况下把 web 引用文件存放在此目录下 /work 由 JSP 生成的 Servlet 放在此目录下 Java Web 应用由一组静态 HTML 页面,Servlet,JSP 和其他的 class 组成。每种组件在 Web 应用中都有固定的存放目录。 Web 应用示例:javaweb1-tomcat -servlet 组件:HelloTomcat.java Java Web 应用通过一个基于 XML 的发布描述符文件来配置其发布信息,这个文件名为 web.xml。存放于 WEB-INF 子目录下。在 web.xml 文件中可包含如下配置信息: -Servlet 的定义、初始
8、化数据以及 JSP 映射 -安全域参数 -Welcome 文件清单-资源引用环境变量的定义 元素是/conf/server.xml 中使用最频繁的元素,它代表了运行在上的单个 web 应用,一个中可以有多个 元素。 每个 Web 应用必须有唯一的 URL 路径,这个 URL 路径在元素的 path 属性中设定。 可以在 javaweb1-tomcat 目录下添加 HTML,JSP 文件用于页面显示。 步骤五:创建 Servlet 类文件 创建一个 Servlet 类文件,名为 HelloTomcat.java 编译 HelloTomcat.java javac -d WEB-INFclasse
9、s HelloTomcat.java Tomcat CLASS_PATH 设定: CATHLINE_HOME=Tomcat 安装目录 CATHLINE_BASE=Tomcat 安装目录 classpath=;.JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;%CATALINE_HOME%commonlibservlet-api.jar hellotomcat HelloTomcat hellotomcat hellotomcat :定义 Servlet 名字 :指定实现这个 Servlet 的类 :定义 Servlet 的初始化参数(包括参数名和参数值)
10、 ,一个 元素中可以有多个,在 Servlet 类中通过 gerInitParameter(string name)方法访问初始化参数。 :指定当应用启动时,装载 Servlet 的次序,当这个值为正数或是为零时,Servlet 容器先加载数值小的 Servlet,再依次加载其他数值大的 Servlet,如果这个值为负数或者没有设定,那么 Servlet 容器将在 Web 客户首次访问这个Servlet 是加载它。 没有为 HelloTomcat 设置 load-on-startup 属性,因此当 web 应用启动时,Servlet 容器不会加载这个 Servlet,只有当 Web 客户首次访
11、问这个 Servlet 时才加载它。 :定义 Servlet 名字 :指定实现这个 Servlet 的类 :定义 Servlet 的初始化参数(包括参数名和参数值) ,一个 元素中可以有多个,在 Servlet 类中通过 gerInitParameter(string name)方法访问初始化参数。 :指定当应用启动时,装载 Servlet 的次序,当这个值为正数或是为零时,Servlet 容器先加载数值小的 Servlet,再依次加载其他数值大的 Servlet,如果这个值为负数或者没有设定,那么 Servlet 容器将在 Web 客户首次访问这个Servlet 是加载它。 没有为 Hell
12、oTomcat 设置 load-on-startup 属性,因此当 web 应用启动时,Servlet 容器不会加载这个 Servlet,只有当 Web 客户首次访问这个 Servlet 时才加载它。 driver sun.jdbc.odbc.JdbcOdbcDriver Public void init() throws ServletExption ServletConfig config=getServletConfig(); String driver=config.getParameter(“driver”); 通过元素定义的参数只能在当前 Servlet 中获取,而其他的 Serv
13、let 和资源却无话获得。那么如何定义一个在整数 Web 应用中都可以获得的参数呢?元素正式为解决此问题而定义的。 public String getInitParameter(String name); Public java.util.Enumeration getInitParameterNames(); 在 Web 应用的开发阶段,为了便于调试,通常采用开放式的目录结构来发布 Web应用,这样可以方便的更新或替换文件。如果开发完毕,进入产品发布阶段,应该将整个 Web 应用打包为 WAR 文件,再进行发布。 (1)进入 hello world 应用的根目录下 /webapps/javaweb1-tomcat (2)把整个 Web 应用打包为 javaweb1-tomcat.war 文件,命令如下: Jar cvf javaweb1-tomcat.war (3)把 javaweb1-tomcat.war 文件拷贝到/webapps 目录下 (4)删除原先的 javaweb1-tomcat 目录 (5)启动 Tomcat 服务器, Tomcat 服务器启动时,会把 webapps 目录下的所有 WAR文件自动展开为开放式的目录结构。所以服务器启动后,会发现服务器把javaweb1-tomcat.war 展开到/webapps/javaweb1-tomcat 目录中