JSP网络编程(学习笔记)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 搭建运行和发环境开

工欲善其事,必先利其器。学习计算机技术,光看理论是不够的,还必须要多加实践。因此本章先介绍如何搭建运行和开发环境,让读者知道如何编译、部署和运行Web程序,在后续章节讲解具体技术时就可以亲自实践了。

本章内容包括:

★ 概述运行和开发环境,从整体上了解开发和运行的过程和所需的工具。

★ 学习JDK、Tomcat的安装、配置和测试。

★ 开发并部署简单的例子,熟悉工具的使用。

通过本章的学习,读者应该就能使用JDK、Tomcat进行简单Web程序的开发和部署工作了,这对本书大部分内容的学习都适用,后续章节在需要时还会介绍其他工具。读者以后可能会使用不同的工具,但它们的使用原理是一样的,掌握了其中一些就很容易举一反三。

注意

安装及熟悉工具的使用是很麻烦的一步,主要靠摸索。如果碰到困难请慢慢来,不要在这里就放弃。

进入第02章

2.1 Servlet和JSP开发环境概述

和开发其他应用程序类似,用Servlet和JSP开发Web应用程序也需要开发和运行环境。所需要的环境及关系如图2-1所示。

图2-1 开发、运行环境关系图

Java虚拟机是所有Java程序运行的基础,Java的跨平台之所以能实现,是由于它将操作系统之间的差异都隐含在JVM中,而向外提供一个统一的接口。实际上也有认为Java其实不是跨平台,它本身就是一个平台,因此也有“Java平台”这样的说法。现在的Web容器和开发工具一般也是Java写成的,因此需要底层JVM的支持。

Sun、IBM等很多公司都实现了不同平台上的JVM,本章中将使用Sun公司的JDK。

Web应用程序都是在Web容器上运行的,由Web容器负责解决Web应用的很多问题,并提供给Web程序一个运行环境。现在已经有很多Web容器出现了,如Tomcat、Resin等,本书中将使用免费开源的Tomcat。

最后是开发工具。跟使用其他语言编写的程序一样,需要一个能编译Java源程序的工具,JDK本身自带的工具javac就是编译Java源程序的工具。但当程序更大更复杂时,利用开发工具进行管理将使工作变得更轻松。现在已经出现很多优秀的开发工具了,如Eclipse、JBuilder、NetBean等,在后续章节中将介绍Eclipse的使用。

Web程序开发、编译后,还需要部署到Web容器上才能运行。一般来说,部署需要考虑的问题较多,而且有不少和具体Web容器相关的问题,因此本章先通过一个简单的例子说明基本的步骤,后续章节学习其他知识时再介绍相关的部署项。

注意

本章中介绍的工具安装都是基于Windows平台的,但其他系统的安装配置基本原理是一样的,读者有需要可参考相关资料。

2.2 安装和配置JDK

本节介绍在Windows平台下进行Sun公司JDK的安装和配置。JDK是Java Development Kit(Java开发工具)的缩写,它包含了JRE(Java Runtime Enviroment,Java运行时环境),这就是JVM;也包括了一些用于开发Java程序的简单工具,如编译Java源程序的javac、用于打包的jar等。对于简单的程序使用这些工具就已足够,但当程序较大时为了管理方便,一般还使用集成开发工具,因此后面还介绍了Eclipse。

2.2.1 JDK的安装

JDK可从Sun公司的网站下载,可选择JDK的J2SE或J2EE版本。J2EE版本包括了支持J2EE特性的所有开发包,如果Web程序不需要J2EE的EJB(Enterprise JavaBean)、JMS(Java Message Service,Java消息服务)等特性,建议选择J2SE版本,Web容器会提供开发Servlet和JSP所用到的包,可用开发工具将它们集成。

可在http://java.sun.com/javase/downloads/index.jsp中下载选择所需的J2SE版本,按照页面的指示信息操作即可。这里需要选择1.4.2以上版本,但最好选择最新的release版本。注意现在是介绍Windows平台下的安装,所以请选择Windows平台的版本。大概过程如图2-2所示。

图2-2 JDK下载页面操作示意

注意

以下图例依实际情况和选择版本的不同,某些内容可能有变化,这里仅供参考。它们基本的布局和操作是类似的,不难变通。

还有下载时注意选择的是JDK而不是JREJRE仅包含运行环境,不包含javac等开发工具。

最后打开安装程序并按指示操作即可,如果没其他问题,使用默认的设置来安装就可以了。

