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

Spring MVC 從 JSP 遷移至靜態 HTML 頁面的完整配置指南

     編輯:程式設計綜合問答

問題背景

專案原使用 JSP 作為視圖技術,現需將部分頁面替換為純靜態 HTML。修改攔截器與視圖解析器配置後訪問 HTML 返回 404,原因在於 InternalResourceViewResolver 的後綴仍為 .jsp,導致框架嘗試查找 /WEB-INF/xxx.jsp 而非 HTML 文件。

核心解決方案

1. 修改視圖解析器後綴

在 spring-mvc.xml 中將 suffix 屬性從 .jsp 改為 .html:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      p:prefix="/WEB-INF/"
      p:suffix=".html" />

2. 配置靜態資源訪問

確保 web.xml 中 DispatcherServlet 的 url-pattern 為 /,並在 Spring 配置中添加靜態資源映射,避免攔截 .html、.css、.js 等請求:

<mvc:resources mapping="/static/**" location="/static/" />
<mvc:default-servlet-handler />

3. Controller 返回視圖名

Controller 方法返回邏輯視圖名(如 page/index),解析器自動拼接為 /WEB-INF/page/index.html。若 HTML 放置在 webapp 根目錄下,可直接通過 ModelAndView 或 forward: 訪問。

完整 web.xml 參考

<web-app version="2.5" xmlns="https://java.sun.com/xml/ns/javaee" ...>
    <servlet>
        <servlet-name>springMvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>/index</welcome-file>
    </welcome-file-list>
</web-app>

避坑指南

  • HTML 文件勿放在 /WEB-INF/ 下,否則無法直接訪問,建議置於 /static/ 或 /templates/。
  • 若需模板引擎功能,推薦引入 Thymeleaf 或 FreeMarker,而非強行用 JSP 解析器處理 HTML。
  • 檢查 <mvc:annotation-driven /> 是否啟用,以支援靜態資源處理。

配置截圖

總結

將後綴改為 .html 並正確配置靜態資源映射,即可無縫訪問 HTML 頁面。這也是前後端分離架構的基礎步驟。

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