web.xml与server.xml详解

﹏ヽ暗。殇╰゛Y 2023-10-09 12:34 52阅读 0赞

web.xml核心内容

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

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

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

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

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

server.xml核心组件详解

  1. <Server>
  2. <Service>
  3. <Connector>
  4. <Connector>
  5. <Engine>
  6. <Host>
  7. <Context />
  8. </Host>
  9. </Engine>
  10. </Connector>
  11. </Connector>
  12. </Service>
  13. </Server>

两个详解:
20190925200459586.png

第一个:

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

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

第二个(了解):

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

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

(引擎)详解:
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODc3MTg0_size_16_color_FFFFFF_t_70

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

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

  1. localhost:8080/ThreeTierArc/CookieServlet

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

(热部署):

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,52人围观)

还没有评论,来说两句吧...

相关阅读