注意:

安装路径中不要含有空格和中文字符,否则后面的Tomcat安装时可能会出现问题。如图2-3所示是默认的安装路径,但“ Program Files ”这个目录名有空格,因此要另外选择。

图2-3 安装JDK的路径选择

2.2.2 JDK的配置

现在不需要太多JDK配置的知识,这里介绍一下PATH和CLASSPATH这两个环境变量。

PATH环境变量的值是一系列用分号(;)分隔的路径,它实际上是被操作系统使用的,而不是为Java程序专用。当需要调用某程序,如在命令行窗口或是批处理文件(bat后缀)中指定要运行的程序名,但又没有指定完整的路径时,则系统先顺序在当前目录查找,如果找不到就继续按PATH指定的路径逐个查找。将程序的路径加入到PATH当中,就可以在任何目录下都运行程序,而不必到程序目录下,相当方便。

本节讲的是JDK的配置,之所以提到这个环境变量,是因为常常用命令行的方式来调用Java工具进行编译,这样将Java工具所在的路径加入PATH中会方便很多。在编译简单的程序时,直接用命令行方式更方便。

现在讲如何修改PATH变量。如果是Windows9X/Me系统,则需要修改“C:\autoexec.bat”文件来设置该变量,修改后必须重新启动才能生效。可以用文本编辑工具打开“C:\autoexec.bat”,并在文件末尾加入如图2-4所示的内容。

图2-4 在autoexec.bat文件中修改PATH

如果是Windows2000/XP系统,可以在桌面“我的电脑”上单击右键,选“属性”,然后选“高级”页,单击“环境变量”按钮,可在此直接修改PATH,如图2-5所示。修改后即可直接生效,无须重启。

图2-5 Windows2000/XP下修改PATH环境变量

要测试是否正确,只须打开命令行窗口输入“java -version”命令,如果有版本信息显示即表示找到程序,设置正确。

现在简单说明一下CLASSPATH这个环境变量。

JDK工具加载类时,首先要找到相应的class文件,查找这些class文件的路径称为“类路径”。对于Java本身的标准类,JDK可以从特定的路径找到,无须设置;但对于非标准的类,如用户编写的类文件或是由第三方软件商提供的扩展包,则需要指定额外的类路径,不然在运行中找不到类文件时,JDK会抛出“ClassNotFoundException”异常。

如J2SE版本就没有附带Servlet包,如果用JDK编译Servlet程序时,需要指定Servlet包所在路径。一般有两种方法可以设置额外的类路径。

★ 设置CLASSPATH环境变量,它的值和PATH的类似,是一个或多个类路径,用分号(;)分隔,这样JDK工具就可以在这些路径寻找class文件了。在Java世界里,经常将一系列的class文件打包成jar文件以方便管理,因此在CLASSPATH中的路径也可以设置成具体的jar文件,JDK工具会自动解开这个包并提取需要的class文件;

★ 在调用JDK工具时可以通过参数指定类路径,如调用javac或java工具时,可以通过参数“-cp路径1;路径2;..”来指定,它用“-cp”开头,之后的路径写法和CLASSPATH值的写法一样。需要注意的是,当设置了CLASSPATH的值,同时又提供了“-cp”的参数,则CLASSPATH的值会被忽略。

除了学习外,一般情况下都不用CLASSPATH环境变量来设置类路径。因为它对系统的所有程序都是可见的,如果系统同时运行多个Java程序,但又使用共同的CLASSPATH来设置类路径,很容易引起混乱。而Java开发工具和Web容器等,一般有自己的管理机制为JVM设置合适的类路径,也不需要用到CLASSPATH。

注意

有些书籍和资料可能会提到“在配置JDK时,要在CLASSPATH环境变量中加入标准class的路径,否则在编译和运行时会出现找不到class文件的错误”这些说法。这些是旧版本JDK的做法了,现在的JDK(如上面介绍的1.5版)使用了很复杂的查找机制,默认时就已经设置一部分的路径——包括标准包、当前目录等,因此不必重复。而TomcatEclipse等工具也会自己管理类路径。在本书中,如无特别说明,一般不需要专门考虑类路径的设置问题。

2.3 安装和配置Tomcat

这一节介绍Windows平台下Tomcat的安装。Tomcat的安装很简单,但完整配置的内容却很丰富。幸好对一般的应用(如这里的学习)只需要少量简单的配置即可,以后在介绍其他内容时会继续介绍相关的配置。

2.3.1 安装Tomcat服务器

