1

我的问题是基于对 webserver - servlet 容器如何交互的理解。因此,如果我的基本理解有误,请纠正我。

  1. 考虑进来一个请求:www.bank.com/credit-cards.

  2. 一旦 Tomcat 服务器收到请求,它就会将其转发给 servlet Container映射web.xml/credit-cards上面传入 URI 的

  3. Servlet Container 执行实例化 servlet 的例程(如果这是第一个请求)。如果没有,它将Thread为此请求创建一个并将其交给 Servlet,由它处理生成响应。Tomcat 然后将响应返回给客户端浏览器。

  4. 现在假设我有另一个请求www.bank.com/accounts。这由同一服务器中的不同应用程序提供服务。它不是同一个应用程序中的不同 servlet。

  5. 现在如何保存 url 映射?服务器如何知道它应该将请求转发到哪个应用程序?服务器不保存任何描述符文件。应用程序 1 和应用程序 2 具有将传入 url 映射到 servlet 的 web.xml 文件。所有的 URL 映射和 servlet 是否都在服务器的某个地方注册以供查找?

  6. 我想每个应用程序都应该有自己的容器。也就是说,在上述情况下将有两个 servlet 容器。

  7. 这是一个常见的场景吗?我不知道任何使用 servlet/JSP 在服务器中保存多个应用程序的真实世界示例(如果两个请求来自相同或不同的应用程序,用户可能无法区分)

4

1 回答 1

2

每个应用程序都有自己的文件夹webapps

申请credit-cards.../webapps/credit-cards/

申请accounts.../webapps/accounts/

URL 中直接位于服务器根目录上的任何文件,例如文件夹中http://localhost:8080/index.jsp的应用程序下。Tomcat就是这样知道的。root.../webapps/ROOT/

每个文件夹中的 Servlet 映射映射应用程序./WEB-INF/web.xml的 Servlet 。

Where you could get into trouble is if you created folders under .../webapps/ROOT/ or mapped servlets there that would conflict with the URL of another application.

Edit: As Bruno pointed out in a comment, this answer only applies when auto deployment is on.

于 2014-07-10T19:16:30.100 回答