每个web 项目下都具备web.xml 文件。通过前面的学习,我们对web.xml 文件有了一定了解,但是还不够,本节课就web.xml 文件进行总结。同时对Tomcat 下的server.xml 进行介绍。
作用:
存储项目相关的配置信息,保护Servlet(不直接把类名暴露给用户)。解耦一些数据对程序的依赖。
使用位置:
(1)每个Web 项目中
(2)Tomcat 服务器中(在服务器目录conf 目录中)
区别:
Web 项目下的web.xml 文件为局部配置,针对本项目的位置。
Tomcat 下的web.xml 文件为全局配置,配置公共信息。
web.xml的内容(核心组件):
(1)全局上下文配置(全局配置参数)content-param
(2)Servlet 配置ServletContext
(3)过滤器配置 filter
(4)监听器配置 listener
以上四个配置位置没有顺序,但加载有顺序:
Web 容器会按ServletContext -> context-param -> listener ->filter -> servlet
这个顺序加载组件,这些元素可配置在web.xml文件中的任意位置。
加载时机:
无论是项目内的web.xml还是tomcat里的web.xml,都是在服务器启动时,加载web.xml
问题:
浏览器发起请求后,服务器根据请求在webapps 目下调用对应的Servlet 进行请求处理。那么为什么是webapps 目录难道不能是其他的目录吗?
解决:
了解server.xml 文件的配置信息
Server.xml 文件核心组件:
<Server>
<Service>
<Connector /> <!-- 配置服务器使用的端口号、服务器使用的协议、发送请求的连接时间限制、重定向端口号(如果8080端口有问题,会重定向到8443) -->
<Connector /> <!-- 8009端口号使用的AJP协议主要用于服务器集群,是好几个服务器联动进行操作 -->
<Engine> <!-- 一个Service下面只能有一个Engine,里面的appbase配置了默认的项目目录:webapps。Tomcat启动后,service里面的数据监听8080端口(底层代码实现),用户浏览器请求被tomcat服务器拿到,然后根据URI找到项目去匹配。 -->
<Host>
<Context />
</Host>
</Engine>
</Service>
</Server>
热部署:
冷部署:是每次对项目进行了内容修改之后,都需要重启服务器才能看到效果。
热部署:可以设置部署目录,不需要把项目放在webapps下。
<Context path ="/Pet" reloadable ="true" docBase ="F:/PetWeb" />
path
写的是项目的虚拟名称
reloadable ="true"
表示项目被修改之后自动加载。
docBase
配置的路径要精确到webroot
路径。
如果项目删了,热部署的路径没删,启动服务器的过程会报错,Tomcat启动失败。