專案原使用 JSP 作為視圖技術,現需將部分頁面替換為純靜態 HTML。修改攔截器與視圖解析器配置後訪問 HTML 返回 404,原因在於 InternalResourceViewResolver 的後綴仍為 .jsp,導致框架嘗試查找 /WEB-INF/xxx.jsp 而非 HTML 文件。
在 spring-mvc.xml 中將 suffix 屬性從 .jsp 改為 .html:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/"
p:suffix=".html" />
確保 web.xml 中 DispatcherServlet 的 url-pattern 為 /,並在 Spring 配置中添加靜態資源映射,避免攔截 .html、.css、.js 等請求:
<mvc:resources mapping="/static/**" location="/static/" />
<mvc:default-servlet-handler />
Controller 方法返回邏輯視圖名(如 page/index),解析器自動拼接為 /WEB-INF/page/index.html。若 HTML 放置在 webapp 根目錄下,可直接通過 ModelAndView 或 forward: 訪問。
<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>
/WEB-INF/ 下,否則無法直接訪問,建議置於 /static/ 或 /templates/。<mvc:annotation-driven /> 是否啟用,以支援靜態資源處理。
將後綴改為 .html 並正確配置靜態資源映射,即可無縫訪問 HTML 頁面。這也是前後端分離架構的基礎步驟。