web应用程序的部署

Servlet/Jsp 专栏收录该内容
9 篇文章 0 订阅

一、配置任意目录下的web应用程序
一个Web容器可以运行多个web应用程序,每个web应用程序都有一个唯一的上下文根。对于Tomcat来说,%CATALINA_HOME(安装路径)%\webapps目录下的每一个子目录都是一个独立的Web应用程序,这个子目录的名字就是这个Web应用程序的上下文根。

在部署和访问Web应用程序时,通过上下文路径来区分不同的Web应用程序。
上下文路径以斜杠(/)开头,但结束没有斜杠;在默认上下文中,这个路径将是空字符串”“。(例如:localhost:8080/)

将开发的Web应用程序放在webapps目录下,当tomcat启动时,会自动加载webapps目录下的web应用程序,所以在这个目录下的web应用程序不需要进行其他的配置就可以直接访问。

例如:在webapps目录下有一个ROOT目录,Tomcat为ROOT目录生成的上下文路径是空字符串(”“),这个web应用程序将作为虚拟主机的默认Web应用程序,负责处理所有的没有分配给其他web应用程序的请求。
这里写图片描述
在 bin目录下,启动Tomcat。点击startup启动。
这里写图片描述
这里写图片描述
在浏览器访问:localhost:8080/,会跳转到主页
这里写图片描述

在开发阶段,可以建立自己的开发目录,完成之后,才部署到webapps目录。通过配置虚拟目录,虚拟目录所对应的真实目录可以在任何路径下。这主要是在XML配置文件中通过<\Context>元素的设置来完成。
这里写图片描述
配置的方法有三种:
1、配置conf/server.xml文件中的<\Host>元素下,做如下配置:

<Host>
       <Context path="/servletTest" docBase="D:\servletTest\src\main\webapp" reloadable="true"/>
  </Host>

docBase属性指定Web应用程序的真实路径。但是这个路径不要写成“D:\servletTest”,否则找不到资源文件。要深入到webapp目录下。但是,在访问的时候,直接输入”http://localhost:8080/servletTest“就可以直接访问。

reloadable属性设置为true,Tomcat在运行时会自动监测Servlet类的改动,如果发现有类被更新,Tomcat服务器将自动重新加载该Web应用程序。

但是,不建议直接在server.xml文件中配置<\Context>元素,因为server.xml作为Tomcat的主要配置文件,一旦Tomcat启动后,将不会再读取这个文件。

2、在%CATALINA_HOME%conf/Catalina/localhost/目录下新建一个xml文件进行配置。(该目录刚开始没有,执行localhost:8080之后,会自动生成)。

servletTest.xml (必须是应用程序的名字作为文件名)

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="D:\servletTest\src\main\webapp" reloadable="true"/>

Tomcat将以XML文件的文件名作为Web应用程序的上下文路径,而不管path属性指定的路径。因此可以不用path属性。
Tomcat加载一个Web应用程序的时候,首先读取这个文件。然后再读取WEB-INF/web.xml文件。

3、在Web应用程序的META-INF\context.xml文件中进行配置。

如果没有在任何文件中设置<\Context>元素,那么Tomcat会自动生成Context元素。路径以斜杠开始,如果是空字符串,那么访问ROOT。

WAR文件
利用WAR文件可以把servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构进行部署,而是把WAR文件作为部署单元来使用。

一个WAR文件就是一个Web应用程序,建立WAR文件就把整个web应用程序(不包括web应用程序层次结构的根目录)压缩起来,指定一个.war扩展名。

在命令提示符中,执行下面的命令(要在项目的webapp下打包,只包括一些资源文件,不包括java源码文件):
这里写图片描述
将该WAR包复制到%CATALINA_HOME%/webapps目录下。
启动Tomcat后,会自动解压。

WAR文件与JAR文件的区别:
JAR文件的目的是把类和相关的资源封装到压缩的归档文件中,
而对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包括Servlet、Html页面、java类,以及组成web应用程序的其他资源,而不仅仅是类的归档文件。

开发阶段不适合使用WAR文件,因为经常需要添加或删除Web应用程序的内容。在产品发布阶段,可以使用WAR文件,几乎没有什么改动。

<\servlet-mapping>元素及其子元素
子元素<\url-pattern>指定对应于Servlet的URL路径,该路径是相对于Web应用程序上下文跟的路径。可以出现多次

<url-pattern>/hello</url-pattern>
<url-pattern>/hello-world</url-pattern>

匹配规则:
1、请求的路径和Servlet映射的路径进行精确匹配
2、容器试着匹配最长的路径前缀,以斜杠(/)为路径分隔符,选择最长匹配的servlet来处理请求
3、如果请求的URL路径最后有扩展名,那会试着匹配处理这个扩展名的servlet
4、如果前面都没有匹配,容器会调用默认的servlet来对请求进行处理。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

楠瓜酥

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值