jsp 开发环境配置l系列篇之一----tomcat

JSP开发平台的建立:Tomcat

作为一个开放源代码的软件, Jakarta-Tomcat有着自己独特的优势:首先,它容易得到。其次,对于开发人员,特别是Java开发人员,Tomcat提供了全部的源代码,包括Servlet引擎、JSP引擎、HTTP服务器. . . . . .,无论是对哪一方面感兴趣的程序员,都可以从这些由世界顶尖的程序员书写的代码中获得收益。最后,由于源代码的开放及世界上许多程序员的卓有成效的工作, Tomcat已经可以和大部分的主流服务器一起工作,而且是以相当高的效率一起工作。如:以模块的形式被载入Apache,以ISAPI的形式被载入IISPWS,以NSAPI的形式被载入Netscape Enterprise Server. . . . . .

接下来,我们进行

如何安装Tomcat,让它发挥作用

如何让TomcatApacheIIS等一起工作。

如何配置Tomcat,让它符合自己的要求。

下面,先来建立一个试验用的JSP页面,先将以下的代码存为helloworld.jsp

<HTML>

<HEAD>

<TITLE>JSP测试页面---HelloWorld!</TITLE>

</HEAD>

<BODY>

<%

out.println("<h1>Hello World!<br>世界,你好!</h1>");

%>

</BODY>

</HTML>

 

Tomcat的安装和直接使用

Apachejakarta项目的主页上(http://jakarta.apache.org/),可以看到有Tomcat的超接,在这里(http://jakarta.apache.org/tomcat/index.html)可以找到各种版本的下载区域,包括当前的发布(Release)版本、开发中的各种版本,其中又分为Win 32版本和Linux版本,其实对于完全由Java写成的TomcatWin 32版本和Linux版本没有多大区别,比如Linux版本,在Solaris下也没有问题。这里,主要以Win 32版本作为示例。

注意:在安装使用Tomcat之前,先安装JDK,最好是SunJDK 1.4JDK 1.5

首先,下载jakarta-tomcat .zip(最新版的tomcat 5.0提供的是exe文件,但是安装以后的文件目录以及配置都差不多)包解压缩到一个目录下,如:“c:/tomcat”。这时,会得到如下的目录结构:

tomcat

- - - jakarta-tomcat

| - - - bin Tomcat执行脚本目录

| - - - conf Tomcat配置文件

| - - - doc Tomcat文档

| - - - lib Tomcat运行需要的库文件( J A R S

| - - - logs Tomcat执行时的L O G文件

| - - - src Tomcat的源代码

| - - - webapps Tomcat的主要We b发布目录

| - - - work Tomcat的工作目录,Tomcat将翻译JSP文件到的Java文件和class文件放在这里在Bin目录下,有一个名为startup .bat(tomcat 4以及以前的版本)的脚本文件,执行这个脚本文件,就可以启动Tomcat服务器,不过,在启动服务器之前,还需要进行一些设置。

   首先,设置环境变量。Win 9xautoexec.bat里用set 语句来设定环境变量,如: set T O M C AT_HOME = c:/tomcat。在winnt/win2000里可以选择“我的电脑”,右键点出菜单,选择属性,弹出对话框“系统特性”,选择“高级”选项页,然后点按钮“环境变量”,可以编辑系统的环境变量。

TOMCAT_HOME值:c:/tomcat (TOMCAT_HOME指示tomcat根目录。)

JAVA_HOME值:c:/java/jdk (JAVA_HOME指示jdk安装目录)

CLASSPATH值:c:/java/jdk/lib/tools.jar

实际上,对于CLASSPATH也可以直接打开tomcat.bat文件,在中间可以找到好几行set CLASSPATH   

......,将自己希望加入的库文件加入到其中即可。

另外,对于JDK 1.3,在中文系统上安装之后,系统注册表会有问题,请用regedit打开注册表查javasoft,位置为hkey_local_machine -> software -> javasoft -> ,找到“Java 运行时环境”把它导出到文件temp.reg . . . .,然后用notepad编辑它,把“Java 运行时环境”替换成“ Java Runtime Environment”,然后导入。同样,最好也把javasoft注册表项中的“Java 插件”另外复制一份为“ Java Plug-in”。接下来就可以执行TOMCAT_HOME /bin/startup.bat,测试一下Tomcat是否运行正常。运行We b浏览器,如Netscape Navigator Internet Explorer 。在浏览器的地址栏中键入:http://localhost:8080。如果看到Tomcat的信息,那么就说明Tomcat已经安装成功了。然后测试TomcatJSP引擎是否正常工作,即将前面建立的Hellorld.jsp文件拷贝到TOMCAT_HOME/webapps/examples/jsp目录下,然后在浏览器的地址栏中键:http://localhost:8080/examples/jsp/HelloWorld.jsp,这时候应该可以看到如图3 - 1所示的画面:

 

3 -1(我就不抓图了,就是指浏览器中显示 helloworld)

 

 

在启动Tomcat的过程中,可能会遇到一些问题,这里就常见问题进行一些说明。

1) 启动Tomcat失败。出现这种情况时,可能有两种现象:

第一种:执行startup.bat以后没有Java窗口出现。

第二种:有Java窗口出现,但是接着自行退出。

对于第一种情况,很可能是TOMCAT_HOME环境变量设置有问题,打开startup.bat文件,观察脚本的写法,一般可以发现问题。对于第二种情况,可能是当前系统中已经有一个服务器占用了8080端口,这时需要把原先的服务器关闭,或者利用后面讲的Tomcat的配置方法修改Tomcat的服务端口。也可能是由于CLASSPATH设置有误,这时需要检查CLASSPATH是否设置正确。

2) 启动Tomcat成功,可以看到首页,但是不能执行JSP脚本。

