如何在Tomcat上运行servlet
引言
最初,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下(能够更改)。
二、Tomcat安装软件jakarta-tomcat-4.0.4.exe能够从
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.4/bin/
下载。安装在C:\Tomcat下(能够更改)。
三、经过在C:\Tomcat 4.0\bin\startup.bat文件的顶部添加下面的代码来设置环境变量TOMCAT_HOME 和JAVA_HOME。
set JAVA_HOME= C:\j2sdk
set TOMCAT_HOME=C:\Tomcat
以上设置参照本身的安装路径。
四、启动Tomcat服务器,能够用“开始”/“程序”/“Apache Tomcat 4.0”/“Start Tomcat”启动。
为了证明Tomcat已经成功启动,试着从浏览器地址栏中输入下面的URL地址:
http://localhost:8080/
,若是正常运行,则显示Tomcat的欢迎页面。
2、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的访问。
3、调用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,具体方法再也不介绍,有兴趣可参考有关书籍。
欢迎关注本站公众号,获取更多信息