web.xml与server.xml详解

web.xml核心内容

作用:存储项目相关的配置信息,保护Servlet。解耦一些数据对程序的依赖。

使用位置的区别:
Web项目下的web.xml为局部配置,针对本项目。
Tomcat(服务器)下的web,xml为全局配置,针对全部项目。

内容(核心组件):
全局上下文配置(全局配置参数)
Servlet配置
过滤器配置
监听器配置

组件加载顺序(位置随意):
ServletContext->context-param->listener->filter->servlet

加载时机:
都是服务器启动时加载。

server.xml核心组件详解

<Server>
	<Service>
		<Connector>
		<Connector>
			<Engine>
				<Host>
					<Context />
				</Host>
			</Engine>
		</Connector>
		</Connector>
	</Service>
</Server>

两个<Connector></Connector>详解:

 第一个:

<Connector port="8080" redirectPort="8443" protocol="HTTP/1.1" connectionTimeout="20000"/>

服务器端口号:port="8080"
该端口号支持的协议:protocol="HTTP/1.1"
请求时长: connectionTimeout="20000"
重定向端口号: redirectPort="8443"   注意:当8080被占用时使用8443端口(如需使用请配置)

第二个(了解):

<Connector port="8009" redirectPort="8443" protocol="AJP/1.3"/>

服务器端口号:port="8009"
该端口号支持的协议:protocol="AJP/1.3"  注意:用于服务器集群。

<Engine></Engine> (引擎)详解:

疑问: 请求服务器时,服务器根据请求在webapps目录下调用相应的servlet处理,那么是如何知道在webapps目录下的呢?

模拟地址栏请求服务器的流程,如下:

localhost:8080/ThreeTierArc/CookieServlet

第一步:访问的是8080端口,此时服务器开启监听。
第二步:得到访问主机名为:localhost,在<Engine></Engine>内部寻找与其匹配的<Host name=" "></Host>,发现有则访问对应的appBase(放项目的位置),如果没有则返回<Engine></Engine>顶部的defaultHost。
第三步:在得到根目录位置后,根据/ThreeTierArc/CookieServlet(url地址)调用响应的servlet。

<Context /> (热部署):

​​​​​​​<Context source="org.eclipse.jst.jee.server:ThreeTierArc" reloadable="true" path="/ThreeTierArc" docBase="ThreeTierArc"/>

 reloadable="true" :项目发生改变后,会把修改的地方自动重新加载(修改后不用重启服务器)。
 docBase:实际绝对路径
 path:地址栏输入的虚拟路径(绝对路径、相对路径【相对于webapps】

特别注意:热部署在服务器启动时,会自动加载docBase路径的项目,如果doceBase路径的项目被删除时,可能会报错。原因在于使用热部署时,在删除项目时,服务器还会寻找docBase路径的项目,如果找不到就报错,因此要修改此热部署。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值