这种情况一般是由于CLASSPATH设置有误或JAVA_HOME设置有误,经过试验发现,当使

Windows自带的java.exe c:/winnt/system32c:/win d o w s / s y s t e m)时可能会出现这种问题。

TomcatApache的配合

  作为Apache的一个子项目jakarta-tomcat当然要对Apache提供强有力的支持,在下载的Tom cat压缩包解开后,在TOMCAGT_HOME/conf目录下有一个tomcat-Apache.conf文件,这个文件并不是Tomcat自己的配置文件,而是提供给Apache用来使Tomcat能够和Apache一起工作的。实际上,这个文件是在Tomcat的运行过程中自动生成的。但是,光有这个文件还不能使ApacheTomcat一起工作,还需要一个Apache的动态载入库文件ApacheModuleJServ.dll,这个文件也可以在网站http://jakarta.Apache.rg得到,需要说明的是,对于Linux版本的tomcat,需要的是mod_jserv.so文件,ws50为后缀的文件是Linux下的动态连链库文件。

首先,要得到Apache HTTP服务器。Apache是一个免费而且提供源代码的HTTP服务器,由于Apache强大的性能和用户可以利用源代码构造自己的HTTP服务器的特性,Apache及其衍生出来的产品已经成为世界上应用最多的HTTP服务器,甚至连著名的IBM公司为Websphere应用服务器提供的IBM HTTP Server也是由Apache改造而来的。在http://jakarta.Apache.org可以得到Apache服务器的最新版本, Windows下的Apache版本是一个安装文件,可以轻松地安装在计算机上。而如果在Linux下使用Apache,那么最好使用源代码包自己进行编译,需要注意的是,编译时需使用选项enablemodule=so

双击Apache_1_3_12_Win 32.exe文件进行安装,缺省安装目录为C:/Program Files/Apache

