Servlet容器(Container)是一个Java撰写而成的程序,负责管理JSP/Servlet运行过程中所需要的各种资源,并负责与 Web服务器进行沟通,管理JSP/Servlet中所有对象的产生与消灭。 例如当使用者请求来到Web服务器时,Servlet容器会将请求、回应等讯息包装为各种Java对象(像是HttpRequest、 HttpResponse、Cookies等),对象中包括了客户端的相关讯息,像是请求参数,session、cookie等讯息,当您使用 JSP/Servlet的对象,例如HttpResponse发送讯息时, Servlet容器将之转换为HTTP讯息,然后由服务器将讯息发回客户端。 以JSP来说,容器负责将JSP转换为Servlet程序码,然后编译Servlet程序码,将之载入执行环境并执行,容器也提供了许多资源,除了基本的 Servlet载入与执行之外,例如Web环境设定、使用者认证、session追踪等等,JSP/Servlet事实上与容器之间的依赖日渐深厚,要想 真正发挥JSP/Servlet的功能,正确的设计出良好架构与功能的Web应用程序,了解容器的特性是不可少的。 Servlet容器的实现必须符合JSP/Servlet的规范,这个规范是由Sun Microsystems Inc.基于整合与平衡Web Server、开发工具、各家厂商等所产生出来的,目前有许多实现出来的容器,这边介绍 TomcatApache Jakarta Project 下的一个产品,所使用的版本是 5.5.4,可以支持JSP 2.0与Servlet 2.4。 在安装好Tomcat之后,Web应用程序应该放在安装目录的webapps下,以Tomcat 5.5.4为例的话,(如果完整安装)在webapps下有几个默认好的Web应用程序范例,例如jsp-examples、servlets-examples下各有许多JSP与 Servlet的范例程序。 Tomcat附带有一个简单的HTTP服务器程序,在Tomcat的安装目录下有一个ROOT目录,它是Tomcat HTTP服务器的默认根目录,当您使用http://localhost:8080/连接时,将会执行ROOT/index.jsp这个JSP网页并显示 Tomcat的默认首页。 您的Web应用程序主要都是放置在Tomcat目录下的webapps目录,安装完毕后这个目录下会有ROOT目录,如果只是想单纯练习 JSP的语法的话,基本上您可以将JSP放置在ROOT目录下,不过并不建议这么作,您可以自行在webapps下建立一个专用的练习目录,并建立WEB - INF目录,撰写好web.xml,这是在Servlet容器下建立一个基本Web应用程序该有的步骤。 您要在webapps下建立一个Web应用程序目录(例如myjsp),并在其下建立WEB-INF目录,接下来在WEB-INF下先编辑 web.xml,web.xml告诉Servlet容器这个Web应用程序的一些基本信息,像是所要执行的Servlet程序,所以设定的初始信息等等, 一个Web应用程序的文件架构如下: 在WEB-INF下的classes将放置编译好的Java类文件(*.class)文件,在JSP 2.0/Servlet 2.4中规定类必须设定package加以管理。lib目录都放置打包好的jar文件,这几个目录是必须的。 其它的目录不是必须的,通常在WEB-INF外的pages是可以由使用者发出请求直接存取到的网页或资源,而设定在WEB-INF中的pages则放置一些必须透过权限控管才可以存取的网页或资源,src目录则通常放置一些尚未编译的Java原始文件。 web.xml必须放置在WEB-INF目录下,对于一个基本的JSP程序,您可以如下编辑web.xml: 容器的一个基本配置,它是
<?xml version="1.0" encoding="ISO-8859-1"?> (上面的web.xml示例在xsi那行是不分行的,为了网页排版关系,我们才将之分行,如果您是用复制的方式,记得将分行消除,或者复制 ROOT/WEB-INF/目录下的web.xml进行修改。) web.xml是一个XML文件,首先是<web-app>标签,为了能使用JSP2.0、Servlet2.4的功能,必须采如上< web-app>开始标签的内容设定,这是Servlet2.4开始采的XML Schema,<description>是用来描述站台,而<display-name>用于设定站台名称。 存取JSP网页或资源时,是从目录名称开始存取,例如若命名为myjsp,而该目录下有个helloworld.jsp,则存取它时必须使用: http://localhost:8080/myjsp/helloworld.jsp
关于容器的配置,日后还会提供一些必要的设定说明,这边先了解个大概,您也可以引用一些Servlet容器配置的相关书籍,这是另一个议题,这边不多作描述。 |