《web服务器和web应用程序第29-32节.ppt》由会员分享,可在线阅读,更多相关《web服务器和web应用程序第29-32节.ppt(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Web服务器和服务器和Web应用程序应用程序内容回顾内容回顾nJava EE的概念nJava EE的体系结构n组件、容器和服务器nJava EE核心技术目标目标nTomcat的安装和配置nWeb应用程序的概念nWeb应用程序的打包和部署Tomcat 4-1n要运行Web应用程序,必须要Web服务器(或者应用服务器)的支持nTomcat是Apache Software Foundation开发的Web服务器,它是开源的、免费的。现在的最新版本是Tomcat 7.0,它支持最新的servlet 3.0和JSP2.2规范n下载地址:http:/jakarta.apache.org/tomcatTom
2、cat 4-2n在安装Tomcat6之前,必须先安装Java SDK6.0。在中文WIN2K系统下,Tomcat6安装完之后,不需要做什么配置就可以启动Tomcat服务。如果有问题,请在系统环境变量里检查是否有以下设置(假设你把Java SDK6.0安装在d:jdk6.0目录,把Tomcat安装在d:tomcat6目录):TOMCAT_HOME=d:tomcat6JAVA_HOME=d:jdk6.0Tomcat 4-3n如果Tomcat已经成功启动,在浏览器中输入:http:/localhost:8080/,它应该显示以下页面:Tomcat 4-4nTomcat的默认监听端口为8080,如果你
3、想改变它,可以修改/tomcat6/conf/server.xml文件中的如下内容:.Web应用程序应用程序 10-1nServlet规范2.3提出了Web应用程序的概念:Web应用程序由目录和文件的层次结构组成,它们一起构成了一个应用程序。所有的Web应用程序不论它们运行在什么服务器上,都使用同样的标准目录结构n虽然Web应用程序本身的目录结构是与服务器无关的,但是在不同的服务器上它们被放置的位置是不同的。例如,Tomcat把所有的Web应用程序存放在/tomcat6/webapps目录中,而JRun会把所有的Web应用程序存放在/jrun/servers/default目录中Web应用程序
4、应用程序 10-2nTomcat安装完后,已经包含了几个Web应用程序,如:ROOT、servlets-examples等Web应用程序应用程序 10-3Tomcat目录描述bin包含启动或终止Tomcat服务器的批处理文件或脚本文件conf包含各种配置文件,其中有server.xml和web.xml。server.xml是Tomcat的主要配置文件,包含有一些设置。web.xml中包含一些对所有Web应用程序都起作用的默认设置。另外,每一个Web应用程序都有自己的web.xml文件,该文件可以覆盖由/conf/web.xml文件提供的默认设置logsTomcat的日志文件webapps包含T
5、omcat所有的Web应用程序workTomcat自动创建工作目录以存放临时文件Web应用程序应用程序 10-4n一个Web应用程序的顶级目录(例如/ROOT、/servlets-examples)被称为该Web应用程序的文档根目录。它是服务器找到与该Web应用程序相关联的HTML、JSP、servlet和图像文件的地方(或者,如果在请求的URL中指定了其它目录,则就在文档根目录以下的目录中)Web应用程序应用程序 10-5n当每一个Web应用程序被部署的时候,它被系统管理员指定了一个唯一的上下文路径。所有对这个上下文路径的请求都被路由到适当的Web应用程序例如,如果examples这个Web
6、应用程序被指定为/examples的上下文路径,下面这个URL地址会显示一个位于/tomcat6/webapps/examples/目录下的index.html文件:http:/localhost:8080/examples/index.htmlWeb应用程序应用程序 10-6n位于/tomcat6/conf/目录下的server.xml文件为每个Web应用程序指定了上下文路径。例如:n注意:上下文路径通常与Web应用程序的文档根目录是一致的。事实上,Tomcat自动为每个新的Web应用程序分配一个基于其文档根目录名称的上下文路径Web应用程序应用程序 10-7n另外,可以通过指定一个“空的”
7、上下文路径来定义一个默认的Web应用程序。例如,Tomcat给ROOT Web应用程序分配一个空的上下文路径,从而把它安装成默认的应用程序:n所有没有映射到已定义上下文路径的请求都将自动路由到ROOT目录。例如,下面这个URL地址会显示一个位于/tomcat6/webapps/ROOT/目录下的index.html文件(注意上下文路径未被指定):http:/localhost:8080/index.htmlWeb应用程序应用程序 10-8n每个Web应用程序都必须在其文档根目录下直接包含一个/META-INF和/WEB-INF目录。除了这两个目录外,开发者可以在文档根目录下添加任何其它目录,例
8、如,可以添加/JSP目录存放所有的JSP文件,添加/images目录存放所有的图形文件n如果文件不存在于文档根目录中,那么它相对于文档根目录的完全路径在任何被引用的时候都必须被包含在URL中。例如,以下URL引用位于/tomcat6/webapps/examples/images目录中的”examples”Web应用程序的code.gif文件:http:/localhost:8080/examples/images/code.gifWeb应用程序应用程序 10-9n/META-INF目录和其中的文件是由JAR创建的,与开发者无太大关系n/WEB-INF目录非常重要,它包含:web.xml文件该
9、文件称为部署描述符。用来描述servlet和组成Web应用程序的其它组件,以及所有的初始化参数、servlet的别名、servlet URL映射和安全限制等Web应用程序应用程序 10-10/classes目录此目录包含有Web应用程序需要的所有.class文件。这个目录下的.class文件在发生改变时会自动被重载。如果Java源文件中使用了包,那么/classes目录之下的目录层次结构必须反映出包的结构。例如,一个名叫com.sr.template.BaseServlet的类必须位于/classes/com/sr/template目录下/lib目录包含Web应用程序所需的所有JAR文件,其中
10、包括JDBC驱动程序或者第三方类库Web应用程序的打包应用程序的打包 8-1n共2步:n第一步,创建和编辑web.xmlIDE工具一般已经为我们创建好了web.xml文件,只需要对它按照需要做一些修改就可以了。典型的web.xml文件如下所示:Web应用程序的打包应用程序的打包 8-2snoopSnoopServletfoobarsnoop/snoopWeb应用程序的打包应用程序的打包 8-3Protected Area/jsp/security/protected/*GETPOSTtomcatrole1Web应用程序的打包应用程序的打包 8-4BASICExamples Basic Auth
11、entication Areahttp:/java.apache.org/tomcat/examples-taglib/WEB-INF/jsp/examples-taglib.tldWeb应用程序的打包应用程序的打包 8-5n第二步,创建WAR文件WAR文件是由JAR程序创建的档案文件,它包含和Web应用程序相关的整个目录结构和文件(例如servlet、JSP与HTML页面、图像等等)例如,为创建Tomcat的“Examples”Web应用程序的WAR文件,在/tomcat5.5/webapps/examples目录下的整个目录结构都必须被打包在WAR文件中。该文件的名字通常为examples
12、.warWeb应用程序的打包应用程序的打包 8-6WAR文件的名字是非常重要的。因为一些servlet容器,如Tomcat,使用WAR文件名给应用程序指定一个唯一的上下文路径。也就是说,当examples.war文件在Tomcat上被部署时,应用程序自动被指定一个名为examples的上下文路径。在该WAR文件中的servlet可以用如下URL进行调用:http:/localhost:8080/examples/SnoopServlet如果把examples.war文件改名为example.war后,再次部署应用程序,则在该WAR文件中的servlet可以用如下URL进行调用:http:/lo
13、calhost:8080/example/SnoopServletWeb应用程序的打包应用程序的打包 8-7但是有一些servlet容器,例如JRun,WAR文件的名字是不相关的,因此当WAR文件被部署时,管理员必须手动指定上下文路径的名字(有时被叫做应用程序URL)Web应用程序为什么不用.jar扩展名?JAR文件意味着要被放在CLASSPATH内,它包含java类加载器要加载的类和资源文件WAR文件包含有不同于java类和资源文件的资源(例如图像和HTML文件),所以这个文件不能归入CLASSPATH中。另外,WAR文件中包含部署描述符,而JAR文件中没有Web应用程序的打包应用程序的打包
14、 8-8nWeb应用程序打包示例(windows系统下,使用Tomcat,应用程序为examples):在命令提示符下移到Web应用程序的根目录:cd tomcat5.5webappsexamples使用jar命令创建WAR文件:jar cvf examples.war *Web应用程序的部署应用程序的部署n在Tomcat上部署只有2个步骤:首先把WAR文件复制到/tomcat6/webapps目录中然后,启动Tomcat服务器。如果已经运行的话就重新启动。部署结束使用如下URL验证examples应用程序被正确安装:http:/localhost:8080/examples/SnoopSer
15、vletnTomcat自动解压缩并安装在它的/webapps目录下找到的任何WAR文件,并根据文件名指定一个唯一的上下文路径web.xml文件文件 7-1nservlet别名:它是用户定义的逻辑名称,使用它可以引用一个servlet而不必用完全限定的servlet类名n初始化参数:运行系统管理员改变servlet的设置配置而不需重新编译这个servletweb.xml文件文件 7-2nservlet映射(也叫URL映射):把一个特殊的URL名或者模式与一个特定的servlet联系起来例如,servlet映射可以把所有对/login.html的请求都路由到名叫LoginServlet的servl
16、et上去。又如URL模式*.login能把所有具有.login扩展名的请求都映射到LoginServletweb.xml文件文件 7-3nweb.xml文件定义了servlet别名、初始化参数和servlet映射。示例:snoopSnoopServletname1value1Servlet别名别名Servlet类名类名Servlet初始化参数,可通过初始化参数,可通过getInitParameter()方法读取方法读取web.xml文件文件 7-4name2value2snoop/snoopSnoopServlet*.snpServlet映射,此映射,此处使用的是别名处使用的是别名Servle
17、t映射,映射,此处使用的是此处使用的是类名类名web.xml文件文件 7-5元素名描述web-app所有web.xml文件使用的根元素Servlet为单个的servlet定义servlet别名和初始化参数servlet-nameservlet的别名servlet-classservlet类文件的名字。如果这个类在一个包中,则名字必须是完全限定的类名。例如,com.sr.SnoopServletinit-param定义单个的初始化参数param-name初始化参数名param-value初始化参数值web.xml文件文件 7-6元素名描述servlet-mapping定义单个的servlet映射
18、,包含servlet-name和url-patternservlet-nameservlet别名或者servlet类名url-pattern映射到servlet的URL路径。可能是个诸如/snoop的目录或者像*.snp这样的模式load-on-startup通知servlet容器在服务器启动时加载servlet。启动时加载可以为第一次请求改善servlet的响应时间。可以用一个数字指定每个servlet的启动顺序web.xml文件文件 7-7n示例,指定servlet启动顺序:snoopSnoopServlet1testTestServlet2调用调用servlet 6-1n对于Tomcat
19、,通过servlet别名来调用servlet的URL如下:http:/server:port/context_path/servlet/servlet_name/path_info?query_string说明:context_path:Web应用程序的上下文路径/servlet:告知Tomcat,某个servlet正在被引用(这是对Tomcat特定的约定,不是servlet规范)/servlet_name:servlet的别名调用调用servlet 6-2/path_info:指定附加的路径信息,该信息可用request对象的getPathInfo()方法获得。该方法返回在servlet路径
20、之后而在查询字符串之前的任何路径:对于以下url:http:/localhost:8080/examples/servlet/GetPathServlet/html/public?name=value由getPathInfo()方法返回的值是:/html/publicquery_string:以名字/值对的方式给传递参数给servlet调用调用servlet 6-3n把编译好的servlet的.class文件放在Web应用程序的/WEB-INF/classes目录下,就可以用URL来调用它。例如:http:/localhost:8080/examples/servlet/SnoopServle
21、t(使用类名调用)或者http:/localhost:8080/examples/servlet/snoop(使用别名调用)调用调用servlet 6-4n注意:对于有初始化参数的servlet,必须使用别名来调用n另外,如果把servlet放到默认的Web应用程序中的话,在调用它时就不需要写上下文路径(即context_path部分,它被赋值为空)例如,在Tomcat上,ROOT是默认的Web应用程序,把servlet放在ROOT的/WEB-INF/classes目录中,就可以像下面这样调用它:http:/localhost:8080/servlet/SnoopServlet调用调用serv
22、let 6-5n通过servlet映射来调用servlet的URL:http:/server:port/context_path/servlet_mapping/path_info?query_string使用servlet映射来调用servlet时,不需要使用“/servlet”路径。由于不是所有的容器都支持“/servlet”路径,建议通过servlet映射来调用servlet。例如:http:/localhost:8080/examples/snoophttp:/localhost:8080/examples/anything.snp调用调用servlet 6-6n另外,若SnoopSe
23、rvlet放在ROOT Web应用程序中(它被赋值为空的上下文路径),可用下面的URL来调用它:http:/localhost:8080/snoophttp:/localhost:8080/anything.snpTomcat配置注意事项配置注意事项 2-1n如果你想使用servlet别名来调用servlet,对不同版本的tomcat,必须做如下设置(假设tomcat6是你的tomcat的安装目录):将/tomcat6/conf/web.xml文件中下面的servlet-mapping元素项取消注释:!invoker /servlet/*-Tomcat配置注意事项配置注意事项 2-2将/tomcat6/conf/web.xml文件中下面的servlet元素项取消注释:!-invoker org.apache.catalina.servlets.InvokerServlet debug 0 2 -小结小结nWeb应用程序的概念nWeb应用程序的打包和部署