Spring Boot-无法解决Whitelabel错误页面

时间:2018-09-23 12:23:26

标签: java spring-mvc jsp spring-boot

我试图从2天开始运行一个简单的Spring引导应用程序,但仍然无法使其正常运行。我检查了所有相关问题和博客,但问题仍然存在。

我的项目结构如下所示。

Project Structure

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]的模式为[/ **]

4 个答案:

答案 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错误