0

0

使用Ant和Tomcat创建Web应用_MySQL

php中文网

php中文网

发布时间:2016-06-01 14:11:08

|

1104人浏览过

|

来源于php中文网

原创

Tomcat

极限网络办公Office Automation
极限网络办公Office Automation

专为中小型企业定制的网络办公软件,富有竞争力的十大特性: 1、独创 web服务器、数据库和应用程序全部自动傻瓜安装,建立企业信息中枢 只需3分钟。 2、客户机无需安装专用软件,使用浏览器即可实现全球办公。 3、集成Internet邮件管理组件,提供web方式的远程邮件服务。 4、集成语音会议组件,节省长途话费开支。 5、集成手机短信组件,重要信息可直接发送到员工手机。 6、集成网络硬

下载



使用何种技术

  我使用Tomcat 4的Servlet/JPS容器技术实现一个Web应用程序。这个过程中仍然有许多不确定的事,在多种可行的技术中选一种可不是一件容易的事。这篇文章中,我选择尽量简单的解决方案,混合使用Java Server Pages(JSPs)以及Java。

  应当尽量避免使用JSPs实现复杂逻辑;那种程序也许容易写,但难以调试而且几乎不可能被理解和维护。好的解决方案是用JSPs负责Web页面的显示(这正是JSPs擅长的),把复杂逻辑的实现交给Java,如对数据库的访问。这样,程序不但比较容易实现和调试,而且易于理解和维护。

  这个Web应用程序可以运行在专用Web服务器或者是个人电脑上,操作系统可以是Windows,Linux,或者Mac OS。所需的软件包有Java运行时环境(JDK1.2或以上版本),Tomcat最新版本(Tomacat 4或以上版本),以及Ant开发工具(Ant 1.4或以上版本)。Ant用于创建Web应用程序包(WAR),以及在Tomcat上安装部署WAR文件,配置关系数据库接口javax.sql.DataSource。所有以上提到的软件包都可以通过Internet免费获得。


  这个Web应用程序还需要一个数据库。几乎所有支持SQL而且有JDBC驱动的关系数据库都可以。MySQL是一个符合条件的不错选择。从MySQL.com可以得到MySQL的最新版本以及它的JDBC驱动Connector/J。

  为了让Ant与Tomact管理软件协同工作,需要将catalina-ant.jar从Tomcat的server/lib目录拷贝到Ant的lib目录下。将你的数据库JDBC驱动程序复制到Tomcat的common/lib目录下使Tomcat和其上的Web应用程序可以访问数据库。最后,必须建立Tomcat的admin和manager角色(roles),及其用户名和密码,编辑Tomcat的conf目录下的tomcat-user.xml文件如下:



我的开发环境是Apple Cube,运行Mac OS X 10.2.1操作系统,软件包JDK 1.3.1,Tomcat 4.1.12,Ant1.5.1,MySQL 3.23.52,及Connector/J 3.0.1-beta。操作系统升级到Mac OS X 10.2.2未出现任何问题。同样Tomcat升级到4.1.17也没出现问题。

Web应用程序

  本文通过一个叫做AddressBook的简单地址簿程序来说明如何应用将要介绍的技术。这个应用程序的目的不是建立一个地址簿的正式版本,它仅仅是一个例子。

AddressBook中的Java程序: AddressBook中包含三个Java程序。图1显示了他们在Tomcat中的是如何使用的。


使用Ant和Tomcat创建Web应用




Home.jsp: Home.jsp是AddressBook的主页,也就是用户使用AddressBook时见到的第一个页面。它用一个表显示Address库中的所有地址。表中的每一行显示一个地址,以及删除或修改地址的连接。页面底部有一个添加新地址的连接。配置信息见web.xml notes。

添加地址连接将控制权交给RequestAdd.jsp

删除地址连接将控制权交给RequestDelete.jsp,同时将要删除的地址id传递给该页

修改地址连接将控制权交给RequestModify.jsp,同时将要修改的地址id传递给该页

细节请看Home.jsp的完整的带有注释的源代码。

