SpringMVC Controller設定400/404/500自定義錯誤頁面
阿新 • • 發佈:2019-02-08
一、說明
1、web系統開發過程中經常遇見400/404/500型別的錯誤頁面,對於開發人員而言見到這種頁面多了可能覺得問題不大,但是實際運用當中是面向客戶的,需要配置一個合理的自定義錯誤頁面。
2、本文只提通過springmvc controller配置自定義錯誤頁,Tomcat設定400/404/500自定義錯誤頁面(推薦)請參考博文:點選開啟連結
1、web系統開發過程中經常遇見400/404/500型別的錯誤頁面,對於開發人員而言見到這種頁面多了可能覺得問題不大,但是實際運用當中是面向客戶的,需要配置一個合理的自定義錯誤頁面。
2、本文只提通過springmvc controller配置自定義錯誤頁,Tomcat設定400/404/500自定義錯誤頁面(推薦)請參考博文:點選開啟連結
3、spring-mvcl.xml配置檢視解析器
<!--檢視解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="suffix" value=".jsp"></property> <property name="prefix" value="/WEB-INF/views/"></property> </bean>
二、實現
1、ErrorController.java2、web.xmlpackage com.mvc.pab.internet.controller; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("error") public class ErrorController { private static final String BASE_DIR = "error/"; @RequestMapping("400") public String handle1(HttpServletRequest request){ return BASE_DIR + "400"; } @RequestMapping("404") public String handle2(HttpServletRequest request){ return BASE_DIR + "404"; } @RequestMapping("500") public String handle3(HttpServletRequest request){ return BASE_DIR + "500"; } }
<error-page> <error-code>400</error-code> <location>/error/400</location> </error-page> <error-page> <error-code>404</error-code> <location>/error/404</location> </error-page> <error-page> <error-code>500</error-code> <location>/error/500</location> </error-page>
3、spring-mvc.xml
(專案當中有設定全域性攔截器的,一定要在這裡新增攔截器配置,不然會被攔截,配置方法是往自己的配置中節點程式碼<mvc:exclude-mapping path="/error/*" />,/error/*為我的錯誤頁的檢視層,意為都不攔截/error/)
<!--配置攔截器, 多個攔截器,順序執行 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 匹配的是url路徑, 如果不配置或/**,將攔截所有的Controller -->
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="/error/*" />
<mvc:exclude-mapping path="/test/*" />
<mvc:exclude-mapping path="/manager/*" />
<mvc:exclude-mapping path="/wxmanager/*" />
<bean class="com.mvc.filter.CommonInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptor>
<!-- 匹配的是url路徑, 如果不配置或/**,將攔截所有的Controller -->
<mvc:mapping path="/manager/*" />
<mvc:mapping path="/wxmanage/*" />
<mvc:exclude-mapping path="/manager/login" />
<mvc:exclude-mapping path="/manager/doLogin" />
<bean class="com.mvc.filter.ManagerInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
重啟伺服器生效!!!!