dispatcherservlet 是 spring 提供的前端控制器,需在 web.xml 中声明为 servlet 并配置拦截规则与初始化参数;默认加载 /web-inf/[servlet-name]-servlet.xml,需配置 handlermapping、handleradapter、viewresolver 等组件;依赖 spring-webmvc,web.xml 版本不低于 2.4。

在传统 Web 项目(基于 web.xml 部署描述符)中配置 DispatcherServlet,核心就是把它声明为一个标准 Servlet,并指定其拦截规则和初始化参数。它不是手动编写的类,而是 Spring 提供的现成前端控制器,负责统一接收请求、分发给 Controller 并协调视图渲染。
在 web.xml 中注册 DispatcherServlet
这是最基础且必需的一步。需要在 WEB-INF/web.xml 文件中添加 <servlet></servlet> 和 <servlet-mapping></servlet-mapping> 配置:
-
定义 servlet 实例:指定类名为
org.springframework.web.servlet.DispatcherServlet,并可选设置初始化参数contextConfigLocation指向 Spring MVC 的配置文件路径(如/WEB-INF/mvc-config.xml或classpath:spring-mvc.xml); -
设置加载时机:通过
<load-on-startup>1</load-on-startup>确保应用启动时就初始化,避免首次请求才加载带来的延迟; -
配置 URL 映射:在
<servlet-mapping></servlet-mapping>中用<url-pattern></url-pattern>控制哪些请求交由它处理,常见写法有:-
/—— 拦截所有请求(除已匹配的静态资源外),推荐用于现代 REST + 前端路由场景; -
*.html或*.do—— 拦截特定后缀,适合传统页面跳转风格; -
/app/*—— 拦截子路径,便于版本或模块隔离。
-
准备 Spring MVC 配置文件
DispatcherServlet 默认会尝试加载 /WEB-INF/[servlet-name]-servlet.xml(例如 servlet 名为 springmvc,则找 /WEB-INF/springmvc-servlet.xml)。你也可以通过 contextConfigLocation 显式指定位置。
该配置文件至少应包含:
-
HandlerMapping:如
RequestMappingHandlerMapping(支持@Controller+@RequestMapping); -
HandlerAdapter:如
RequestMappingHandlerAdapter,用于执行带注解的 Controller 方法; -
ViewResolver:如
InternalResourceViewResolver,将逻辑视图名(如"success")解析为实际 JSP 路径(如/WEB-INF/jsp/success.jsp); - (可选)组件扫描:启用
<component-scan base-package="com.example.controller"></component-scan>自动发现@Controller类。
确保依赖与类路径正确
项目需引入 Spring Web MVC 的核心 jar(如 spring-webmvc),且版本与 Spring 核心(spring-context、spring-beans 等)兼容。Maven 示例关键依赖:
<dependency><groupid>org.springframework</groupid><artifactid>spring-webmvc</artifactid><version>5.3.31</version></dependency>
同时确认 web.xml 的 schema 版本不低于 2.4(推荐 3.0+),以支持 Servlet 3.0+ 特性。
注意请求处理边界
DispatcherServlet 不处理静态资源(如 CSS、JS、图片),除非显式配置 <resources></resources> 或使用 SimpleUrlHandlerMapping 排除规则。若用 <url-pattern>/</url-pattern>,建议配合 <default-servlet-handler></default-servlet-handler> 让容器默认 Servlet 处理静态文件,避免 404。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











