SpringMVC自定義錯誤頁面
阿新 • • 發佈:2019-01-23
1.第一步:建立404.htm和500.htm
在WEB-INF/view/error目錄下建立;
2.在web.xml中配置錯誤頁
<!-- SpringMVC 前端控制器 --> <servlet> <servlet-name>syth</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/syth-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>syth</servlet-name> <!-- 真正的靜態網頁以htm結尾 而攔截所有的以html結尾的請求 可以增加搜素引擎的收錄概率 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 定義錯誤頁面 --> <error-page> <error-code>404</error-code> <location>/WEB-INF/view/error/404.htm</location> </error-page> <error-page> <error-code>500</error-code> <location>/WEB-INF/view/error/500.htm</location> </error-page>
3.使用預設攔截器,並配置其Mapping
<!-- SpringMVC 前端控制器 --> <servlet> <servlet-name>syth</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/syth-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping><servlet-mapping> <servlet-name>syth</servlet-name> <!-- 真正的靜態網頁以htm結尾 而攔截所有的以html結尾的請求 可以增加搜素引擎的收錄概率 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 定義錯誤頁面 --> <error-page> <error-code>404</error-code> <location>/WEB-INF/view/error/404.htm</location> </error-page> <error-page> <error-code>500</error-code> <location>/WEB-INF/view/error/500.htm</location> </error-page> 綠色部分即是,特別注意預設攔截器的mapping必須在主攔截器之前(即:綠在紅藍前)
4.總結:
web.xml中配置錯誤頁,本質是,發生錯誤時,伺服器重定向url,此例中,重定向為[/WEB-INF/view/error/500.htm],相當於瀏覽器直接訪問:host:port/WEB-INF/view/error/500.htm