分享
 
 
 

Tomcat与Java Web开发技术详解连载之一

王朝java/jsp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

本章介绍如何在Tomcat上创建和发布Web应用。这里首先讲解Tomcat的目录结构以及Web应用的目录结构,接着介绍如何将HTML、Servlet、JSP和Tag Library部署到Web应用中,然后介绍把整个Web应用打包并发布的方法,最后介绍如何在Tomcat上配置虚拟主机。

本章侧重于讨论Web应用的结构和发布方法,所以没有对本章的Servlet和JSP的例子进行详细解释,关于Servlet和JSP的技术可以分别参考其它章节的内容。

2.1 Tomcat的目录结构

在Tomcat上发布Web应用之前,首先要了解Tomcat的目录结构。Tomcat的目录结构参见表2-1,这些目录都是的子目录。

表2-1 Tomcat的目录结构

目 录

描 述

/bin

存放在Windows平台 以及Linux平台上启动 和关闭Tomcat的脚本文件

/conf

存放Tomcat服务器的各种配置文件, 其中最重要的配置文件是server.xml

/server

包含3个子目录: classes、lib和webapps

/server/lib

存放Tomcat服务器所需的各种JAR文件

/server/webapps

存放Tomcat自带的两个Web应用: admin应用和manager应用

/common/lib

存放Tomcat服务器以及所有 Web应用都可以访问的JAR文件

/shared/lib

存放所有Web应用都可以访问的JAR文件

/logs

存放Tomcat的日志文件

/webapps

当发布Web应用时, 默认情况下把Web应用 文件放于此目录下

/work

Tomcat把由JSP生成的 Servlet放于此目录下

从表2-1可以看出,在/server/lib目录、/common/lib和/shared/lib目录下都可以放JAR文件,它们的区别在于:

在/server/lib目录下的JAR文件只可被Tomcat服务器访问

在/shared/lib目录下的JAR文件可以被所有的Web应用访问,但不能被Tomcat服务器访问

在/common/lib目录下的JAR文件可以被Tomcat服务器和所有Web应用访问

此外,对于下面将要介绍的Java Web应用,在它的WEB-INF目录下,也可以建立lib子目录,在lib子目录下可以放各种JAR文件,这些JAR文件只能被当前Web应用访问。

在以上提到的lib目录下都只接受JAR文件,如果类压缩文件为ZIP文件,应该将它展开,重新打包为JAR文件再拷贝到lib目录中。如果直接将ZIP文件拷贝到lib目录,则会发现Tomcat服务器仍然找不到相关的类。打包命令参见2.2.8节。

2.2 创建和发布Web应用

Java Web应用由一组静态HTML页、Servlet、JSP和其他相关的class组成。每种组件在Web应用中都有固定的存放目录。Web应用的配置信息存放在web.xml文件中。在发布某些组件(如Servlet)时,必须在web.xml文件中添加相应的配置信息。

2.2.1 Web应用的目录结构

Web应用具有固定的目录结构,这里假定开发一个名为helloapp的Web应用。首先,应该在/webapps目录下创建这个Web应用的目录结构,参见表2-2。

表2-2 Web应用的目录结构

目 录

描 述

/helloapp

Web应用的根目录, 所有的JSP和HTML文件 都存放于此目录下

/helloapp/WEB-INF

存放Web应用的发布描述文件web.xml

/helloapp/WEB-INF/classes

存放各种class文件, Servlet类文件也放于此目录下

/helloapp/WEB-INF/lib

存放Web应用所需的各种JAR文件

例如,在这个目录下,可以存放JDBC驱动程序的JAR文件

从表2-2中,我们看到在classes以及lib子目录下,都可以存放Java类文件。在运行过程中,Tomcat的类装载器先装载classes目录下的类,再装载lib目录下的类。因此,如果两个目录下存在同名的类,classes目录下的类具有优先权。

本章介绍的helloapp应用的目录结构如图2-1所示,helloapp应用在Windows资源管理器中的展开如图2-2所示。

在helloapp应用中创建了如下组件:

HTML组件:index.htm

JSP组件:login.jsp和hello.jsp

Servlet组件:DispatcherServlet

这些组件之间的链接关系为:

index.htm→login.jsp→DispatcherServlet→hello.jsp

图2-1 helloapp应用的目录结构

图2-2 helloapp应用在Windows资源管理器中的展开图

2.2.2 web.xml文件

Java Web应用通过一个基于XML的发布描述符文件来配置其发布信息,这个文件名为web.xml,它存放于WEB-INF子目录下。在附录B中将详细介绍web.xml的配置方法,在附录C中将介绍XML的基本知识。在web.xml文件中可包含如下配置信息:

Servlet的定义

Servlet的初始化参数

Servlet以及JSP的映射

安全域配置参数

welcome文件清单

资源引用

环境变量的定义

现在,创建一个默认的web.xml文件,并把这个文件放到WEB-INF目录中。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC

'-//Sun Microsystems,

Inc.//DTD Web Application 2.3

//EN'

'http://java.sun.com/

j2ee/dtds/web-app_2_3.dtd'>

<web-app>

</web-app>

以上web.xml文件的第一行指定了XML的版本和字符编码,第二行DOCTYPE指定文档类型,接下来声明了一个元素,所有关于Web应用的配置元素都将加入到这个元素中。

2.2.3 在server.xml中加入元素

元素是/conf/server.xml中使用最频繁的元素,它代表了运行在上的单个Web应用。一个中可以有多个元素。每个Web应用必须有惟一的URL路径,这个URL路径在元素的path属性中设定。例如,在名为"localhost"的元素中加入如下元素:

<!-- Define the default virtual host -->

<Host name="localhost" debug="0" appBase="webapps"

unpackWARs="true" autoDeploy="true">

……

……

<Context path="/helloapp"

docBase="helloapp" debug="0"

reloadable="true"/>

</Host>

Context元素的各个属性的说明参见表2-3。

表2-3 Context元素的属性

属 性

描 述

path

指定访问该Web应用的URL入口

docBase

指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于Host的appBase属性的相对路径(关于Host的appBase属性参见2.3节)。如果Web应用采用开放目录结构,则指定Web应用的根目录;如果Web应用是个WAR文件,则指定WAR文件的路径

reloadable

如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes 和WEB-INF/lib目录下class文件的改动。如果监测到有class文件被更新,服务器会自动重新加载Web应用

在开发阶段,将reloadable属性设为true,有助于调试Servlet和其他的class文件。但是由于这一功能会加重服务器的运行负荷,因此建议在Web应用的产品发布阶段,将这个属性设为false。

本文节选自由飞思图书授权《Tomcat与Java Web开发技术详解》

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有