Chinaunix

标题: Web开发轻平台-Tomcat(简介) [打印本页]

作者: 猫小    时间: 2003-09-27 08:32
标题: Web开发轻平台-Tomcat(简介)
作者:宗锋 zong_feng@263.net,zong_feng@163.com
本文发表于<计算机世界>;2002年4月15日那一期

如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求。我们需要一个交互式的Web,于是便诞生了各种Web语言。如Asp,Jsp,Php等。当然,这些语言与传统的语言有着密切的联系,如Php基于C和C++语言,Jsp基于Java语言。本文所要介绍的Tomcat即是一个Jsp和Servlet的运行平台。

一:什么是Jsp和Servlet

Jsp(JavaServer Page)是在普通Html中嵌入了Java代码的一个脚本,在这一点上,它与其它的脚本语言(如Php)一样,但它与其它语言不同的是:其它脚本语言由服务器直接解释这个脚本,而Jsp则由Jsp容器(如Tomcat)首先将其转化为Servlet,然后再调用Javac将Servlet编译为Class文件。最终,服务器解释的是Class文件。那么什么是Servlet呢?Servlet其实是一个特殊的Java类,Servlet类一般从HttpServlet类继承而来,在这个类中至少要实现doGet或者doPost函数,在这两个函数中处理来自客户的请求,然后将结果返回。Servlet和Jsp是Sun公司J2EE架构中重要的部分。由于基于Java语言,因此其可以方便的调用功能强大的Java API(如JDBC)。

二:Tomcat概述

Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的java产品,可见其在业界的地位。

Tomcat 最新版本是4.0x。4.0x与3.x的架构不同,而是重新设计的。Tomcat4.0x中采用了新的Servlet容器:Catalina,完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从http://jakarta.apache.org上下载其源代码版或者二进制版。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性。

与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。

在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。

Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。

另外,Tomcat提供Realm支持。Realm类似于Unix里面的group。在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的资源。Tomcat用Realm来对不同的应用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。Tomcat提供三种Realm,1:JDBCRealm,这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证。2:JNDIRealm,用户信息存在基于LDAP的服务器里,通过JNDI获取用户信息。3:MemoryRealm,用户信息存在一个xml文件里面,上面讲的manager应用验证用户时即使用此种Realm。通过Realm我们可以方便地对访问某个应用的客户进行验证。

在Tomcat4中,你还可以利用Servlet2.3提供的事件监听器功能,来对你的应用或者Session实行监听。Tomcat也提供其它的一些特征,如与SSL集成到一块,实现安全传输。还有Tomcat也提供JNDI支持,这与那些J2EE应用服务器提供的是一致的。说到这里我们要介绍一下通常所说的应用服务器(如WebLogic)与Tomcat有何区别。应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,同时也支持Jsp和Servlet。而Tomcat则功能没有那么强大,它不提供EJB等支持。但如果与JBoss(一个开源的应用服务器)集成到一块,则可以实现J2EE的全部功能。既然应用服务器具有Tomcat的功能,那么Tomcat有没有存在的必要呢?事实上,我们的很多中小应用不需要采用EJB等技术,Jsp和Servlet已经足够,这时如果用应用服务器就有些浪费了。而Tomcat短小精悍,配置方便,能满足我们的需求,这种情况下我们自然会选择Tomcat。

基于Tomcat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,你可以用普通的文本编辑器或者IDE,然后将其打包成WAR即可。我们这里要提到另外一个工具Ant,Ant也是Jakarta中的一个子项目,它所实现的功能类似于Unix中的make。你需要写一个build.xml文件,然后运行Ant就可以完成xml文件中定义的工作,这个工具对于一个大的应用来说非常好,我们只需在xml中写很少的东西就可以将其编译并打包成WAR。事实上,在很多应用服务器的发布中都包含了Ant。另外,在Jsp1.2中,可以利用标签库实现Java代码与Html文件的分离,使Jsp的维护更方便。

Tomcat也可以与其它一些软件集成起来实现更多的功能。如与上面提到的JBoss集成起来开发EJB,与Cocoon(Apache的另外一个项目)集成起来开发基于Xml的应用,与OpenJMS

集成起来开发JMS应用,除了我们提到的这几种,可以与Tomcat集成的软件还有很多。

三:展望

