【发布时间】:2014-09-01 07:01:13
【问题描述】:
我的问题是基于对 webserver - servlet 容器如何交互的理解。所以如果我的基本理解有误,请纠正我。
考虑进来的请求:
www.bank.com/credit-cards。Tomcat 服务器一收到请求,就会将其转发给
servlet Container其web.xml映射到传入的 URI 上面是/credit-cardsServlet Container 执行其例程实例化 servlet(如果这是第一个请求)。 如果没有,它将为此请求创建一个
Thread并将其交给处理生成响应的 Servlet。 Tomcat 然后将响应返回给客户端浏览器。现在假设我在
www.bank.com/accounts有另一个请求。这由同一服务器中的不同应用程序提供服务。它不是同一个应用程序中的不同 servlet。现在如何保存 url 映射?服务器如何知道它应该将请求转发到哪个应用程序?服务器不保存任何描述符文件。应用程序 1 和应用程序 2 具有将传入 url 映射到 servlet 的 web.xml 文件。是否所有的 URL 映射和 servlet 都在服务器某处注册以供查找?
我猜每个应用程序都应该有自己的容器。也就是在上述情况下会有两个 servlet 容器。
这是常见的情况吗?我不知道任何使用 servlet/JSP 在服务器中保存多个应用程序的真实示例(如果两个请求来自相同或不同的应用程序,用户可能无法区分)
【问题讨论】:
-
context-path是关键区别 -
上下文路径是战争文件的名称或在 context.xml 或 server.xml 中的 Context 标记中定义。 tomcat.apache.org/tomcat-7.0-doc/config/…
-
您可以在同一个 Tomcat 实例中运行多个 Web 应用程序。每个 Web 应用程序都有自己的
ServletContext。如果存在冲突的路径映射,容器会报错。 -
Tomcat 拥有/管理来自各种部署描述符的 url 映射。
标签: java jsp tomcat servlets servlet-container