2017-12-09 32 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' 
    ) 
    } 
} 

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ビルドにwarプラグインが適用されていないことを知っているので、ドキュメンテーションからこの重要な警告を無視した可能性が高いでしょう」。 –

答えて

1

UPDATE よろしくお願いします。あなたが間違っている...

私は解決することができるようにするために、あなたの春のブートアプリケーション

@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 /メイン/ webappの/ 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 Webサービスに関するチュートリアルですが、私はWebアプリケーションの問題に取り組みました。このチュートリアルはすでに検索されていますが、まだこの問題に取り残されているので、このリンクから答えは出ません。私が間違っているところを教えてください。 –

+0

申し訳ありませんが、悪い回答をするのは私の意図ではありませんでした。これがよりうまくいくことを願っています... – Ivonet