Group/Apache,可以修改为自己喜欢的目录。如果需要修改Apache服务器工作的端口号以及HTML发布目录或者其他Apache的参数,那么可以修改Apache安装目录/conf/httpd.conf,一般可以修改HTML发布目录为自己喜欢的目录。至于端口号,当计算机上还运行有其他We b服务器时可以修改之,一般Windows9x的机器上如果装有PWS就需要修改,而WindowsNTWindows 2000的机器上如果装有IIS,也需要修改。对于没有连接到网络的机器,有时需要设置一下ServerName.Apache服务器的具体配置请见相关书籍,这里就不讲了。

另外最好将Apache作为一个服务安装在运行Windows的电脑上。这只需要执行开始→程序→ Apache Web ServerInstall Apache as a service即可。打开浏览器,在地址栏中键入http://localhost:Apache运行的端口号,如果能够见到Apache的欢迎页面,或者是一大堆文件让你选择,就可以认为Apache服务器已经开始工作了。Apache HTTP 服务器配置成功以后,就可以着手让TomcatApache一起工作。首先,将得到的Apache ModuleJServ.dll文件拷贝到Apache安装目录下的Modules子目录下, Linux的用户将mod_jserv.so文件拷贝到Apache安装目录的libexec目录下,然后将Apache安装目录下的httpd.conf文件用文本编辑器打开,在最后面加入下面的指令:INCLUDE Tomcat_Home/conf/tomcat.conf—对于Windows用户。或INCLUDE Tomcat_Home/conf/tomcat.conf—对于Linux用户。上面的Tomcat_Home指的是Tomcat的安装目录。最后,在httpd.conf文件中加上一行: LoadModule jserv_module modules/ApacheModuleJServ.dll

对于Linux下的用户,一般不需要手动加上LoadModule jserv_module libexec/mod_jserv. s o这一行,tomcat-Apache.conf文件已经缺省加上了,如果没加,自行加上即可。一切就绪以后,重新启动Apache服务器和Tomcat,在浏览器的地址栏中键入:

 http://localhost: Apache运行的端口号/examples/jsp/,如果能够看到TomcatJSP示例列表,就说明Tomcat已经和Apache一起工作了。

 

TomcatIIS的配合

  Windows平台下最常用的Web服务器无疑是IIS(包括PWS),对于IISTomcat也提供了配合工作的方法,使用这种方法,可以为本来不具有Java ServletJSP功能的IIS增加处理JSPJavaServlet的功能。为了使TomcatIIS一起工作,首先要得到isapi_redirect.dll,这是一个IS的插件(Plug-in),可以从http://jakarta.Apache.org/直接下载编译好的版本,也可以自己使用Visual C++编译得到。得到以后,放到一个自己喜欢的目录,例如c:/tomcat/Jakartatomcat/bin/iis/i386/ 目录下。另外,在使IISTomcat配合的过程中,还需要用到另外两个Tomcat的配置文件,一个是workers.properties,这个文件定义了Tomcat的工作进程使用的主机和端口。在Tomcatconf目录中有一个示范性的workers.properties文件。另一个uriworkermap.properties,这个文件是映射URL目录和Tomcat工作进程的。同样,Tomcatconf目录中有一个示范性的uriworkermap.properties

文件。

首先,配置isapi_redirect.dll

1) 在系统注册表中建立一个新的键值:HKEY_LOCAL_MACHINE/SOFTWARE/Apache

Software Foundation/Jakarta Isapi Redirector/1.0

2) 添加一个名为extension_uri的字符串值为/jakarta/isapi_redirect.dll

3) 添加一个名为log_file的字符串值为c:/tomcat/Jakarta-tomcat/logs/isapi.log

4) 添加一个名为log_level的字符串值为debuginformerroremerg中的一个。

5) 添加一个名为worker_file的字符串值为

6) c:/tomcat/jakarta-tomcat/conf/workers.properties

7) 添加一个名为worker_mount_file的字符串值为

8) c:/tomcat/jakarta-tomcat/conf/ uriworkermap.properties

