情况:springboot能正常启动,且能通过编译,无错误;

然后后台访问静态页面的时候,出现whittelabel error page错误,检查思路如下:

1.判断application是否能检查到controller类,首先application在目录中的范围大于或等于controller的范围,然后检查能否映射静态资源,重新编写了getmapping,发现能实现映射,说明问题可能出现在静态资源的渲染方面

2.每次访问页面,后台回复有一个错误,错误信息为:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "cartList.size()" (template: "common.html" - line 138, col 27)] with root cause

首先我们来分析一下这个信息,首先这是一个由thymeleaf模板引起的错误,“对SpringEL表达式求值时发生异常”。先检查这个请求对应的view 找到line 138, col 27代码如下,定位到common.html的138行,找到确实出现拼写错误,修改之后就能正常运行了。

 

总结:
既然和 DispatcherServlet 有关,那无非就是MVC的映射出了问题,通俗的理解,就是:JVM编译期有个 servlet 加载/调用失败了。

引用一张图,和大家一起复习下 DispatcherServlet :

 

整个流程可以被大致描述为:

  1. 客户端请求被 DispatcherServlet 接收。
  2. 根据 HandlerMapping 映射到 Handler。
  3. ⽣成 Handler 和 HandlerInterceptor。
  4. Handler 和 HandlerInterceptor 以 HandlerExecutionChain 的形式⼀并返回给 DispatcherServlet。
  5. DispatcherServlet 通过 HandlerAdpater 调⽤ Handler 的⽅法完成业务逻辑处理。
  6. 返回⼀个 ModelAndView 对象给 DispatcherServlet。
  7. DispatcherServlet 将获取的 ModelAndView 对象传给 ViewResolver 视图解析器,将逻辑视图解析 成物理视图。
  8. ViewResolver 返回⼀个 View 给 DispatcherServlet。
  9. DispatcherServlet 根据 View 进⾏视图渲染(将模型数据填充到视图中)。
  10. DispatcherServlet 将渲染之后的视图响应给客户端。

引用链接
图片原文链接:https://blog.csdn.net/weixin_44259720/article/details/103185972

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