Tomcat可以在http://tomcat.apache.org/下载,在页面左边选择所需要的版本。本书是讲述Servlet 2.4和JSP 2.0的,因此请下载5.0或更高的版本。

单击所需版本的超链接后,转入下载页面。目前的安装只需要下载Binary Distributions的Core部分即可,如图2-6所示。

图2-6 Tomcat下载页面

将压缩包解压到想安装的目录。假如安装目录是“C:\tomcat”,则解压后的目录结构应如图2-7所示。

图2-7 Tomcat安装后的目录结构

之后是修改安装目录下的“bin\catalina.bat”文件,在注释后增加“JAVA_HOME”这个环境变量,如图2-8所示,注意图中的说明。

图2-8 修改catalina.bat文件

注意

如果系统是Windows2000/XP,也可以下载图2-6所示的Windows Service Installer,它将Tomcat注册成系统的服务,会自动寻找系统中已安装的JDK,不用设置。直接启动或关闭服务就可以启动关闭Tomcat

2.3.2 测试安装是否成功

首先启动Tomcat,有两种方法可以打开。

★ 在Windows2000/XP系统下,双击安装目录下的\bin\startup.bat文件即可。

★ 由于.bat文件的问题,在Windows9x/Me系统下直接运行startup.bat会出现问题,因为它使用了“%cd%”这样的变量。这时,需要按图2-8所示在catalina.bat文件中添加“set cd=.”,而运行方式改为打开安装目录下的\bin\catalina.bat文件并传入参数“run”,一般可以建立一个快捷方式来做,如图2-9所示。

图2-9 Windows9x/Me下设置启动Tomcat的快捷方式

注意

因为启动Tomcat的.bat文件使用了大量的环境变量,在Windows9x/Me系统中直接运行会报告“out of environment space”的错误,这时可为该.bat文件建一个快捷方式并设置其“属性”,选择“内存”页,在“初始环境”下拉列表框中选“4096”这项,这些如图2-9所示。

Tomcat启动后会在命令行窗口输出启动信息,启动过程需要数秒——视机器性能而定,完成后窗口会显示启动所需的时间,如图2-10所示。

图2-10 Tomcat启动时的显示信息

启动Tomcat后,打开浏览器,在地址栏输入http://localhost:8080/,如果显示出如图2-11所示的页面,表示Tomcat已经成功安装设置了。如果不成功,请仔细按上述步骤检查,或者另查资料解决问题。万事开头难,安装工具确实有很多琐碎的问题,请慢慢解决!

图2-11 Tomcat安装成功的测试页面

要关闭Tomcat,对于Windows2000/XP系统,可以双击安装目录下的\bin\shutdown.bat文件来进行。而对于Windows9x/Me系统则需要调用catalina.bat并传入参数“stop”,一般也是建一个快捷方式来进行,可参考图2-9所示建“启动快捷方式”的做法,唯一的区别就是将参数“run”改为“stop”。

2.4 开发第一个应用程序

现在已经学习了JDK、Tomcat的安装和配置,本节将开发一个简单的Web程序示例,通过这个例子学习如何编译Servlet,如何将Web程序部署到Web容器中,这些都是以后学习时进行实践的基础。

这个应用有一个HTML页面,它包含一个表单,用户可从下拉列表中选择一项并提交到服务器;在服务器端,分别用Servlet和JSP两种方式处理该页面。通过本例子将了解到如何将Servlet和JSP部署到服务器。

注意

现在主要目的是学习如何配置,ServletJSP代码的具体含义在后续章节会学习。图中加了注释,读者也可以尝试理解一下,但不懂也没关系,现在只要照着抄就可以了。

2.4.1 创建Form提交表单

现在先创建HTML页面,将文件名设为form.html,代码如图2-12所示。

图2-12 HTML代码

2.4.2 创建表单处理Servlet

接着编写处理请求的Servlet,该Servlet命名为ColorServlet,代码如图2-13所示。

图2-13 Servlet代码

可以直接用文本编辑器编写Servlet,然后通过命令行调用javac编译,但当使用J2SE版本时要将Tomcat安装目录下的\common\lib\servlet-api.jar文件加到类路径中。假设Tomcat安装在C:\tomcat\,则使用如下的命令将Servlet包所在位置加入到编译时的类路径中。

2.4.3 创建JSP显示页面

现在创建一个JSP页面处理提交信息,将它命名为colorJSP.jsp。它的处理和生成内容跟Servlet相同,可用文本编辑器写入如下代码,如图2-14所示。