然后,打开IIS的管理控制台,在需要使用Tomcat提供附加的JSPJava Servlet服务的Web站点中添加一个虚拟目录。注意,一定要使用“ jakarta”作为虚拟目录的名称,这个虚拟目录的实际物理位置应当是包含isapi_redirect.dll文件的目录,这里假设为c:/tomcat/Jakartatomcat/bin/iis/i386。在设定虚拟目录时注意要设此虚拟目录为可执行。如果是在PWS中,一样处理。接着,在IIS的控制台中为此Web站点添加一个ISAPI过滤器(在此We b站点上点击鼠标右键,选择属性)。名称随意,但过滤器要设定为isapi_redirect.dll这个文件。如果使用的是PWS就比较麻烦了。需要使用注册表编辑器,在键HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/W3SVC/Parameters中,有一个名为Filter Dlls的键值,在这个键值中添加isapi_redirect.dll,注意要包含完整的路径。最后,重新启动IISPWS,最好是能够重新启动计算机。启动Tomcat以后,打开浏览器,在地址栏中键入http://localhost/examples/,如果能够看到jspservlet两个目录,就说明利用isapi_redirect.dll所作的重定向已经成功,可以执行一下jsp目录下的例子做试验。

 

Tomcat的配置和常见问题

Tomcat为用户提供了一系列的配置文件来帮助用户配置自己的Tomcat,和Apache HTTP不同,Tomcat的配置文件主要是基于X M L的;如server.xmlweb.xml......,只有workers.propertiesu riworkermap.properties等少数几个文件是传统的配置文件。本节将详细讨论Tomcat的主要配置文件以及如何利用这些配置文件解决常见问题。

   Tomcat的主配置文件:server.xml

观察server.xml,可以发现其中有如表一些元素。

3-1

元素

描述

Server

Server元素是server.xml文件的最高级别的元素,Server元素描述一个Tomcat服务器,一般来说用户不用关心这个元素。一个Server元素是一般会包括LoggerContextManager两个元素

 

L o g g e r

是一般会包括LoggerContext Manager两个元素LoggerLogger元素定义了一个日志对象,一个日志对象包含有如下属性:是1) name 。表示这个日志对象的名称。是2) path。表示这个日志对象包含的日志内容要输出到哪一个日志文件。是3) verbosityLevel。表示这个日志文件记录的日志的级别。是一般来说,Logger对象是对Java ServletJSPTomcat运行期事件的记录

 

CotextManager

ContextManager定义了一组ContextInterceptors(ContextManage的事件监听器) , RequestInterceptorsContextManage的事件监听器),ContextsWeb应用程序的上下文目录)和它们的Connectors(连接器)的结构和配置。是ContextManager包含如下一些属性:是1) debug。记录日志记录调试信息的等级。是2) homewebapps/conf/logs/和所有Context的根目录信息。这个属性的作用是从一个不同于TOMCAT_HOME的目录启动Tomcat3) workDir.Tomcat工作目录。

 

ContextInterceptorRequestInterceptor

是两者都是监听ContextManager的特定事件的拦截器。ContextInterceptor监听Tomcat的启动和结束事件信息。而RequestInterceptor监听用户对服务器发出的请求信息。一般用户无需关心这些拦截器,对于开发人员,

需要了解这就是全局性的操作得以实现的方法

Connector

Connector(连接器)对象描述了一个到用户的连接,不管是直接由Tomcat到用户的浏览器还是通过一个Web服务器。Tomcat的工作进程和由不同的用户建立的连接传来的读/写信息和请求/答复信息都是由连接器对象管理的。对连接器对象的配置中应当包含管理类、TCP/IP端口等内容

Context

每一个Context都描述了一个TomcatWeb应用程序的目录。这个对象包含以下属性:

1) docBase。这是Context的目录。可以是绝对目录也可以是基于ContextManage的根目录的相对目录。是2) path。这是ContextWe b服务时的虚拟目录位置和目录名。是3) debug。日志记录的调试信息记录等级。

4) reloadable。这是为了方便Servlet的开发人员而设置的,当这个属性开关打开的时候,Tomcat将检查Servlet是否被更新而决定是否自动重新载入它

 

 

 

