首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Spring MVC DispatcherServlet 多後綴映射配置:*.html 與 *.htm 共存

     編輯:程式設計疑難解答

問題

單一 <url-pattern> 標籤只能匹配一種模式,寫 *.htm(l?) 等正則不被支援。

正確配置:多個 url-pattern 標籤


<servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>*.html</url-pattern>
    <url-pattern>*.htm</url-pattern>
    <url-pattern>/api/*</url-pattern> <!-- 也可混用路徑前綴 -->
</servlet-mapping>

原理

  • Servlet 規範允許同一 Servlet 映射多個 url-pattern。
  • 容器按「最長路徑匹配 > 通配符後綴 > 精確匹配 > 默認」優先序分發。

補充:Spring Boot 時代做法


@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer.addPathPrefix("/api", HandlerTypePredicate.forAnnotation(RestController.class));
    }
}
// application.yml
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
    static-path-pattern: /resources/**
# 靜態資源 *.html/*.htm 直接放 static/resources 下,無需經 DispatcherServlet

新專案建議採用 Spring Boot 內嵌容器 + 靜態資源分離架構,避免傳統 web.xml 複雜映射。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved