Spring 中的 Context Path 与 Servlet Path

1、简介

DispatcherServlet 在 Spring 应用中扮演着重要角色,它为应用提供了一个入口点。Context Path 定义了终端用户访问应用的 URL。

本文将带你了解 Spring 中 Context Path(上下文路径)与 Servlet Path(Servlet 路径)的区别。

2、Context Path

简而言之,Context Path 是访问 Web 应用时使用的名称。它是应用的根路径。默认情况下,Spring Boot 在 ROOT 上下文路径("/")上提供服务。

因此,默认情况下,Spring Boot 应用可以通过 http://localhost:8080/ 访问。

不过,在某些情况下,我们可能需要更改应用的 Context。配置 Context Path 有多种方法,最简单的方式就是通过位于 src/main/resources 文件夹下的 application.properties 进行配置。

server.servlet.context-path=/demo

如上,此时应用的主页为:

http://localhost:8080/demo

特别是在把应用部署到外部服务器时,往往需要修改应用的 Context Path,以便于其他一起部署的应用分开来。

3、Servlet Path

Servlet Path 表示 DispatcherServlet 的 Path。DispatcherServlet 是一个实际的 Servlet,继承自 HttpSerlvet 。默认值与 Context Path 类似,即(“/”):

spring.mvc.servlet.path=/

在 Boot 的早期版本中,该属性位于 ServerProperties 类中,名称为 server.servlet-path=/

从 2.1.x 版开始,该属性被移至 WebMvcProperties 类,并更名为 spring.mvc.servlet.path=/

修改 Servlet Path:

spring.mvc.servlet.path=/baeldung

由于 Servlet 属于 Servlet Context,因此更改 Context Path 也会影响 Servlet Path。因此,修改后,应用的 Servlet Path 将变成 http://localhost:8080/demo/baeldung

换句话说,如果样式表以前通过 http://localhost:8080/demo/style.css 访问,现在将通过 http://localhost:8080/demo/baeldung/style.css 访问。

通常情况下,我们不需要自己配置 DispatcherServlet。但是,如果确实需要这样做,则必须提供自定义 DispatcherServlet 的 Path。

4、总结

本文介绍了 Spring 中 Context Path 和 Servlet Path 之间的区别和关系。


Ref:https://www.baeldung.com/spring-context-vs-servlet-path