元素描述Server Server元素是server.xml文件的最高级别的元素,Server元素描述一

Tomcat服务器,一般来说用户不用关心这个元素。一个Server元素一般会包括LoggerContextManager两个元素。Logger元素定义了一个日志对象,一个日志对象包含有如下属性:

1) name 。表示这个日志对象的名称。

2) path。表示这个日志对象包含的日志内容要输出到哪一个日志文件。

3) verbosityLevel。表示这个日志文件记录的日志的级别。

一般来说, Logger对象是对Java ServletJSPTomcat运行期事件的记录

ContextManager ContextManager定义了一组ContextInterceptorsContextManage

事件监听器) , RequestInterceptorsContextManage的事件监听器),ContextsWeb应用程序的上下文目录)和它们的Connectors(连接器)的结构和配置。

ContextManager包含如下一些属性:

1) debug。记录日志记录调试信息的等级。

2) homewebapps/conf/logs/和所有Context的根目录信息。这个属性的作用是从一个不同于TOMCAT_HOME的目录启动Tomcat

3) workDirTomcat工作目录。

ContextInterceptor RequestInterceptor 两者都是监听ContextManager的特定事件的拦截器。ContextInterceptor监听Tomcat的启动和结束事件信息。而RequestInterceptor监听用户对服务器发出的请求信息。一般用户无需关心这些拦截器,对于开发人员,需要了解这就是全局性的操作得以实现的方法Connector Connector(连接器)对象描述了一个到用户的连接,不管是直接由Tomcat到用户的浏览器还是通过一个We b服务器。Tomcat的工作进程和由不同的用户建立的连接传来的读/写信息和请求/答复信息都是由连接器对象管理的。对连接器对象的配置中应当包含管理类、TCP/IP端口等内容元素描述Context每一个Context都描述了一个TomcatWe b应用程序的目录。这个对象包含以下属性:

1) docBase。这是Context的目录。可以是绝对目录也可以是基于ContextManage的根目录的相对目录。

2) path。这是ContextWe b服务时的虚拟目录位置和目录名。

3) debug。日志记录的调试信息记录等级。

4) reloadable。这是为了方便Servlet的开发人员而设置的,当这个属性开关打开的时候,Tomcat将检查Servlet是否被更新而决定是否自动重新载入它

1. 加入自己的日志文件添加Logger对象就可以加入自己的日志文件,添加工作相当简单,只需要将作为示例的Logger对象复制一份,然后修改一下前面介绍的几个属性就可以了。在设定了Logger以后,就可以在自己的Servlet中使用ServletContext.log ( )方法来建立自己的日志文件。

2. 设定新的JSP目录

设立新的JSP工作目录是比较简单的,只需要添加一个Context对象就可以了。如,要在c:/jsp目录下开发JSP项目,并且让用户可以使用/mybook/虚拟目录访问,则:<Context path="/mybook" docBase="c:/jsp" debug="0" reloadable="true" ></Context>一般来说,这样就可以直接执行J S P文件了,如果进一步想要在这下面建立We b应用程序,那么还需要进一步的配置,具体方法在后面论述。

 

Windows下代码保护的问题

Windows下使用Tomcat时有一个问题需要注意,可以做一个试验,启动Tomcat后,在浏览器的地址栏中键入: http://localhost:8080/examples/jsp/HelloWorld.JSP(注意后缀要大写)。就会发现奇怪的现象,浏览器的窗口中什么都没有,查看H T M L源文件就会发现,这个JSP文件的源代码被Tomcat完全输出到了浏览器!如果是这样,岂不是服务器端的任何源代码都会被暴露在互联网上。实际上,解决方法很简单,把各种后缀的组合全部写到Tomcat_Home/conf/web.xml里就可以了,这样Tomcat会将不同后缀名的jsp分开对待,就不会泄露代码了。

<servlet-mapping>

<servlet-name>

jsp

</servlet-name>

<url-pattern>

*.jsp

