Tomcat

来源:互联网 发布:php imsi获取手机号码 编辑:程序博客网 时间:2024/04/29 12:11
 
Tomcat
Jakarta Tomcat服务器是一个优秀的Servlet/JSP容器,它是Apache-Jakarta软件组织的一个子项目
1、Tomcat与Servlet容器
Servlet是一种运行在支持Java语言的服务器上的组件,常见的用途是扩展Java Web服务器功能,提供非常安全的、可靠的、易于使用的CGI替代品。它是一种动态加载的模块,为来自Web客户的请求提供服务。它完全运行在Java虚拟机上。由于它在服务器端运行,因此,它的运行不依赖于浏览器
Tomcat作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并把结果返回给客户。Servlet容器与Servlet之间的接口是由Java Servlet API定义的,在Java Servlet API中定义了Servlet的各种方法,这些方法在Servlet生命周期的不同阶段被Servlet容器调用;Servlet API还定义了Servlet容器传递给Servlet的对象类,如请求对象ServletRequest和响应对象ServletResponse
当客户请求访问某个Servlet时,Servlet容器将创建一个ServletRequest对象和ServletResponse对象。在ServletRequest对象中封装了客户请求信息,然后Servlet容器把ServletRequest对象和ServletResponse对象传递给客户所请求的Servlet。Servlet把响应结果写入到ServletResponse中,然后由Servlet容器把响应结果传给客户
 
2、Tomcat的结构
Tomcat服务器是由一系列可配置的组件构成,其中核心组件是Catalina Servlet容器,它是所有其他组件的顶层容器。Tomcat的组件可以在<CATALINA_HOME>/conf/server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素,以下代码以XML的形式展示了各种Tomcat组件之间的关系
<Server>
    <Service>
        <Connector/>
        <Engine>
            <Host>
                <Context>
                </Context>
            </Host>
        </Engine>
    </Service>
<Server>
在以上XML代码中,每个元素都代表了一种Tomcat组件。这些组件可以分为四类:
1、顶层类元素
顶层类元素包括<Server>元素和<Service>元素和,它们位于整个配置文件的顶层
2、连接器类元素
连接器类元素代表了介于客户与服务之间的通信接口,负责将客户的请求发送个服务器,并将服务器的响应结果传递给客户
3、容器类元素
容器类元素代表处理客户请求并生成响应结果的组件,有3种容器类元素,它们是Engine,Host和Context。Engine组件为特定的Service组件处理所有的客户请求,Host组件为特定的虚拟主机处理所有客户请求,Context组件为特定的Web应用处理所有客户请求
4、嵌套类元素
嵌套类元素代表了可以加入到容器中的组件,如<Logger>元素、<Value>元素和<Realm>元素
基本Tomcat元素的介绍
<Server>元素:<Server>元素代表了整个Catalina Servlet容器,它是Tomcat实例的顶层元素,<Server>元素中可包含一个或多个<Service>元素
<Service>元素:<Service>元素中包含了一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>共享同一个<Engine>元素
<Connector>元素:<Connector>元素代表了和客户程序实际交互的组件,它负责接受客户请求,以及向客户返回响应结果
<Engine>元素:每个<Service>元素只能包含一个<Engine>元素,<Engine>元素处理在同一个<Service>中所有<Connector>元素接受到的客户请求
<Host>元素:一个<Engine>元素中可以包含多个<Host>元素。每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用
<Context>元素:<Context>元素是使用最频繁的元素,每个<Context>元素代表了运行在虚拟主机上的一个Web应用。一个<Host>元素中可以包含多个<Context>元素
 
3、Java Web应用简介
Tomcat服务器最主要的功能就是充当Java Web应用的容器
Java Web应用由一组Servlet、HTML页、类,以及其他可以被绑定的资源构成,它可以在各种供应商提供的实现Servlet规范的Web应用容器中运行。在Java Web应用中可以包含如下内容:Servlet、JSP、实用类、静态文档(如:HTML、图片等)、客户端类、描述Web应用的信息(web.xml)
Java Web应用的主要特征之一就是它与Context的关系。每个Web应用有惟一的Context。当Java Web应用运行时,Servlet容器为每个Web应用创建惟一的ServletContext对象,它被同一个Web应用中所有的组件共享
4、安装Tomcat
    需要设定两个环境变量:JAVA_HOME,它是JDK的安装目录;CATALINA_HOME,它是Tomcat的安装目录
