定义:

Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet 和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,是目前比较流行的Web应用服务器。

基本简介

tomcat图册Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

版本简介

版本对照表:
Servlet/JSP Spec              Apache Tomcat version
———————————————————————
2.5/2.1                              6.0.14
2.4/2.0                              5.5.25
2.3/1.2                              4.1.36
2.2/1.1                              3.3.2

容器概述

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

Tomcat4.0x中采用了新的Servlet容器:Catalina,完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从其官方网站上下载其源代码版或者二进制版。由于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集成的软件还有很多。

安装方法

一、准备工作

在开始安装之前,先准备J2SDK和TOMCAT两个软件,如果已经安装了J2SDK,就只需TOMCAT即可。
使用的软件如下:
J2SDK v1.4.2_04 - http://java.sun.com/j2se/1.4.2/download.html
TOMCAT v5.0.28 - http://apache.linuxforum.net/dist/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.exe  

二、安装J2SDK

安装很简单,只需双击下载的文件,选择安装在d:j2sdk1.4.2_04目录下,设置环境变量,方法如下:  

右击“我的电脑”==》属性==》高级==》环境变量==》新建 
变量名:JAVA_HOME
变量值:d:j2sdk1.4.2_04

三、安装TOMCAT

运行jakarta-tomcat-5.0.28.exe 按照提示安装,这里选择了Service,就是作为Windows服务来运行。

如果要改变安装路径,可以在这个步骤操作,偶这里选择安装在D:Tomcat 5.0

在这里设置TOMCAT使用的端口以及WEB管理界面用户名和密码,请确保该端口未被其他程序占用

选择J2SDK的安装路径,安装程序会自动搜索,如果没有正确显示,则可以手工修改,偶这里改为d:j2sdk1.4.2_04

接下来就开始拷贝文件了,成功安装后,程序会提示启动tomcat并查看readme文档。Tomcat正常启动后会在系统栏加载图标。

在图标上右键鼠标可以看到一些设置项目

点击Configure或者双击图标可看到如下显示,选择Startup type为automatic自动启动,这样每次开机后就会自动运行TOMCAT。另外也可在这个界面点击start或stop按钮来控制tomcat的运行。

四、测试

至此安装与配置都已完成,打开浏览器输入:http://localhost:8080即可看到TOMCAT的相关信息

五、备注

由于偶将TOMCAT作为service方式安装,所以CATALINA_HOME环境变量也没设过,如果读者不是按照这种方式请设置一个系统环境变量,设置方法同J2SDK。
变量名:CATALINA_HOME
变量值:d:Tomcat 5.0
另外可再增加一个环境变量
变量名:CLASSPATH


值:%JAVA_HOME%libdt.jar;%JAVA_HOME%libtool.jar;%JAVA_HOME%libtools.jar;%CATALINA_HOME%commonlibservlet-
api.jar;%CATALINA_HOME%commonlibjsp-api.jar

也是因为service安装的原因,在执行一些程序的时候会出现如下错误信息:
Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK


误信息是没有设置过JAVA_HOME环境变量,读者也可能碰到过这个问题,明明设置过这个环境变量,在服务里启动就会出错,但是在命令行下输入
D:Tomcat 5.0binstartup.bat启动却能运行,在服务里启动没有读取JAVA_HOME这个环境变量,而是在配置里定义这个环境变量的,于是偶在Java Options里加入了一句:-Djava.home=d:j2sdk1.4.2_04,再次启动TOMCAT就OK了

未来前景

分析公司Forrester Research的分析师这样评价Tomcat:“Tomcat可能是排在Apache Web 服务器和MySQL 数据库之后使用最多的开源产品。”BZ最新的调查研究则为此提供了有力的证据:Apache Tomcat是Java社区最常用的应用服务器??64%的Java开发者选择使用Tomcat。

Tomcat之所以大受欢迎原因主要有以下五点:

1、Tomcat是Apache的核心项目之一,也被 SUN 视作 Servlet/JSP 容器的一个重要参考实现而加以支持。因此 SUN 最新的Servlet/JSP规范,往往能够很快地在Tomcat的新版本中得到体现;

2、Tomcat是一个小巧精致的web应用服务器,配置、安装、运行、部署web应用都很简单,这让用户能够很快地上手使用;

