spring boot下 500 404 错误页面处理的方法

作者:ProjectArchitect 时间:2021-09-03 07:12:36 

spring boot 作为微服务的便捷框架,在错误页面处理上也有一些新的处理,不同于之前的spring mvc 500的页面处理是比较简单的,用java config或者xml的形式,定义如下的bean即可


<bean
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
 <props>
 <prop key="org.apache.shiro.authz.UnauthenticatedException">pages/403</prop>
 <prop key="org.apache.shiro.authz.UnauthorizedException">pages/403</prop>
 <prop key="org.apache.shiro.authc.LockedAccountException">pages/locked</prop>
 <prop key="java.lang.Throwable">pages/500</prop>
 </props>
</property>
</bean>

 404就比较特殊了,有2种方法可以参考:

1. 先设置dispatcherServlet


@Bean
public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
 ServletRegistrationBean registration = new ServletRegistrationBean(
     dispatcherServlet);
 dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
 return registration;
}

再增加处理错误页面的handler,加上@ControllerAdvice 注解


@ControllerAdvice
public class GlobalControllerExceptionHandler {
public static final String DEFAULT_ERROR_VIEW = "pages/404";

@ExceptionHandler(value = NoHandlerFoundException.class)
 public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
   ModelAndView mav = new ModelAndView();
   mav.addObject("exception", e);
   mav.addObject("url", req.getRequestURL());
   mav.setViewName(DEFAULT_ERROR_VIEW);
   return mav;
 }
}

不过上面这种处理方法,会造成对js,css等资源的过滤,最好使用第二种方法

2. 集成ErrorController


@Controller
public class MainsiteErrorController implements ErrorController {

private static final String ERROR_PATH = "/error";

@RequestMapping(value=ERROR_PATH)
 public String handleError(){
   return "pages/404";
 }

@Override
public String getErrorPath() {
// TODO Auto-generated method stub
return ERROR_PATH;
}

}

来源:http://blog.csdn.net/projectarchitect/article/details/42463471

标签:spring,boot,500,404
0
投稿

猜你喜欢

  • C++双向循环列表用法实例

    2023-07-23 03:58:54
  • Java爬取网站源代码和链接代码实例

    2023-06-25 01:11:29
  • Android实现代码画虚线边框背景效果

    2022-11-03 10:48:42
  • redis redisson 集合的使用案例(RList、Rset、RMap)

    2023-11-13 13:50:21
  • C# StreamReader类实现读取文件的方法

    2023-06-20 13:02:00
  • JavaWeb购物车项目开发实战指南

    2022-05-30 19:32:17
  • JAVA使用JDBC连接oracle数据库的详细过程

    2021-11-20 19:20:19
  • Java中的length和length()深入分析

    2022-01-23 06:33:01
  • Java操作redis设置第二天凌晨过期的解决方案

    2022-11-15 11:40:10
  • Android RecyclerView详解之实现 ListView GridView瀑布流效果

    2023-11-26 10:09:00
  • idea设置JVM运行参数的几种方式

    2023-05-26 14:57:33
  • Android CardView详解及使用方法和实例

    2023-01-11 01:04:30
  • C#如何通过匿名类直接使用访问JSON数据详解

    2023-07-20 12:31:53
  • java设计模式(实战)-责任链模式

    2022-12-24 23:07:53
  • 深入了解SparkSQL的运用及方法

    2023-06-08 13:43:27
  • Netty分布式Server启动流程服务端初始化源码分析

    2021-07-12 12:35:19
  • Spring Cloud Config对特殊字符加密处理的方法详解

    2021-11-22 15:16:48
  • 总结Bean的三种自定义初始化和销毁方法

    2023-01-05 13:38:09
  • Android 使用Picasso加载网络图片等比例缩放的实现方法

    2023-08-29 15:36:32
  • c#中使用BackgroundWorker的实现

    2023-05-04 08:51:01
  • asp之家 软件编程 m.aspxhome.com