RequestAdd.jsp: RequestAdd.jsp提供一个地址表单用于输入新地址。页面底部的取消连接可以取消这次操作。

提交表单将新的地址域值以及控制权交给DoAdd.jsp

取消操作将控制权交给Home.jsp。细节请看RequestAdd.jsp的完整的,带有注释的源代码。

DoAdd.jsp: DoAdd.jsp显示接收到的地址域值。然后将新地址添加到数据库并显示是否成功的信息。页面底部有一个继续连接。

点击继续连接回到Home.jsp。细节请看DoAdd.jsp的完整的,带有注释的源代码。

RequestDelete.jsp: RequestDelete.jsp读取得到的id相应的地址。该页面在表中显示地址域以便让你确认删除的是正确的地址。页面底部的两个连接分别是继续请求的继续连接和取消请求的取消连接。

选择继续连接将转到DoDelete.jsp并传递要删除的地址id

选择取消连接回到Home.jsp。细节请看RequestDelete.jsp的完整的带有注释的源代码。

DoDelete.jsp: DoDelete.jsp读取传递给它的id。在表中显示该id对应的地址,从数据库中删除它,并显示是否成功。页面底部是继续连接。

选择继续连接回到Home.jsp。细节请看DoDelete.jsp的完整的,带有注释的源代码。

RequestModify.jsp: RequestModify.jsp显示一个表单并填入当前的地址,同时提供提交按钮和取消连接。

提交表单将新的地址域值以及控制权交给DoModify.jsp

选择取消连接回到Home.jsp。细节请看RequestModify.jsp的完整的,带有注释的源代码。

DoModify.jsp: DoModify.jsp显示接收到的修改的地址域值。然后修改数据库中的地址记录,并返回成功与否。页面底部是继续连接。

选择继续连接回到Home.jsp。细节请看DoModify.jsp的完整的,带有注释的源代码。

AddressBook的Addresses数据库表: 如何建立数据库取决于所用的数据库软件。若你用的不是MySQL以下的步骤就需要根据情况修改。AddressBook只有一个表Addresses,保存在数据库Public中。表Addresses有七个域:

id,主键,自动增长的数据域

surname,长度为24的字符域,保存联系人的姓

firstname,长度为24的字符域,保存联系人的名

street,长度为80的字符域,保存地址的第一行

district,长度为80的字符域,保存地址的第二行

city,长度为40的字符域,保存城市名

postcode,长度为10的字符域,保存邮政编码

首先建立MySQL数据库(Mac OS X 10.2.1)。用管理员权限启动mysql命令行工具,需要的话输入密码。创建Public数据库,以及账号mysqlusername密码mysqlpassord。命令如下:

# mysql -u root -pmysql> create database Public;mysql> grant all privileges on Public.* to mysqlusername@localhostidentified by 'mysqlpassword' with grant option;mysql> flush privileges;



然后,在Public数据库中创建Addresses表。

mysql> create table Addresses ( id int(8) primary key auto_increment, surname varchar(24) not null, firstname varchar(24) not null, street varchar(80) not null, district varchar(80) not null, city varchar(40) not null, postcode varchar(10) not null );



用命令Commit;提交。要检查对表的操作是否正确,键入命令describe Addresser;,将得到如下结果:

+-----------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------+-------------+------+-----+---------+----------------+| id | int(8) | | PRI | NULL |auto_increment|| surname | varchar(24) | | | | || firstname | varchar(24) | | | | || street | varchar(80) | | | | || district | varchar(80) | | | | || city | varchar(40) | | | | || postcode | varchar(10) | | | | |+-----------+-------------+------+-----+---------+----------------+



现在可以插入一行来测试数据库

mysql> insert into Addresses (surname, firstname, street, district,city, postcode) values ("Smith", "John", "1, The High Street,","Downtown,", "Metropolis.", "X99 9XX");mysql> commit;mysql> select * from Addresses;



结果如下:


使用Ant和Tomcat创建Web应用

注意地址的id被自动赋予值1。至此AddressesBook的数据库创建完成。