Tomcat服务器采用的HTTP端口为“8080”,如果想采用默认的HTTP端口“80”,可以修改<CATALINA_HOME>/conf/server.xml,将<Connector>元素的port属性值改为“80”,然后重起Tomcat服务器
5、Tomcat的目录结构
/bin:存放在Windows平台以及Linux平台上启动或关闭Tomcat的脚本文件
/conf:存放Tomcat服务器的各种配置文件,其中最重要的配置文件是server.xml
/server:包含3个子目录:classes,lib和webapps
/server/lib:存放Tomcat服务器所需的各种JAR文件
/server/webapps:存放Tomcat自带的两个Web应用
/commom/lib:存放Tomcat服务器以及所有Web应用都可以访问的JAR文件
/shared/lib:存放所有Web应用都可以访问的JAR文件
/logs:存放Tomcat的日志文件
/webapps:当发布Web应用时,默认情况下把Web应用文件放于此目录下
/work:Tomcat把由JSP生成的Servlet放于此目录下
Java Web应用的WEB-INF目录下,也可以建立lib子目录,在lib子目录下可以放各种JAR文件,这些JAR文件只能被当前Web应用访问
5、创建和发布Web应用
Java Web应用由一组静态HTML页、Servlet、JSP和其他相关的class组成。每种组件在Web应用中都有固定的存放目录。Web应用的配置信息存放在web.xml文件中,在发布某些组件时,必须在web.xml文件中添加相应的配置信息
5.1、Web应用的目录结构
/webapp:Web应用的根目录,所有的JSP和HTML文件都存放于此目录下
/webapp/WEB-INF:存放Web应用的发布描述文件web.xml
/webapp/WEB-INF/classes:存放各种class文件,Servlet类文件也放于此目录下
/webapp/WEB-INF/lib:存放Web应用所需的各种JAR文件
5.2、在server.xml中加入<Context>元素
<Context>元素是<CATALINE_HOME>/conf/server.xml中使用最频繁的元素,它代表了运行在<Host>上的单个Web应用。一个<Host>中可以有多个<Context>元素。每个Web应用必须有惟一的URL路径,这个URL路径在<Context>元素的path属性中设定
Context元素的属性:
path:指定访问该Web应用的URL入口
docBase:指定Web应用的文件路径,可以指定绝对路径,也可以指定相对于Host的appBase属性的相对目录
reloadable:如果这个属性设定为true,Tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动。如果监测到有class文件被更新,服务器会自动重新加载Web应用
5.3、部署Servletr
编译并发布Servlet的步骤:
1、编译Servlet,在编译时,需要将Java Servlet APIJAR文件设置为classpath
2、把编译出来的class文件拷贝到/webapp/WEB-INF/classes目录下
3、接下来在web.xml中为Servlet类加上<servlet><servlet-mapping>元素
<servlet>元素的属性:
<servlet-name>:定义Servlet的名字
<servlet-class>:指定实现这个Servlet的类
<init_param>:定义Servlet的初始化参数
<load-on-startup>:指定当Web应用启动时,装载Servlet的次序。当这个值为正数或零,Servlet容器先加载数值小的Servlet,再依次加载其他数值大的Servlet。如果这个值为负数或者没有设定,那么Servlet容器将在Web客户首次访问这个Servlet时加载它
<servlet-mapping>元素用来指定<servlet-name>和<url-pattern>映射。<url-pattern>是指访问Servlet的相对URL路径
5.4、部署JSP Tag Library
Tag Library向用户提供了自定义JSP标签的功能
创建和发布mytaglib标签库的步骤:
1、编写用于处理hello标签的类,编译时,需要将jsp-api.jar文件添加到classpath中,这个JAR文件位于/commom/lib目录下。编译生成的class文件存放位置为:/WEB-INF/classes
2、创建Tag Library的描述文件mytaglib.tld文件,在这个文件中定义mytaglib标签库和hello标签。这个文件存放位置为/WEB-INF/mytaglib.tld
3、在web.xml文件中加入<taglib>元素,<taglib>中包含两个属性<taglib-uri>和<taglib-location>。其中<taglib-uri>指定Tag Library标示符;<taglib-location>指定Tag Library的描述文件(TLD)的位置
4、在hello.jsp文件中加入hello标签。首先,在hello.jsp中加入引用mytaglib的taglib指令:
<%@ taglib uri=”/mytaglib” prefix=”mm”%>
5.5、创建并发布WAR文件
Tomcat即可以运行采用开放式目录结构的Web应用,也可以运行WAR文件
在Web应用的开发阶段,为了便于调试。通常采用开放式的目录结构来发布Web应用,这样可以方便地更新或替换文件。如果开发完毕,进入产品发布阶段,应该将整个Web应用打包为WAR文件,在进行发布
1、进入webapp应用的根目录<CATALINA_HOME>/webapps/webapp
2、把整个Web应用打包为webapp.war文件,命令为:jar cvf webapp.war *.*
3、把webapp.jar文件拷贝到<CATALINA_HOME>/webapps目录下
4、删除原先的webapp目录
5、启动Tomcat服务器
Tomcat服务器启动时,会把webapps目录下的所有WAR文件自动展开为开放式的目录结构。
6、配置虚拟主机
在Tomcat的配置文件server.xml中,Host元素代表虚拟主机,在同一个Engine元素下可以配置多个虚拟主机
配置虚拟主机www.mycompany.com的步骤:
1、打开<CATALINA_HOME>/conf/server.xml文件,会发现<Engine>元素中已经有一个名为localhost的<Host>元素,可以在它的后面加入<Host>元素
<Host>元素的属性:
name:指定虚拟主机的名字
debug:制定日志级别
appBase:知道虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录。默认值为<CATALINA_HOME>/webapps
unpackWARs:如果此项设定为true,表示把Web应用的WAR文件先展开为开放目录结构后在运行,如果为false,则直接运行WAR文件
autoDeploy:如果此项设为true,表示当Tomcar服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web应用加入进来,则会自动发布这个Web应用
alias:制定虚拟主机的别名
deplyOnStartup:如果此项设为true,则表示Tomcat服务器在启动时会自动发布appBase目录下所有的Web应用。如果Web应用在server.xml中没有相应的<Context>元素,则将采用默认的Context配置,deplyOnStartup的默认值为false
2、把webapp应用拷贝到appBase属性指定的目录下
3、为了使以上配置的虚拟主机生效,必须在DNS服务器中注册以上的虚拟主机名和别名,使它们的IP地址都指向Tomcat服务器所在的机器
4、重启Tomcat服务器,然后通过浏览器访问
 
 
原创粉丝点击