图2-14 JSP代码

2.4.4 部署第一个Web应用

在将这些程序部署到Web容器之前,先讲解一下Web应用程序的概念,以及它和Web容器的关系。

和桌面程序类似,一般将结构功能相关的程序文件组织在一起成为一个大的程序。Web程序也是这样,将Web应用中相关的.html、.jsp、.servlet等文件组织在同一个Web程序中。Web应用程序的文件必须按一定的结构组织,J2EE定义了Web应用程序的结构,如图2-15所示。

图2-15 J2EE定义的Web程序结构

在图2-15中可以看到,应用程序的根目录下必须有一个WEB-INF文件夹,它包含web.xml文件,这是Web程序的发布描述文件(Web Applicatioin Deployment Description),用于告诉Web容器该程序的配置,如哪个URL跟哪个Servlet关联等。WEB-INF和web.xml都是Web程序必须包含的,后续章节会说明如何用web.xml进行配置。

WEB-INF下还有classes和lib这两个文件夹。classes下放置程序所用的class文件,如Servlet和其他辅助类。lib下则放置打包成jar格式的文件,如程序需要使用数据库,数据库厂商提供的驱动(一般是jar格式)就可以放在这里。

Web应用程序目录的其他地方则放置其他资源,如JSP、HTML、图片等。它们没有结构限制,可以按需要的方式来组织。

Web程序要配置在Web容器下才能运行,这里需要考虑如下的问题。

★ Web程序文件夹必须放在什么地方,要对Web容器进行怎样的配置让Web容器找到它。

★ 浏览器是通过URL来访问资源的,需要对Web容器做什么配置才能使它和URL关联起来。

这些配置方式是Web容器相关的,一般需要查阅Web容器的文档,所幸的是很多Web容器都会提供简单的方式。

对于Tomcat,将Web程序目录放在Tomcat安装目录的Webapps文件夹下即可。假如Tomcat安装目录是“C:\tomcat”,而程序放在mystudy文件夹中,则将整个mystudy的内容放在“C:\tomcat\webapps\”下即可,这时Web程序的文件就放在“C:\tomcat\webapps\mystudy\”下。

注意

为了叙述方便,本节后面假设Tomcat的安装目录就是“C:\tomcat”,读者实践时请根据自己的实际情况修改。

对于Web程序和URL的关联,在Tomcat下,默认可以在URL中用Web程序的目录名来访问Web程序的资源。例如当Web程序目录是mystudy时,可用如下URL来访问。

现在配置并测试本节的例子。在C:\tomcat\webapps\下建立一个文件夹mystudy,然后按照图2-15所示的结构在其下建立WEB-INF、classes、lib这些目录。可以直接将C:\tomcat\webapps\ROOT\WEB-INF\web.xml复制过来使用。

将form.html放在mystudy下,启动Tomcat(如果忘记了如何启动请看第2.3.2节)。打开浏览器并输入“http://localhost:8080/mystudy/form.html”,这时应看到如图2-16所示的内容。

图2-16 访问form.html

如果看到内容,那已经成功配置第一个Web程序了!

提示

读者可能会问,URL中的8080端口是怎样来的?还有为什么第2.3.2节中测试Tomcat时只需输入“http://localhost:8080/ ”,不需要指定Web程序名也能看到内容?

8080Tomcat默认的监听端口,如果要修改它,可以打开Tomcat安装目录的conf文件夹中的server.xml文件,找到如图2-17所示的位置,修改即可。如果修改成80,则URL中无须指定端口。注意修改完要重启Tomcat才能生效。

图2-17 修改Tomcat所用的端口

现在来配置JSP文件。JSP文件的配置和HTML一样简单,将colorJSP.jsp放到mystudy下,然后修改form.html中<form>的action属性为“colorJSP.jsp”,重新访问form.html。这时在下拉列表中选择一项并提交,就能看到colorJSP.jsp的处理结果了,如图2-18所示。

图2-18 JSP处理结果

提示

第一次访问该JSP时要等待一会才显示结果,这是因为第一次访问时要对JSP进行编译,但之后的访问就不需要了。如果修改了JSP的内容后再次访问(无须重启),则Web容器会重新编译。很多Web容器默认采用这种方式监视JSP的修改情况,方便开发和调试。很多Web容器都提供了相关的配置来取消监视修改情况,以提高部分性能。实际产品在部署时也可以用相关工具对JSP进行预编译,避免了初次访问的延迟情况。