配置AddresBook的开发目录

  现在我们配置存放AddressBook源文件的目录,以及Web应用程序的war目录,它也是存放Web应用程序包的目录。下载AddressBook源程序压缩包。解压后将得到Ant能够处理的源程序目录结构,如图3所示。不需要对AddressBook的开发目录进行特殊改变?建议将其解压至你的home目录(Mac OS)。
使用Ant和Tomcat创建Web应用

让我们看看这些文件:

AddressBook/build.properties: AddressBook/build.properties含有若干被AddressBook/build.xml读取得设置信息。定制build过程时,尽量编辑较小的build.properties文件,而不要修改复杂的多的build.xml文件。

app.name=AddressBooktomcat.home=/usr/local/jakarta-tomcat-4.1.12manager.url=http://localhost:8080/managerusername=tomcatusernamepassword=tomcatpassword



app.name参数不需要修改。如果将来要重用这些文件创建新的Web应用程序时把该参数改为新的程序名。如果在本地机器上运行Tomcat 4,则manager.url参数也不必修改。

tomcat.home参数为Tomcat的安装目录,以上的设置表示Tomcat 4.1.12安装在/url/local目录下(Mac OS)。Ant将根据这个参数设置编译AddressBook时的CLASSPATH变量,使它包含Tomcat的common/lib.jar文件。(这样Tomcat 和Web应用程序都可以直接访问这个文件,而不必将其复制到应用程序的WEB-INF/lib目录下。)

Tomcat也有一个类似的目录:shared/lib,给目录下的.jar文件在运行时对于应用程序是可访问的,但对Tomcat是不可访问的。

参数tomcatusrename和tomcatpassword必须与Tomcat的配置文件conf/tomcat-users.xml中的设置一致。Ant使用它们以及manager.url取得在Tomcat环境中安装AddressBook应用的权限。

细节请看build.properties的完整带有注释的源代码。

AddressBook/build.xml: AddressBook/build.xml文件是Ant的配置文件,它使用许多Ant的标签。以下是比较常用的:

? ant build 创建Web应用程序

? ant install 安装Web应用程序用于测试

? ant remove 卸载Web应用程序

? ant deploy安装部署Web应用程序

? ant undeploy卸载Web应用程序

细节请看build.xml的完整的带有注释的源代码。

AddressBook/context.xml: AddressBook/context.xml是在Ant处理安装、重新载入、删除、部署、卸载请求时装入Tomcat中的。给文件记录的是AddressBook的上下文信息,或者是Tomcat运行AddressBook需要的参数。

Logger项定义了Tomcat用文本格式记录AddressBook的事件日志,并存放于Tomcat的logs目录下。以下Logger项定义了名为localhost_AddressBook_log.YYYY-MM-DD.txt的日志文件,其中YYYY-MM-DD为日志日期:





Resource和ResourceParams项定义Tomcat必须为AddressBook创建一个叫jdbc/Publicd的javax.sql.DataSource。以下设置创建了一个javax.sql.DataSource,其值为org.apache.commons.dbcp.BasicDataSourceFactory类,URL为jdbc:mysql://localhost:3306/Public?autoReconnect=true,JDBC驱动:org.gjt.mm.mysql.Driver,用户名和密码分别为:mysqlusername和mysqlpassword:

以上代码将javax.sql.DataSource作为该Web应用程序的上下文变量。如果该变量不止被一个Web应用用到,可以将它定义为全局资源。细节请看context.xml的完整的带有注释的源代码。

