您的位置:首页 > 编程语言 > Java开发

SpringMVC Controller设置400/404/500自定义错误页面

2017-11-18 12:10 706 查看
一、说明
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.java
package 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";
}
}
2、web.xml
<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>
重启服务器生效!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息