3、开源软件的生命力,往往与其社区的状况有紧密的联系。在一个健康、活跃的社区,用户的疑问通常能够及时地解决,用户的反馈往往能够得到有效地处理,这样会吸引更多的用户加入到社区中来;反过来,不断扩大的用户群,也会促进社区的发展。Tomcat所拥有的优秀社区,对开发者而言,无论用什么标准来评价,都是充满吸引力的;

4、编写良好的文档,是开发者在开发中最好的帮手之一。Apache在开源社区中,无疑是撰写文档方面的佼佼者;

5、因为开源和免费的特性,使得用户可以自由无障碍地下载、安装、使用Tomcat。这也是 Tomcat 能够被广泛使用的重要原因之一。

Tomcat最初是作为Servlet/JSP 容器的参考实现而进行设计开发的,在性能方面,并没有做过多的考量。经过几年的时间,Apache 发现 Servlet/JSP 容器并非只是 J2EE 环境的一部分而已。大量 web 应用并不需要 J2EE 这样的庞然大物,完全可以将 Tomcat 作为一个单独的 web 应用服务器来使用。

这实际也正是Tomcat受欢迎的另一原因所在很多开发者不需要如EJBs、JMS、分布式事务处理等J2EE组件。Rod Johnson在 他的《J2EE Development without EJB》一书中,指出了 J2EE 的许多不足之处。比如说,传统 J2EE(Java EE 5之前的 J2EE)中的 Entity EJB 是不怎么招人喜欢的。在Java EE 5中,过时的Entity EJB 组件被淘汰掉,数据持久化的工作,交给了深受 Hibernate 此类 ORM 工具影响的 JPA 来完成。分布式对象在大多数情况下,也是不合时宜的。

Martin Fowler 在《企业应用架构模式》中 分布式对象设计的第一原则就是不要分布你的对象。他给出的建议是将所有的组件部署到集群中的每一个节点中去。因而对于大部分 web 应用,Tomcat 应用服务器就能满足需求。通过诸如 Spring-Struts-Hibernate 这样的组合,可以快速而灵活地开发出能够满足复杂业务需求的 web 系统来。

在开发实践中除了Tomcat贺炜还使用过Resin,就二者的性能方面,Resin 2.x 的性能比同时期的 Tomcat 要好不少。但是 Tomcat 自设计实现了全新的 Catalina 引擎之后,在性能方面的问题便持续得到改善。而 Resin 在步入 3.x 版本后,划分成免费的 Open Source 版本和收费的 Pro 版本。有相当多的测试表明,Resin 3.x OS 的性能,与 Tomcat 5/6 相比要低得多;在配置方面,同 Resin 相比,Tomcat 还是显得稍微繁琐一点。对于中国的开发者而言,为了避免系统中出现乱码,往往还需要对 Tomcat 进行一些额外的配置才可以。而 Resin 在这一方面表现得很好,在绝大多数情况下,基本上不用做任何配置就能正常处理中文而不会出现乱码的问题。

在 Resin 3.x Pro 中,提供了诸如缓存集群等 高级特性,倘若 Tomcat 在这方面有所加强,对于开发者而言无疑是非常美好的一件事情。Tomcat未来的趋势, Tomcat 无疑是使用最为广泛的 web 应用服务器之一,完全有理由相信这样的情况至少还会持续数年。但是天边已经出现两朵小小的、令人不安的乌云。

Ruby on Rails 所展现的开发方式与它所产生的高生产率, 给予 Java 开发者们的震撼很大。如果Java社区不能及时有效地改进web应用开发的方式,那么包括 Tomcat 在内的众多 Java 社区都会受到 RoR 不小的冲击。可能正如 Bruce Tate 所预言的那样,Java 在未来将更加着重于解决更复杂的事情,而普通web应用开发领域,则会逐步让位给像RoR这样高度灵活快速的技术。

来源:百度百科

