随着Catalina Servlet引擎的出现,Tomcat第四版号称它的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器。然而,可以帮助你开始了解Tomcat的文件资源却很少,只有很少的一些书籍,而且在Jakarta网站上的一些资料也不是很清楚。
让我们来一步一步地了解Tomcat的安装过程,然后讨论一下使用一些Tomcat 4/JSP的功能来建构Web应用软件。
什么是Tomcat?
Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat由Apache-Jakarta子项目支持并由来自开放性源代码Java社区的志愿者进行维护。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。
安装Tomcat 4
要开始使用Tomcat 4,你至少要下载Java Development Kit (JDK) 1.2版和Tomcat 4安装包,他们分别是ZIP文件和Windows安装数据包。一旦你安装了这两个数据包,你必须加入两个环境变量:JAVA_HOME和TOMCAT_HOME。JDK将安装在JAVA_HOME目录之中,而Tomcat 4则将安装在TOMCAT_HOME目录之中。
如果是通过Windows安装程序进行安装的,那么你可以使用菜单选项来启动Tomcat,或者是打开一个命令提示窗口,进入TOMCAT_HOME\bin目录,运行startup.bat/sh文件。然后打开一个浏览器并输入URL http://localhost:8080。缺省的Tomcat页面将出现在你的眼前。
Web应用软件初级读本
在我们开始之前,我们来回顾一下一个Web应用软件所包含的部件。Java Servlet规范将Web应用软件定义为servlets,HTML页面,类和其他在来自多个行销商的多个容器上捆绑并运行的资源的一个集合。在 Tomcat中,这些资源被放置在TOMCAT_HOME\webapps文件夹下面的一个特殊的目录结构之中。对于一个Web应用软件的样本 (myapp)来说这个目录结构会是这样:
TOMCAT_HOME\webapps\myapp\WEB-INF\classes\lib
Myapp 目录被视为是Web应用软件的根目录,所有的JSP,HTML,JavaScript文件和其他资源都位于这个目录之下。WEB-INF目录中包含应用软件所使用的资源,但是WEB-INF却不在公共文档根目录之中。在这个目录中所包含问的文件都不能被客户机所访问。类目录中(在WEB-INF下)包含运行myapp时所需的servlets,beans和效用类。在一些实例(log4j)之中,属性文件被放置在类的目录之中。Lib目录(在WEB-INF下)包含有Java archive files (JARs),例如JDBC驱动器或标签库,这是myapp所依靠的。如果一个类出现在JAR文件中和在类的目录中,类加载器会加载位于类目录中的那一个。
Servlets, JSPs和ServletContext
Java Servlet是一个独立于平台的部件,它使用由JSP/Servlet容器管理的请求/回应模型来与Web客户机进行沟通。要编写一个servlet, GenericServlet和HttpServlet类都会被扩展,GenericServlet具有一个abstract服务方式必须得到实现。 HttpServlet扩展了GenericServlet并且要求你实现下面方式之中的一个:doGet, doPost, doPut, doDelete, init, destroy和getServletInfo。在典型的情况下实现的是doGet和doPost方式。
有价值的参考
我们参考了James Goodwill的"Apache Jakarta-Tomcat,"一书中的一章,作为这些文章的信息来源。目前这是唯一的一本特别介绍Tomcat的参考书籍,来自Wrox, Sams和Wiley的其他书籍也会很快问世。
Servlet具有下面的生存周期:
1.当Servlet被例举时,init方式被调用。
2.Servlet可以服务零多个请求。
3.Web应用软件被关闭,致使destroy方式被调用并允许对象被回收。
Init方式可以被用来通过ServletConfig参数给Servlet的属性初始化。在web.xml文件中设置的初始化参数被传递至ServletConfig之中的init方式并可以通过getInitParameter方式被访问。
Java 服务器页面允许你通过将Java逻辑嵌入至要求的文件中来产生动态HTML页面。JSP是HTML,特殊标签和内嵌Java代码的一个混合,每一个JSP 都从这个混合被翻译为一个servlet,这个servlet被用来在需要JSP的时候发送HTML回到客户机。Servlet的所产生的Java代码和类文件被储存在缺省为TOMCAT_HOME/work的一个特定位置,这个目录在Context元素中被指定。在很多的实例之中,如果一个JSP页面没有像预期的那样进行运作或是如果一个具有行编号的stack trace被显示,你就可以查看所产生的代码来帮助确定所出现的问题。
这里是某些JSP可用的隐含变量:
*
request – 向HttpServletRequest作参考
*
response – 向HttpServletResponse作参考
*
pageContext – 在JSP之中提供向名称空间的访问
*
session – 向HttpSession作参考
*
application – 向ServletContext作参考
*
config – 向ServletConfig作参考
*
page – 向当前被访问的JSP实例作参考,相似地,对这个JSP的所产生的Servlet使用这个变量
*
exception – 向由JSP产生的例外作参考,只在isErrorPage设置为真时在JSP上可用
标准JSP标签是:
*
<jsp:useBean> – 允许你在页面,请求,session或是应用软件的范围内中放置或查找一个bean(这个标签对于保持状态非常有用)。
*
<jsp:setProperty> – 允许你对已经定义的bean设置属性。
*
<jsp:getProperty> – 获取一个bean的属性的值,将其转换为一个字符串,并放置在输出流之中。
*
<jsp:param> – 向包含前进和插入等标准活动提供参数和值。
*
<jsp:include> – 在请求时间加入一个页面代替@include指示的翻译时间。
*
<jsp:forward> –在现有的Web应用软件中使请求前进到另一个资源。
*
<jsp:plugin> – 使能JSP创造者使用客户机浏览器的独立架构来产生HTML,可以导致指定的applet或是部件的下载和后续执行行为(标签的值被一个<object>或<embed>标签所取代)。
ServletContext可以被认为是对于Web应用软件的一个整体性存储区域。每一个Web应用软件都具有ServletContext。存储在ServletContext之中的对象将一直被保留,除非是被删除。
建构一个Web应用软件样本
现在我们来建构一个包含有一个servlet,一个bean和几个JSP页面的Web应用软件样本。这个Web应用软件名为myapp,且文件将存在于TOMCAT_HOME\webapps\myapp目录之中。
.\ 目录包含所有的JSP文件,如表A所示。index.jsp页面使用<jsp:forward>标签来有效地将form.jsp设置为myapp的主页。form.jsp页面使用<jsp:include>标签来加入导航和两个分开的窗体来窗体页面得到完善。注意第三个<jsp:include>标签如何使用<jsp:param>标签来将一个参数传递给jsp_form.jsp页面的。servlet_form.jsp页面是一个在 jsp_form.jsp页面提交给另一个JSP页面时使用servlet做窗体处理的例子。company_name.jsp页面使用从 jsp_form.jsp页面提交的参数来建构公司的彩色标识。bean_values.jsp页面使用<jsp:useBean>标签在应用软件的范围内来存储/恢复/修改bean的属性。variables.jsp页面显示了使用JSP之中一些可用的隐含变量的例子。
.\WEB-INF\classes\myapp目录之中包含了应用软件所使用的Servlet和bean的类文件,如表B所示。MyBean类具有一个属性名为stringValue。bean_values.jsp页面被用于在应用软件的范围内储存这个bean的一个实例。 CompanyNameServlet被作为servlet_form.jsp页面上提交窗体的目的地。这个servlet根据所请求的参数来产生 HTML输出。注意我们忽略了init方式来设置web.xml文件中给出的companyName属性。让在一个方式中的doGet()或是 doPost()执行调用其它的执行则是一个普遍的惯例。
.\WEB-INF目录包含有web.xml文件,如表C所示,它定义了servlet和一个内容参数。注意init-param指定了公司的名称。这个参数从CompanyNameServlet的init方式中的ServletConfig解压而来。内容参数可以在variables.jsp页面之中被访问。
要运行myapp应用软件,将文件放置在TOMCAT_HOME\webapps\myapp目录之中并启动Tomcat。Tomcat一旦被启动,在浏览器中键入URL http://localhost:8080/myapp。这样将会调出带有form.jsp内容的index.jsp页面。
总结
这个关于Tomcat的简要介绍可以帮助工作的开展,但是对于JSP和Tomcat的配置来说远远不止是这篇文章里我们谈到的这些内容而已。Tomcat具有一个位于TOMCAT_HOME\conf目录之中的server.xml文件,它允许了更进一步客制化,提供了一个管理者应用软件和名为Valves的请求—预处理程序,他还可以实现过滤器。Tomcat整合了log4j和Apache Web服务器,为你的Web应用软件提供了更加健全的解决方案。总的来说,Tomcat是一个十分出色的选择,特别是它又是免费的。