AddressBook/src/*.java: src目录中存放Web应用的三个Java程序。见Address.java,AddressesDB.java和ContextListener.java的描述。

AddressBook/web/*.jsp: web目录存放Web应用的七个JSP页面。见Home.jsp, RequestAdd.jsp, DoAdd.jsp, RequestDelete.jsp, DoDelete.jsp, RequestModify.jsp, 和 DoModify.jsp的描述。

AddressBook/web/WEB-INF/web.xml: AddressBook/web/WEB-INF/web.xml是AddressBook的web应用部署描述文件。其中包含两个主要参数:listener参数定义了Java类监听器AddressBook.ContextListener,在程序启动和关闭是被调用。

AddressBook.ContextListener



welcom-file-list参数定义了AddressBook的首页。如下设置定义AddressBook的首页为Home.jsp。

Home.jsp



细节请看web.xml的完整的,带有注释的源代码。

创建,安装,部署和运行AddressBook: 安装AddressBook是先将当前目录改为AddressBook目录,然后运行Ant的install命令:

$ cd AddressBook$ ant install



  如果安装失败,检查Tomcat的conf目录下的tomcat-user.xml是否配置正确,以及catalina-ant.jar是否从Tomcat的server/lib目录下拷贝到Ant的lib目录。

  注意ant install自动触发运行Ant的若干个标签,依次为ant int,ant prepare,ant build和ant package:

? ant init初始化时间戳

? ant prepare在AddressBook目录下创建war目录结构,包括:一个war目录,一个war/WAR-INF目录,一个war/WEB-INF/classes目录,及一个war/WEB-INF/lib目录。

? ant build创建Web应用程序,包括将jsp文件拷贝到war目录下,将context.xml文件拷贝到war/META-INF目录下,将web.xml文件拷贝到war/WEB-INF目录下,并编译Java文件结果存入war/WEB-INF/classes目录下。

? ant package从war目录创建Web程序包。Web程序包是由jar工具创建的.jar文件。

? 最后,ant install根据war/META-INF/context.xml的配置信息将Web程序包安装到Tomcat中。你可能注意到不需要登陆root权限或Tomcat就可以安装AddressBook,只要你的普通用户账号即可。Ant用定义在AddressBook/build.properties中的tomcatusername和tomcatpassword即可安全的执行以上过程。

  安装过程因配置选项不同而不同,配置信息具体见AddressBook/build.xml。图4显示了构成AddressBook Web应用程序的war目录结构以及各种文件。
使用Ant和Tomcat创建Web应用

 

在浏览器地址栏中输入地址http://localhost:8080/AddressBook测试AddressBook程序。应该得到如图5的显示结果。如果应用程序没有正确运行,先检查Tomcat的common/lib目录下有没有数据库的JDBC驱动程序。如果数据库驱动正确应用程序仍然不正确运行,则检查Tomcat的log目录下的日志文件,这些文本格式的日志文件将帮助你发现错误。
使用Ant和Tomcat创建Web应用

添加地址,然后修改它,再删除它,再添加一个地址。你将看到id持续自动增加。

开发过程

  AddressBook安装成功之后,Tomcat调用AddressBook.ConextListener.contextInitialized创建AddressBook.AddressesDB的一个实例。AddressBook.AddressesDB通过jdbc/Public DataSource建立数据库连接。AddressBook.ConextListener.contextInitialized将AddressBook.AddressesDB的实例作为一个servlet属性(addressesDB)保存。

  当AddressBook的Home.jsp第一次被调用,Tomcat编译并执行它。Home.jsp通过servlet属性addressesDB取得AddressBook.AddressesDB的实例,然后从数据库中读取地址并显示。其他JSP页面在第一次被使用时也要先编译再执行,读取数据库的方法同Home.jsp。

  ant stop用于停止AddressBook程序。Tomcat自动调用AddressBook.ContextListener.contextDestroyed取得上面提到的servlet属性addressesDB和AddressBook.AddressesDB的实例,关闭数据库连接并删除servlet属性addressesDB。

  ant start用于启动AddressBook程序。Tomcat自动调用AddressBook.ConextListener.contextInitialized重复启动过程。

  整个Web应用程序的开发过程是这样的:修改程序;用ant install创建并安装;在浏览器中键入地址http://localhost:8080/applicationName(或点击刷新按钮)以测试Web程序;用ant remove删除Web应用程序的上下文信息;重复整个过程,直到调试完毕。当程序调试完毕后,使用ant deploy正式将你的程序配置到服务器上。在重起Tomcat或者重起服务器后,你的应用程序就开始运行了。要将Web应用程序从你的服务器彻底删除用ant undeploy命令。

Tomcat Manager

  使用Tomcat Manager可以替代Ant。在浏览器中键入地址http://localhost:8080/manager/html/list,将出现如图6所示的Tomcat Manager Web页面。
使用Ant和Tomcat创建Web应用

或者,直接使用以下地址:

http://localhost:8080/manager/list

http://localhost:8080/manager/resources

http://localhost:8080/manager/roles

http://localhost:8080/manager/start?path=/AddressBook

http://localhost:8080/manager/stop?path=/AddressBook

http://localhost:8080/manager/remove?path=/AddressBook

http://localhost:8080/manager/sessions?path=/AddressBook

Tomcat Administrator

  要登陆Tomcat的基于Web的administrator,使用地址http://localhost:8080/admin。在登陆画面中输入Tomcat”admin”角色的用户名和密码,与”manager” 角色的相同为tomcatusername和tomcatpassword。Tomcat-users.xml文件为admin,manager以及provider角色建立了相同的账号。为每个Tomcat角色建立不同的账号是不必要的。

  控制页面分为三个面板:头面板,树面板和数据面板。如图7所示:
使用Ant和Tomcat创建Web应用

 

树的分支可被展开和选定。依次展开Service{Tomcat-Standalone} ->Host{localhost}->Context{/AddressBook},最后AddressBook的Resource分支。注意不要将树底部的全局Resource分支与AddressBook的Resource分支混淆。全局Resource分支可以用来定义任何Web应用程序都可用的全局资源。

AddressBook的上下文面板

  选择Context{/AddressBook}分支,将看到AddressBook的上下文面板(如图8)。
使用Ant和Tomcat创建Web应用

 

你可以随意改变该面板的参数,主要是三种不同的Debug Level参数。要保存设置点击Save按钮然后点击头面板中的Commit Changes按钮。

AddressBook的Data Source面板

  选择Context{/AddressBook}的Resource分支中的Data Source分支,你将看到AddressBook的Data Source面板。选择数据源jdbc/Public显示javax.sql.DataSource(如图9)。


使用Ant和Tomcat创建Web应用


你可以随意改变该面板的参数,包括Data Source URL, JDBC Driver Class, User Name, Password, Max. Active Connections, Max. Idle Connections和 Max. Wait for Connection参数。要保存设置点击Save按钮然后点击头面板中的Commit Changes按钮。

如果你在你的个人电脑上运行Web应用程序,这也许不重要,但是如果在作为公司产品的Web服务器,这就很重要。这些参数可以被安全的改变,而且不是只有程序员能够更改,Tomcat administrator同样可以。作为一个程序员我要记住许多账号和密码,我不想知道公司的产品数据库的账号和密码。本来这个账号和密码是必要的,但是有了javax.sql.DataSource和Tomcat 4的administrator服务,我就不必知道它们了。

Ant用于在开发软件时建立Web应用程序上下文,而Tomcat administrator服务用在产品环境中。

AddressBook的日志面板

选择树中的Context{/AddressBook}分支的Logger for Context{/AddressBook}分支,将看到如图10所示的AddressBook的日志面板
使用Ant和Tomcat创建Web应用

 

你可以随意改变该面板的参数,主要是Debug Level和Verbosity Level参数。要保存设置点击Save按钮然后点击头面板中的Commit Changes按钮。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

19

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

27

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

15

2026.02.03

c语言中/相关合集
c语言中/相关合集

本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

3

2026.02.03

漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题
漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题

本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。

13

2026.02.03

Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口
Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口

本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。

114

2026.02.03

Java 设计模式与重构实践
Java 设计模式与重构实践

本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。

3

2026.02.03

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

2

2026.02.03

Python 强化学习与深度Q网络(DQN)
Python 强化学习与深度Q网络(DQN)

本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。

3

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 10.2万人学习

CSS3 教程
CSS3 教程

共18课时 | 5.1万人学习

Git 教程
Git 教程

共21课时 | 3.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号