2017-12-09 11 views
0

스프링 부트 응용 프로그램을 실행하려고하지만 404 오류를 찾을 수 없습니다.스프링 부트 404 찾을 수 없음 오류

프로젝트 구조 :

src/ 
+- main/ 
    +- java/ 
    | + com/ 
     | + demo/ 
      | SpringBootDemo.java 
      | + controller/ 
        | HomeController.java 
    +- resources/ 
      | application.yml 


src/ 
+- main/ 
    +- webapp/ 
     +- WEB-INF/ 
      +- pages/ 
       | home.jsp 

HomeController.java

package com.demo.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.GetMapping; 

@Controller 
public class HomeController { 

    @GetMapping("/") 
    public String getHome() { 
     System.out.println("Controller"); 
     return "home"; 
    } 
} 

application.yml

server: 
    port: 8080 
spring: 
    mvc: 
    view: 
     prefix: /WEB-INF/pages/ 
     suffix: .jsp 

build.gradle

buildscript { 
    ext { 
     springBootVersion = '1.5.6.RELEASE' 
    } 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'org.springframework.boot' 
apply plugin: 'application' 
mainClassName = 'com.demo.SpringBootDemo' 

version = '0.0.1-SNAPSHOT' 
sourceCompatibility = 1.8 

// In this section you declare where to find the dependencies of your project 
repositories { 
    mavenCentral() 
} 

dependencies { 
    compile('org.springframework.boot:spring-boot-starter-web') 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
    compile('org.springframework.boot:spring-boot-starter-parent') 
    compile('javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api') 
} 

jar { 
    manifest { 
    attributes(
     'Main-Class': 'com.demo.SpringBootDemo' 
    ) 
    } 
} 
0,123,516

SpringBootDemo.java

package com.demo; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.annotation.ComponentScan; 

@SpringBootApplication(scanBasePackages="com.demo") 
public class SpringBootDemo { 

    public static void main(String[] args) { 
     SpringApplication.run(SpringBootDemo.class, args); 
    }  
} 

home.jsp이

<!DOCTYPE html> 

<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Hello</title> 
</head> 
<body> 
    Hello World 
</body> 
</html> 

내가 코드를 실행하려고, 그것은

Controller 

로 출력을 보여줍니다하지만이 Whitelabel Error Page을 제공합니다 때 http://localhost:8080/

+0

당신이이 글을 읽을 적이 있습니까? https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-jsp-limitations 애플리케이션을 어떻게 만들고 실행합니까? 당신의 gradle 빌드에 전쟁 플러그인이 적용된 것을 볼 수 없으므로 문서에서이 중요한 경고를 무시했을 것입니다. " –

답변

1

업데이트 좋아, 내가 잘하려고 노력할 것이다. 그것은 당신이 잘못 할 의도는 ...

난 당신이 해결할 수 있도록 여러분의 봄 부팅 응용 프로그램

@SpringBootApplication 
public class WebApplication extends SpringBootServletInitializer { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(WebApplication.class, args); 
    } 
} 

을에 서블릿 기능을 얻을 수 SpringBootServletInitializer에서 SpringBootApplication 클래스를 확장 할 필요가 있다고 생각하지 않았다 이러한 속성을 정의해야하는보기 :

spring.mvc.view.prefix: /WEB-INF/pages 
spring.mvc.view.suffix: .jsp 

또는 물론 yaml 변형입니다. 실제 JSP 페이지는 다음 SRC/메인/웹 애플리케이션/WEB-INF/페이지

이 내 치어에 종속되어 배치 할 필요가 당신이 자신을 Gradle을 번역 할 수 있기를 바랍니다

<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>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 

?

내 샘플 컨트롤러는 다음과 같습니다 :이 작동하여 응용 프로그램을 점점 당신을 도움이 될 것입니다

@Controller 
public class HelloController { 
    @RequestMapping("/") 
    public String hello(Model model, @RequestParam(value="name", required=false, defaultValue="World") String name) { 
     model.addAttribute("name", name); 
     return "hello"; 
    } 
} 

희망 ...

+0

이 링크는 질문에 대한 대답 일지 모르지만 여기에 대한 답변의 핵심 부분을 포함하고 참고. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/18204512) – kometen

+0

이 링크는 REST 웹 서비스에 대한 자습서를 제공하지만 웹 애플리케이션의 문제에 봉착했습니다.이 링크는 이미 자습서를 검색했지만 여전히 문제에 갇혀 있으므로 대답을 제공하지 않습니다. 내가 어디로 잘못 가고 있는지 알려주세요. –

+0

죄송합니다. 잘못된 대답을 내 의도가 아니 었습니다. 이게 더 잘될 수 있기를 바랍니다 ... – Ivonet

관련 문제