</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>

Jsp

</servlet-name>

<url-pattern>

*.Jsp

</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>

JSp

</servlet-name>

<url-pattern>

*.JSp

</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>

JsP

</servlet-name>

<url-pattern>

*.JsP

</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>

JSP

</servlet-name>

<url-pattern>

*.JSP

</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>

jSp

</servlet-name>

<url-pattern>

*.jSp

</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>

jSP

</servlet-name>

<url-pattern>

*.jSP

</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>

jsP

</servlet-name>

<url-pattern>

*.jsP

</url-pattern>

</servlet-mapping>

 

ApacheIISTomcat协作时工作目录的添加

1. Apache

由于Jakarta-Tomcat项目是Apache的一个子项目,所以向Tomcat-Apache协作的We b服务器添加工作目录时只需要修改Tomcat - Apache.conf文件就可以了。也许读者会觉得奇怪, Tomcat-Apache.conf文件不是在Tomcat启动时自动生成的吗?的确如此,但是Tomcat自动生成的Tomcat -Apache.conf文件仅仅是Tomcat提供的一个缺省配置文件而已,如果需要,可以修改,然后存放在另外的目录中,或是更名,再在httpd.conf文件中将这个新的文件包含进来就可以了。为什么Tomcat不自动修改Tomcat - Apache . c o n f文件以适应工作目录添加的需要呢? Tomcat的确修改了Tomcat - Apache.conf文件,但是修改的结果显然是不正确的。如,前面在server.xml添加了工作目录/mybook - - >c:/jsp后,Tomcat____Tomcat-Apache.conf文件,添加了这么几行:

Alias /mybook C:/tomcat/jakarta-tomcat/webapps/mybook

<Directory "C:/tomcat/jakarta-tomcat/webapps/mybook">

Options Indexes FollowSymLinks

</Directory>

ApJServMount /mybook/servlet /mybook

<Location /mybook/Web-INF/ >

AllowOverride Non

deny from all

</Location>

这显然是有问题的,尽管虚拟目录是/mybook,但是实际的目录并不是C:/tomcat/jakarta-tomcat/webapps/mybook。查看Tomcat的源代码C:/tomcat/jakarta-tomcat/src/org/Apache/tomcat/task/ApacheConfig.java文件可以发现,Tomcat在生成Tomcat - Apache . c o n f文件的时候,简单地在虚拟目录前面加上原先Tomcat的缺省webapp目录作为新的工作目录:

pw.println("Alias " + path + " " +

FileUtil.patch(tomcatHome + "/webapps" + path));

pw.println("<Directory /"" +

FileUtil.patch(tomcatHome + "/webapps" + path) +

"/">");

pw.println(" Options Indexes FollowSymLinks");

pw.println("</Directory>");

那么如何解决这个问题呢?修改Tomcat的源代码也可以,不过,对于一般的用户,如前所述直接修改Tomcat - Apache . c o n f文件更现实一些。修改的方法举例如下:Alias /mybook C:/jsp

<Directory "C:/jsp">

Options Indexes FollowSymLinks

</Directory>

ApJServMount /mybook/servlet /mybook

<Location /mybook/Web-INF/ >

AllowOverride None

deny from all

</Location>

也就是简单地将原先错误的实际目录C:/tomcat/jakarta-tomcat/webapps/mybook修改为c :/jsp就可以了。修改完文件后,一定要存为另一个文件并修改h t t p d . c o n f文件将这个文件包含进来,否则,重新启动Tomcat后,这个正确的Tomcat-Apache.conf文件会被Tomcat重新生成的Tomcat -Apache .conf文件覆盖掉。最后,重启ApacheTomcat就可以了。

2. IIS

ApacheTomcat几乎无缝的配合不一样, IISTomcat的配合多少有些复杂,需要向ISAPI Redirect添加新的内容。不过还好, Tomcatuniworkermap.conf文件将这个过程简单化了。需要做的事情共分两步:

1) Tomcat中添加一个工作目录。前面已经讲述了如何实现,这里依然使用/mybook- ->c:/jsp这个例子。

