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 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” 注意:用于服务器集群。
疑问: 请求服务器时,服务器根据请求在webapps目录下调用相应的servlet处理,那么是如何知道在webapps目录下的呢?
模拟地址栏请求服务器的流程,如下:
localhost:8080/ThreeTierArc/CookieServlet
第一步:访问的是8080端口,此时服务器开启监听。
第二步:得到访问主机名为:localhost,在
第三步:在得到根目录位置后,根据/ThreeTierArc/CookieServlet(url地址)调用响应的servlet。
<Context source="org.eclipse.jst.jee.server:ThreeTierArc" reloadable="true" path="/ThreeTierArc" docBase="ThreeTierArc"/>
reloadable=”true” :项目发生改变后,会把修改的地方自动重新加载(修改后不用重启服务器)。
docBase:实际绝对路径
path:地址栏输入的虚拟路径(绝对路径、相对路径【相对于webapps】)
特别注意:热部署在服务器启动时,会自动加载docBase路径的项目,如果doceBase路径的项目被删除时,可能会报错。原因在于使用热部署时,在删除项目时,服务器还会寻找docBase路径的项目,如果找不到就报错,因此要修改此热部署。
还没有评论,来说两句吧...