我试图从2天开始运行一个简单的Spring引导应用程序,但仍然无法使其正常运行。我检查了所有相关问题和博客,但问题仍然存在。
我的项目结构如下所示。
POM.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
WebApplication.java
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
Application.properties
server.servlet.context-path=/EBS-web
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
logging.level.org.springframework.web=DEBUG
LoginController
@Controller
public class LoginController {
@RequestMapping(path="/")
public String login() {
System.out.println("******************logging************************");
return "login";
}
}
Login.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Hi Login
</body>
</html>
每当我尝试将应用程序作为Spring Boot App(Eclipse的STS插件)运行并访问http://localhost:8080/EBS-web/ 它在UI上显示以下错误消息
Whitelabel错误页面此应用程序没有针对 /错误,因此您将其视为备用。
Sun Sep 23 17:34:52 IST 2018发生意外错误(type = Not 找到,状态为404)。没有可用消息
从下面的堆栈跟踪中,我可以看到spring能够获取处理程序方法,但无法找到关联的视图。
2018-09-23 17:44:12.248调试14728 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet:的最后修改值 [/ EBS-web /]为:-1
********************记录************************
2018-09-23 17:44:12.258调试14728--[nio-8080-exec-2] o.s.w.s.v.ContentNegotiatingViewResolver:请求的媒体类型为 [text / html,application / xhtml + xml,image / webp,image / apng, application / xml; q = 0.9, / ; q = 0.8](基于Accept标头类型和 可生产的媒体类型[ / ])2018-09-23 17:44:12.258 DEBUG 14728- [nio-8080-exec-2] o.s.w.servlet.view.BeanNameViewResolver:否 为视图名称'login'找到匹配的bean 2018-09-23 17:44:12.260 调试14728 --- [nio-8080-exec-2] o.s.w.s.v.ContentNegotiatingViewResolver:返回 [org.springframework.web.servlet.view.JstlView:名称'登录';网址 [/WEB-INF/jsp/login.jsp]]基于请求的媒体类型'text / html' 2018-09-23 17:44:12.260调试14728--[nio-8080-exec-2] o.s.web.servlet.DispatcherServlet:渲染视图 [org.springframework.web.servlet.view.JstlView:名称'登录';网址 [/WEB-INF/jsp/login.jsp]在DispatcherServlet中,名称为 'dispatcherServlet'2018-09-23 17:44:12.264调试14728- [nio-8080-exec-2] o.s.web.servlet.view.JstlView: 转发到资源[/WEB-INF/jsp/login.jsp] InternalResourceView'login'2018-09-23 17:44:12.266 DEBUG 14728 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet: 名称为“ dispatcherServlet”的DispatcherServlet处理GET请求 用于[/EBS-web/WEB-INF/jsp/login.jsp] 2018-09-23 17:44:12.267调试 14728-[nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping: 查找路径/WEB-INF/jsp/login.jsp的处理程序方法2018-09-23 17:44:12.268调试14728 --- [nio-8080-exec-2] s.w.s.m.m.a.RequestMappingHandlerMapping:未找到处理程序方法 用于[/WEB-INF/jsp/login.jsp] 2018-09-23 17:44:12.268调试14728- [nio-8080-exec-2] o.s.w.s.handler.SimpleUrlHandlerMapping:匹配 请求[/WEB-INF/jsp/login.jsp]的模式为[/ **]
答案 0 :(得分:0)
请在您的控制器中定义方法:您可以定义@RequestMapping(value = "/", method = RequestMethod.GET)
,也可以直接使用@GetMapping
@Controller
public class LoginController {
@GetMapping(path="/")
public String login() {
System.out.println("******************logging************************");
return "login";
}
}
您的pom中可能还有更多冲突,例如无需添加tomcat依赖项,因为它已经嵌入,因此可以将其删除。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
要启用对JSP的支持,请添加对tomcat-embed-jasper的依赖。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
在2.x发行版之后,无需扩展SpringBootServletInitializer
,因此下面的内容足以开始。
@SpringBootApplication
public class WebApplication{
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
答案 1 :(得分:0)
请确保所有类都在根包下。我花了几个小时解决这个错误。 我的应用程序在自定义端口8085上运行,但是在访问该端口时没有任何响应。我没有在控制台中收到错误。在根包下重组包之后。错误已解决!!!!!!!!!!
学习愉快:)
关于, Vicky Sharma
答案 2 :(得分:0)
只需将您的类文件添加到主要生成的包中,即可解决错误。
答案 3 :(得分:0)
添加@RestController
而不是@Controller
。然后运行您的Java应用程序。这应该可以解决WhiteLabel
错误