导致Spring Boot "Whitelabel Error Page"一个原因

 下面这个来自浏览器的报错,估计很多刚开始接触Spring Boot的人都会见过。

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Jul 27 14:03:38 CST 2018

There was an unexpected error (type=Not Found, status=404).

No message available

 导致这个报错的原因有好几个,刚才有不少朋友也分享了他们遇到的情况及处理方法。我遇到这种情况的时候,也参考了其他人的处理方法,但是并没解决问题,后来再仔细对比,发现是POM里面少了一些dependency导致的。

首先看JSP,这里面会用到jstl



<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
。。。

这样就需要在POM中定义以下dependency


	javax.servlet
	jstl
 

	org.apache.tomcat.embed
	tomcat-embed-jasper
	provided

 如果把这两个dependency给注释了,或是没有在POM里面定义,就会碰到上面提到的那个报错。除了页面的这种报错,再也没有其它提示信息了,所以一开始接触的时候,可能会花些时间来查找问题。

如果只是没有加入第一个dependency,则会在控制台提示再清晰的报错信息,这样就会很容易知道问题在那里。

2018-07-27 14:28:52.364 ERROR 9456 --- [nio-8006-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application] with root cause

org.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application
	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:55) ~[tomcat-embed-jasper-8.5.31.jar:8.5.31]
	at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:293) ~[tomcat-embed-jasper-8.5.31.jar:8.5.31]
	at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:80) ~[tomcat-embed-jasper-8.5.31.jar:8.5.31]
	at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:251) ~[tomcat-embed-jasper-8.5.31.jar:8.5.31]
...

 但是如果是只加了第一个,而没加第二个,情况就跟两个都不加一样,在控制台是没有额外报错信息的。感觉这里有点意思啊。

 

 

你可能感兴趣的:(java,web,开发)