Tomcat(.jsp)的更多相关文章

  1. Windows下Apache+Tomcat+jsp+php的服务器整合配置经验总结

    对于Apache+Tomcat+jsp+php的整合,针对不同的Tomcat和apache的版本,稍微有些区别. 一.所需软件 (1)JDK: jdk-7u15-windows-x64.exejdk的 ...

  2. (总结)CentOS 6.x使用yum快速安装Apache+PHP+Tomcat(JSP)+MySQL

    (总结)CentOS 6.x使用yum快速安装Apache+PHP+Tomcat(JSP)+MySQL PS:这个是懒人yum快速安装法,用于开发和测试环境很方便,用于没有特殊要求的生产环境也可以.特 ...

  3. tomcat/jsp/servlet版本关系

    Servlet Spec JSP Spec EL Spec WebSocket Spec JASPIC Spec Apache Tomcat version Actual release revisi ...

  4. 【IDEA 2016】intellij idea tomcat jsp 热部署

    刚开始用IDEA,落伍的我,只是觉得IDEA好看.可以换界面.想法如此的low. 真是不太会用啊,弄好了tomcat.程序启动竟然改动一下就要重启,JSP页面也一样. IDEA可以配置热部署,打开to ...

  5. Tomcat JSP提交参数中文乱码问题解决

    参考: http://blog.csdn.net/error_case/article/details/8250209 中文乱码是个老生常谈的问题,一般情况下,只要保证页面,web服务器,数据库的编码 ...

  6. Tomcat/JSP中文编码配置

    来源:http://blog.csdn.net/zhangzikui/article/details/6169978         http://www.iteye.com/topic/300656 ...

  7. CentOS 5.5 Nginx+JDK+MySQL+Tomcat(jsp)成功安装案例

    在CentOS 5.5中安装Nginx+jdk+mysql+tomcat是非常容易的.只需yum安装环境包和nginx.解压安装jdk和tomcat.配置profile文件.server.xml和ng ...

  8. JDK - Tomcat - JSP - Servlet 配置运行全攻略(转)

    http://www.cnblogs.com/myqiao/archive/2005/08/29/225497.html 花了将近两个月的时间,从 JDK 开始一步一步摸索,历经千辛万苦,终于让第一个 ...

  9. tomcat jsp页面乱码解决

    浏览器接收服务器响应的中文参数: JSP页面中告诉浏览器使用什么编码: <%@ page language="java" contentType="text/htm ...

随机推荐

  1. /etc/rc.local 与 /etc/init.d Linux 开机自动运行程序

    1. /etc/rc.local 这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里 --------引用---------------------- 在完成 run level 3 ...

  2. swfupload在chrome中点击上传图片按钮无反应的解决办法

    chrome 22.0.XXXXX dev版上传图片按钮点击无反应原因:是GOOGLE的内建Flash PPAPI外挂所导致的. 问题原因: 由于Google浏览器(Chrome),在最新测试版22. ...

  3. ios 贝塞尔画图

    CGContextRef context = UIGraphicsGetCurrentContext(); //写文字 CGContextSetRGBFillColor(context, 1, 0, ...

  4. ASP之Eval、Execute、ExecuteGlobal区别分析

    Eval.Execute.ExecuteGlobal 这三个语句(函数)都是执行字符串表达式,不过它们之间又有所不同. Eval 计算一个表达式的值并返回结果. 语法:[result = ]eval( ...

  5. 如果更新包更新包现场,class文件更新过去,没有改变,及时删掉,照样能进那个模块的问题。

    这是打更新包需要注意的问题: 带$的同名文件也需要copy过来打更新包,不能只更新一个class文件,找了1天的错误,简直日乐购.

  6. background和background-position相关笔记

    background 可在一个声明中设置background-color,background-image,background-repeat,background-attachment,backgr ...

  7. Windsock套接字I/O模型学习 --- 第一章

    1. I/O模型共有以下几种: 阻塞(blocking)模型 选择(select)模型 WSAAsyncSelect模型 WSAEventSelect模型 重叠(overlapped)模型 完成端口( ...

  8. Batch Sort

    Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  9. Alamofire 框架浅析

    下面是 Github 主页上对 Alamofire 的描述 Elegant HTTP Networking in Swift 为什么这次我选择阅读 Alamofire 的源代码而不是 AFNetwor ...

  10. keyboardWillChangeFrameNotification 引发的思考 是的 思考了很久终于出结果

    func keyboardWillChangeFrameNotification(note: NSNotification) { // TODO 添加键盘弹出的事件 let userinfo = no ...