2) ISAPI Redirect添加工作目录。使用文本编辑器打开文件uniworkermap.conf,添加一

行:

/mybook/*=ajp12

然后重新启动IISTomcat就可以了。

 

设定Tomcat作为Wi n d o w s的服务而启动

手工启动Tomcat显然不是一个合适的使用Tomcat作为We b服务的方法,在Linux下可以通过

修改启动脚本自动启动Tomcat,在Windows下则可以设定Tomcat作为Windows的服务而启动。

Tomcat作为Windows NT/2000的一个服务是需要借助工具的

1) 下载工具,这里作为例子的是gservany ----NT下的一般应用程序作为服务运行的工具。下载网址为http://www.advok.com/gservany.html。将z i p文件解压缩,将gservany.exe放入winnt/system32目录下,(以防以后被误删)

2) N TC o m m a n d(命令行模式)下输入: gservany -i tomcat C:/jakarta-tomcat/bin”“s t a r t u p . b a tC:/jakarta-tomcat/bin”“shutdown.bat”。

3) 启动service管理器,会看到tomcat service被装上,加些注释说明这个service实际干什么,再修改启动类型为“自动”。然后再启动它。这样,就成功地将Tomcat作为Service安装在NT下了。其实,将N T下的应用程序作为服务安装在N T中的工具还有很多,任何一种都应该可以将Tomcat加入到N T的服务中。

Tomcat中建立新的We b应用程序

JSP主要是为建立We b网站而开发的技术,这种技术由We b应用程序的一整套We b文件(jsp

servlethtmljpggifclass......)所组成。TomcatWe b应用程序的建立提供了一系列的帮助,下面分步骤描述。

1. 应用程序的目录和结构

按照Tomcat的规范,从/example例子目录来看, TomcatWe b应用程序应该由如表3 - 2所示目录组成的。

3 2

 

*.html, *.jsp, etc.

 

这这里可以有许多目录,由用户的网站结构而定,实现的功能应该是网站的界面,也就是用户主要的可见部分。除了H T M L文件、J S P文件外,还有js(JavaScript)文件和css(样式表)文件以及其他多媒体文件等等

 

Web-INF/web.xml

这这是一个We b应用程序的描述文件。这个文件是一个X M L文件,描述了S e r v l e t和这个

We b应用程序的其他组件信息,此外还包括一些初始化信息和安全约束等等

 

Web-INF/classes/

这这个目录及其下的子目录应该包括这个We b应用程序的所有S e r v l e t文件,以及没有被

压缩打入J A R包的其他c l a s s文件和相关资源。注意,在这个目录下的J a v a类应该按照其所

属的包组织目录

 

Web-INF/lib/

这这个目录下包含了所有压缩到J A R文件中的类文件和相关文件。比如:第三方提供的

J a v a库文件、J D B C驱动程序等等. . . . . .

 

 

*.html, *.jsp, etc. 这里可以有许多目录,由用户的网站结构而定,实现的功能应该是网站的界面,也就是用户主要的可见部分。除了HTML文件、JSP文件外,还有jsJavaScript)文件和css(样式表)文件以及其他多媒体文件等等Web-INF/web.xml这是一个We b应用程序的描述文件。这个文件是一个X M L文件,描述了Servlet和这个Web应用程序的其他组件信息,此外还包括一些初始化信息和安全约束等等Web-INF/classes/这个目录及其下的子目录应该包括这个We b应用程序的所有Servlet文件,以及没有被压缩打入JAR包的其他class文件和相关资源。注意,在这个目录下的Java类应该按照其所属的包组织目录Web-INF/lib/这个目录下包含了所有压缩到J A R文件中的类文件和相关文件。比如:第三方提供的Java库文件、JDBC驱动程序等等......

2. web.xml文件

web.xml文件包含了描述整个Web应用程序的信息。下面以一个web.xml文件为例,讲解里面的各个对象。

web.xml

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"

"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>

<!-

Web应用程序的主要描述

-->

<display-name>My Web Application</display-name>

<description>

在这里加入Web应用程序的描述信息

</description>

<!-

下面定义了Web应用程序的初始化参数,

JSPServlet文件中使用下面的语句

来得到初始化参数

String value =

getServletContext().getInitParameter("name");

这里可以定义任意多的初始化参数

-->

<context-param>

<param-name>webmaster</param-name>

<param-value>myaddress@mycompany.com</param-value>

<description>

这里包含了初始化参数的描述

</description>

</context-param>

<!-

下面的定义描述了组成这个Web应用程序的Servlet,还包含初始化参数。在Tomcat中,也可以将放在Web-INF/classes中的Servlet直接以servlet/Servlet名访问,但是一般来说,不推荐这样使用。而且这样的使用方法还会导致Servlet的相关资源组织的复杂性。所以一般来说推荐将所有的Servlet在这里定义出来。初始化参数可以在Servlet中一这种语句的到:

String value =

getServletConfig().getInitParameter("name");

-->

<servlet>

<servlet-name>controller</servlet-name>

<description>

这里加入这个Servlet的描述

</description>

<servlet-class>com.mycompany.mypackage.ControllerServlet</servlet-class>

<init-param>

<param-name>listOrders</paramName>

<param-value>com.mycompany.myactions.ListOrdersAction</param-value>

</init-param>

<init-param>

<param-name>saveCustomer</paramName>

<param-value>com.mycompany.myactions.SaveCustomerAction</param-value>

</init-param>

<!-

服务器启动后这个Servlet加载的时间

-->

<load-on-startup>5</load-on-startup>

</servlet>

<servlet>

<servlet-name>graph</servlet-name>

<description>

这个Servlet的描述

</description>

</servlet>

<!-

Servlet映射对应了一个特殊的URI请求

到一个特殊的Servlet的关系

-->

<servlet-mapping>

<servlet-name>controller</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>graph</servlet-name>

<url-pattern>/graph</url-pattern>

</servlet-mapping>

<!-

设定缺省的Session过期时间

-->

<session-config>

<session-timeout>30</session-timeout> <!-- 30 minutes -->

</session-config>

</web-app>

3. 将应用程序打包为WA R文件

WA R文件是包装We b应用程序的一种方法,使用WAR文件,既方便了管理各种相关文件,又减小了整个应用程序的体积。下面先来看一看将We b应用程序打包为WAR文件的语法:

packager -webArchive[-classpath servletorjspbean/classes [ -

classFiles package/MyClass1.class: package/MyClass2.class ] ]

<content-root> [-contentFiles login.jsp:index.html:images/me.gif]

web.xml myWebApp.war

下面是一个简单的应用示例,将myebPage.xml的配置和myebPageDir/下的文件打入包myWebPage.war中:

packager -webArchive myWebPageDir myWebPage.xml myWebPage.war

使用-contentFiles 标志可以添加个别的目录文件

packager -webArchive myWebPageDir -contentFiles Hello.jsp

myWebPage.xml myWebPage.war

packager -webArchive myWebPageDir -contentFiles Hello.jsp:Hello.html

myWebPage.xml myWebPage.war

假定Servlet文件在classes/package/Servlet1.class,指定ServletJSP文件:

packager -webArchive -classpath classes myWebPageDir -contentFiles

Hello.jsp myWebPage.xml myWebPage.war.

下面示例如何仅仅包含package/Servlet1.class packageB/Servlet.class 两个文件到WAR文件中:

packager -webArchive -classpath classes -classFiles package/

Servlet1.class:packageB/Servlet.class myWebPageDir -contentFiles

Hello.jsp myWebPage.xml myWebPage.war

最后,需要说明的是,每个.war文件前面的.xml文件就是前面讲过的web.xml文件。生成的WAR文件可以直接放在包含Web应用程序的目录下使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值