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