1. 程式人生 > >SpringMVC自定義錯誤頁面

SpringMVC自定義錯誤頁面

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