引言
最初,Web站点上只有存储于服务器文件系统中的静态HTML文档,无法返回定制信息或把数据存储到数据库中去。CGI的引入为静态的万维网带来了生机,但随着CGI在性能和灵活性方面逐渐显得陈旧老化,新技术竞相取代CGI以作为建立动态Web站点的标准接口,Java servlet可望继CGI之后,成为最受欢迎的Internet开发技术。
一、运行环境的安装
1、首先应该安装Java Development Kit,又称Java 2 SDK,最新版为1.4.0,可以从
http://java.sun.com/j2se/
下载,安装在C:\j2sdk下(可以更改)。
2、Tomcat安装软件jakarta-tomcat-4.0.4.exe可以从
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.4/bin/
下载。安装在C:\Tomcat下(可以更改)。
3、通过在C:\Tomcat 4.0\bin\startup.bat文件的顶部添加下面的代码来设置环境变量TOMCAT_HOME 和JAVA_HOME。
set JAVA_HOME= C:\j2sdk
set TOMCAT_HOME=C:\Tomcat
以上设置参照自己的安装路径。
4、启动Tomcat服务器,可以用“开始”/“程序”/“Apache Tomcat 4.0”/“Start Tomcat”启动。
为了证实Tomcat已经成功启动,试着从浏览器地址栏中输入下面的URL地址:
http://localhost:8080/
,如果正常运行,则显示Tomcat的欢迎页面。
二、Web应用程序
Web应用程序是共同组成一个应用程序的目录和文件的层次结构。所有Web应用程序不论运行在什么服务器,都使用同样的标准目录结构。为了说明,如下的目录结构显示了一个典型的Tomcat安装,它包括二个Web应用程序(examples和ROOT)。
Tomcat
bin
conf
doc
lib
logs
src
webapps
examples
images
jsp
servlets
WEB-INF
classes
jsp
ROOT
doc
WEB-INF
classes
一个Web应用程序的顶级目录(例如/examples、/ROOT)被称为该Web应用程序的文档根目录。它是服务器找到与该Web应用程序相关联的HTML、JSP和图像文件的地方。
进行部署的时候,系统管理员为每个Web应用程序分配一个惟一的上下文路径。所有对这个上下文路径的请求都被路由到适当的Web应用程序。例如,examples Web应用程序分配到/examples这个上下文路径中,那么下面这个URL地址会显示一个位于/tomcat/webapps/examples目录下的index.html文件。
http://localhost:8080/examples/index.html
位于/tomcat/conf目录的server.xml文件为每个Web应用程序指定了上下文路径,下面的程序块来自于server.xml文件,它把/examples这个上下文路径分配给了examples Web应用程序,事实上,Tomcat为每个新的Web应用程序分配一个基于其根目录名称的上下文路径。
<Context path=”/examples” docBase=”webapps/examples” debug=”0″ reloadable=”true”>
</Context>
其中程序块中的path描述给位于docBase的Web应用程序分配上下文路径
docBase描述Web应用程序文档根目录相对于Tomcat服务器主目录的位置。
另外,可以通过指定一个空的上下文路径来定义一个默认的Web应用程序。例如,Tomcat可以按照下面的做法给ROOT Web应用程序分配一个空的上下文路径,从而把它安装成默认的Web应用程序:
<Context path=”” docBase=”webapps/ROOT” debug=”0″ reloadable=”true”>
</Context>
ROOT Web应用程序用一个空的上下文路径进行定义,那么所有没有映射到已定义上下文路径的请求都将自动路由到ROOT目录。下面的URL地址将返回位于/tomcat/webapps/ROOT目录的index.xml文件(注意上下文路径没有被指定)
http://localhost:8080/index.xml
前面的目录树所示每个Web应用程序都包含一个/WEB-INF目录,这个/WEB-INF目录对于开发者而言有着不同寻常的重要性,它包含有下面这些重要组成元素:
/classes目录:此目录包含着Web应用程序需要的所有Java类文件,包括所有的servlet和非servlet类。
/lib目录:此目录包含着Web应用程序所需要的所有JAR文件,其中包括JDBC驱动程序或者第三方类库。
/web.xml 文件:称为部署描述符,是一个XML文件,用来描述servlet和组成Web应用程序其他组件,以及所有的初始化参数、servlet名称、servlet URL映射和安全性限制等。
有一点很重要,需要注意,即所有的servlet都应该存放在Web应用程序的/WEB-INF/classes目录中,而且web.xml 文件控制着对servlet的访问。
三、调用servlet
已经知道servlet存放在文件系统的何处,接下来就分析它们被如何调用了,对于Tomcat,用下面的URL格式调用servlet:
http://server:port/context_path/servlet/servlet_name
URL的http字符串表明访问URL要使用http协议,server指向服务器的主机名,:port指明这一连接的端口号,context_path表示Web应用程序的上下文路径,/servlet部分告知Tomcat某个servlet正在被引用,servlet_name表示被Tomcat引用的servlet类名,注意:完整的软件包信息必须包含在类名中,例如:SnoopServlet在com.insideservlets软件包中,那么servlet类名就是com.insideservlets.SnoopServlet。
当准备运行servlet的时候,必须把它存放到其中一个Web应用程序的/WEB-INF/classes目录中,这样就可以通过Web应用程序的上下文路径和该servlet名来调用该servlet了。
1、在浏览器中直接调用
例1,把命名为SnoopServlet的servlet放到examples Web应用程序的/WEB-INF/classes目录中,就可以用下面的URL从浏览器来调用它了:
http://localhost:8080/examples/servlet/SnoopServlet
例2,如果把命名为SnoopServlet的servlet放到ROOT Web应用程序的/WEB-INF/classes目录中,就可以用下面的URL从浏览器来调用它了:
http://localhost:8080/servlet/SnoopServlet
注意:ROOT Web应用程序是默认Web应用程序,所以URL中不需要上下文路径。
2、由于servlet是通过Web服务器进行调用的,因此必须在html页面中链接它
在html页面中可以通过<FORM>和<A>标记调用,在<FORM>中通过ACTION属性调用,格式如下:
ACTION=”
http://server:port/context_path/servlet/servlet_name
”
在<A>标记中通过HREF属性调用,格式如下:
HREF=”
http://server:port/context_path/servlet/servlet_name
”
当然
http://server:port
部分可以省略。
对于例1用<FORM>标记的页面调用方法为:
<FORM ACTION=”
http://localhost:8080/examples/servlet/SnoopServlet
“>或
<FORM ACTION=”examples/servlet/SnoopServlet”>
对于例1用<A>标记的页面调用方法为:
<A HREF=”
http://localhost:8080/servlet/SnoopServlet
“>或
<A HREF=”servlet/SnoopServlet”>
此外,还可以通过在/WEB-INF/web.xml 中定义servlet名称、servlet映射来调用servlet,具体方法不再介绍,有兴趣可参考有关书籍。
转载于:https://my.oschina.net/u/1024767/blog/170115