Java 运行简单服务时出现白标签错误页面
我已经用简单的控制器在STS(Spring工具套件)中创建了Spring Starter项目:Java 运行简单服务时出现白标签错误页面,java,spring,Java,Spring,我已经用简单的控制器在STS(Spring工具套件)中创建了Spring Starter项目: @RestController public class GreetingController { private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @GetMapping("/gre
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@GetMapping("/greeting")
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
如中所示
我从IDE运行服务,它开始运行正常。但是当我去http://localhost:8080/greeting?name=User 我得到一个错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Oct 01 10:25:10 PDT 2020
There was an unexpected error (type=Not Found, status=404).
为什么我会犯这个错误?如何解决这个问题
UPD
添加更多日志后,我得到了到错误的映射:
2020-10-02 06:17:46.078[0;39m [32mDEBUG[0;39m [35m4851[0;39m [2m---[0;39m [2m[ main][0;39m [36ms.w.s.m.m.a.RequestMappingHandlerMapping[0;39m [2m:[0;39m 2 mappings in 'requestMappingHandlerMapping'
[2m2020-10-02 06:17:46.136[0;39m [32m INFO[0;39m [35m4851[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat started on port(s): 8080 (http) with context path ''
[2m2020-10-02 06:17:46.142[0;39m [32m INFO[0;39m [35m4851[0;39m [2m---[0;39m [2m[ main][0;39m [36mcom.example.demo.Demo1Application [0;39m [2m:[0;39m Started Demo1Application in 1.221 seconds (JVM running for 1.934)
[2m2020-10-02 06:17:51.491[0;39m [32m INFO[0;39m [35m4851[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36mo.a.c.c.C.[Tomcat].[localhost].[/] [0;39m [2m:[0;39m Initializing Spring DispatcherServlet 'dispatcherServlet'
[2m2020-10-02 06:17:51.493[0;39m [32m INFO[0;39m [35m4851[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36mo.s.web.servlet.DispatcherServlet [0;39m [2m:[0;39m Initializing Servlet 'dispatcherServlet'
[2m2020-10-02 06:17:51.496[0;39m [32m INFO[0;39m [35m4851[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36mo.s.web.servlet.DispatcherServlet [0;39m [2m:[0;39m Completed initialization in 3 ms
[2m2020-10-02 06:17:51.508[0;39m [32mTRACE[0;39m [35m4851[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36ms.w.s.m.m.a.RequestMappingHandlerMapping[0;39m [2m:[0;39m 2 matching mappings: [{ /error, produces [text/html]}, { /error}]
[2m2020-10-02 06:17:51.509[0;39m [32mTRACE[0;39m [35m4851[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36ms.w.s.m.m.a.RequestMappingHandlerMapping[0;39m [2m:[0;39m Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#errorHtml(HttpServletRequest, HttpServletResponse)
如果您获得了
404
,那么显然您的控制器没有注册。如果我们缺少其他源代码,就很难帮助您
也许你的控制器在国外的软件包里。Spring boot默认情况下对主Spring boot类(带有@SpringBootApplication
注释的类)的所有包(和子包)使用组件扫描
要查找问题,只需添加
logging.level.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=TRACE
到您的应用程序.properties
并在日志中搜索问候语
字符串
你应该找到类似的东西
2020-10-01 19:49:12.610 TRACE 36840 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping :
c.t.t.c.RootController:
{GET /}: welcome()
{GET /greeting}: greeting(Model)
已在日志文件中获得到错误的映射。更多详情请参见问题正文UPD