如何在Tomcat上运行servlet

  • Post author:
  • Post category:其他



引言



最初,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