Tomcat确实是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性。如今,开源软件越来越收到人们的重视,Linux就是一个成功的典型。人们不再限于只使用软件,而且已经关心起软件的具体实现。我们有理由相信Tomcat会走得更远。

作者:宗锋 西北大学计算机系 zong_feng@263.net http://www.cwdn.net
作者: simbasun    时间: 2003-09-27 10:39
标题: Web开发轻平台-Tomcat(简介)
顶一下。。
作者: lusec3    时间: 2003-09-28 17:39
标题: Web开发轻平台-Tomcat(简介)
恩,好文章!
作者: gunguymadman007    时间: 2003-09-30 11:03
标题: Web开发轻平台-Tomcat(简介)
ding
作者: potenital2003    时间: 2003-09-30 15:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: dzhwj    时间: 2003-10-07 07:46
标题: Web开发轻平台-Tomcat(简介)
8错,俺们8仅要知其然,还要知其所以然,然也!
作者: gunguymadman007    时间: 2003-10-09 13:28
标题: Web开发轻平台-Tomcat(简介)

作者: odin_free    时间: 2004-11-16 08:39
标题: Web开发轻平台-Tomcat(简介)
就是说本身tomcat主要是支持jsp用的

apache+mysql+php的组合没有必要用它
作者: 金少南    时间: 2004-12-14 19:04
标题: Web开发轻平台-Tomcat(简介)
兄弟写的不错啊!
作者: jhsea3do    时间: 2004-12-15 23:58
标题: Web开发轻平台-Tomcat(简介)
为什么要用apache和tomcat一起用?

首先一个原因就是tomcat不应该用root来跑,如果用root来跑就很容易出安全问题,但是如果不用root跑的话就不能放80端口,所以透过apache来跑。

当然,如果是开发人员的话,还是直接用root运行startup.sh吧~
作者: linkxiong    时间: 2005-03-01 14:22
标题: Web开发轻平台-Tomcat(简介)

作者: chinacio    时间: 2005-03-03 22:41
标题: Web开发轻平台-Tomcat(简介)
好文章!
作者: luqingcheng    时间: 2006-03-15 16:37
顶一个
作者: 艾斯尼勒    时间: 2006-03-15 16:39
3年前的帖子怎么突然翻出来。。。。
作者: kakasi    时间: 2006-03-15 16:58
3年前有这样的见识的肯定是牛人
作者: zw_ren    时间: 2006-03-15 17:07
从哪找来的文章,太老了,你该介绍一下tomcat 5.5.16 b版的新功能才对。
作者: kakasi    时间: 2006-03-15 18:04
原帖由 zw_ren 于 2006-3-15 18:07 发表
从哪找来的文章,太老了,你该介绍一下tomcat 5.5.16 b版的新功能才对。


谁?2003年的lz
作者: carset    时间: 2006-04-11 20:06
原帖由 kakasi 于 2006-3-15 18:04 发表


谁?2003年的lz


汗。。01年俺就买了本JSP。到现在也没看完。就看了前三页,序言。。。
作者: xxjoyjn    时间: 2006-04-11 20:37
我爱TOMCAT。APACHE
作者: sky555    时间: 2007-09-09 00:18
我费了一些周折,在朋友的帮助下,装过用过,可以。
作者: dyflyleaf    时间: 2007-09-09 19:53
不错,现在JAVA学习,那个方向最好啊,是J2ME还是J2EE。。。
作者: kakasi    时间: 2007-09-10 14:56
吓我一跳,还以为tomcat咋了呢,,楼主应该很欣慰,n年后帖子还会被顶起来
作者: freeren_17    时间: 2007-12-04 23:17
tomcat虽好,但是如果用j2ee的话建议用jboss.
作者: Aray_CN    时间: 2007-12-17 17:42
原帖由 jhsea3do 于 2004-12-15 23:58 发表
为什么要用apache和tomcat一起用?

首先一个原因就是tomcat不应该用root来跑,如果用root来跑就很容易出安全问题,但是如果不用root跑的话就不能放80端口,所以透过apache来跑。



老贴也回个 如果仅仅是通过80来访问tomcat 肯定没有比要搬出apache来 端口转发什么的岂不是更好? 主要是apache在对静态内容的处理方面比tomcat厉害




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2