最后配置Servlet,首先将ColorServlet.java编译,然后将生成的class文件放到C:\tomcat\webapps\mystudy\WEB-INF\classes下。

接着打开Tomcat安装目录的conf文件夹的web.xml文件,找到如图2-19所示的内容,按图示去掉注释。

图2-19 修改conf/web.xml

完成这两步后重启Tomcat,之后修改form.html中<form>的action属性为“servlet/ColorServlet”(注意大小写)。重新访问form.html,提交表单,这时ColorServlet将处理该请求并返回内容,如图2-20所示。

图2-20 Servlet处理结果

这一步比前两步要麻烦一点,现在解释一下。

一般情况下,URL可以按照Web程序的目录结构来访问资源。如之前的HTML和JSP就是如此,它们直接放在Web程序的根目录下,所以访问的URL在Web程序名后加上这些文件的名字就能访问了。

但对于Servlet,它实际上是Java类,放在WEB-INF下,J2EE的标准规定需要通过web.xml的配置将Servlet和URL关联起来才能让外界访问,对每个Servlet都要这样设置。很明显,这样在开发和测试Servlet时会麻烦很多,因此很多Web容器都提供了一种简便的方式来访问。如Tomcat,按图2-19所示那样修改后,地址中就可以用“servlet/servlet完整类名”的方式来访问了。请注意图2-20中地址栏的内容,Web程序是没有Servlet这个目录的,但依然能得到结果,这是因为Web容器知道这个URL是和Servlet关联的,它会调用相应的Servlet来进行处理。

本例中的ColorServlet是没有放在package中的。当有package时,如在ColorServlet.java文件开头处加入“package com.cxpub.chapter2”; 则在配置时ColorServlet.class必须放在“C:\tomcat\mystudy\WEB-INF\classes\com\cxpub\chapter2”下,这时的访问方式变成 “http://localhost:8080/mystudy/servlet/com.cxpub.chapter2.ColorServlet”,读者可尝试一下。

提示

上面修改的文件是 C:\tomat\conf\web.xml,它跟Web程序mystudy\WEB-INF\web.xml有什么关系呢?其实这是Tomcat的特点之一,这个web.xml的内容对所有的Web应用程序都有效,Tomcat在启动Web程序时会将这个文件的内容和每个Web程序的web.xml合并起来。Tomcat实际上允许Web程序的WEB-INF/web.xml不存在时也可以部署,因为conf\web.xml会应用到该程序的配置中。读者可尝试去掉mystudy中的web.xml文件然后重启Tomcat看结果如何。

但要注意,这是Tomcat特有的行为,并非J2EE的标准,对其他Web容器未必有效。现在提出这个方法是因为它简单,适合开发和调试,本书中如无特别说明,一般可用这种方法来配置,但对实际产品部署时应禁止这种行为。本书后续章节会讲解J2EE定义的标准配置方法。

现在读者应该已经知道如何在Web容器中部署Web应用程序了。在学习后面章节时将使用这些方法来进行实践,因此读者一定要熟悉本节的内容。

2.5 小结

本章学习了JDK、Tomcat的安装和配置,也通过一个例子学习了如何在Tomcat中部署Web程序,现在总结一下。

运行Java程序需要Java虚拟机的支持,一般的Web容器和开发工具也是用Java开发的,也需要在JVM的基础上运行。对Web应用程序的开发,需要使用开发工具编译Java文件,然后将所有资源文件部署到Web容器上运行。

本章在JVM方面介绍了Sun公司的JDK的安装,Web容器则介绍了Tomcat的安装和配置。

Web应用程序是按照一定的结构组织起来的程序、页面和其他资源文件,他必须包含WEB-INF目录,WEB-INF目录下必须包含Web程序描述文件web.xml。WEB-INF目录下还包括classes和lib目录,classes目录放置class文件,lib目录则放置jar文件,其他的资源文件则可以按照合适的方式组织。

Tomcat中,默认可以在URL中通过Web程序目录名访问特定的Web程序。可以直接在URL中,按HTML、JSP和其他文件的目录结构来访问这些资源。而Servlet是Java类,需要放到Web程序目录“/WEB-INF/classes/”下,一般需要在web.xml中对每个Servlet都指定它匹配的URL,浏览器才能通过这些URL来访问Servlet。Tomcat提供了一种简便的方法,使得只配置一次,之后就可以用简单的方式来访问Servlet了,但这是Tomcat特有的行为,不是J2EE标准定义的,不能用在其他Web容器上。