2017-11-28 15 views
0

スプリングブートを使用して静的なhtml(index.html)ページを返そうとしていますが、私はいつも試してみると405エラーを受けています(http://localhost:8080/)。奇妙な事実は、デバッガがindex()メソッドを入力することです。スタティックhtmlスプリングブートのエラーコード

HomeController:

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
public class HomeController { 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String index() { 
     return "index.html"; 
    } 
} 

私は"index.html"と "インデックス" の文字列を返すようにしようとしています。 htmlファイルの

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.ConfigurableApplicationContext; 

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) throws InterruptedException { 
     ConfigurableApplicationContext applicationContext 
       = SpringApplication.run(Application.class, args); 
    } 
} 

場所は次のとおりです。ここ src\main\resources\public\index.html

は、起動ロガー出力の一部を行く:

INFO 8284 --- [   main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/],methods=[GET]}" onto public java.lang.String com.acs.map.controller.HomeController.index() 

エラー enter image description here

のScreanshotと私はプロジェクトを実行していますグラデル:gradle bootRun

要求後のロガーメッセージ:

WARN 3988 --- [nio-8080-exec-6] o.s.web.servlet.PageNotFound    : Request method 'GET' not supported 

また、私はこの構成ではとせずに試してみました:

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceView; 
import org.springframework.web.servlet.view.UrlBasedViewResolver; 

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/public/**").addResourceLocations("classpath:/public/"); 
     registry.addResourceHandler("/resources/public/**").addResourceLocations("classpath:/resources/public/"); 
     super.addResourceHandlers(registry); 
    } 

    @Bean 
    public ViewResolver viewResolver() { 
     UrlBasedViewResolver viewResolver = new UrlBasedViewResolver(); 
     viewResolver.setViewClass(InternalResourceView.class); 
     return viewResolver; 
    } 
} 
+0

ではなく、 "index.htmlを" だけ "インデックス" を使用してみてくださいです。個人的には、サフィックスを使う必要は一度もありません。また、なぜあなたのURLにバックスラッシュを使用しましたか?スラッシュを使用する必要があります。 – cst1992

+0

"index"と "index.html"のどちらも機能しません。どのバックスラッシュについて話していますか? – yurii

+0

'src \ main \ resources \ public \ index.html'これらのものです。 – cst1992

答えて

2

デフォルト春ブーツではは/静的(または公開/というディレクトリから静的なコンテンツを提供します/ /リソースまたは/ META-INF /リソース)。私は以下の構造にしたがって素早くチェックし成功しました。 enter image description here

は、だから私は、以下のようなWebMvcConfigurerAdapterクラスを拡張して信じて、それは。あなたは、によってだけでなく、ビュー名と実際のビュー間をマッピングするためにもviewResolver使用することができます(WebConfigのクラスなし)あなたの現在のコントローラのコードを使用して静的なコンテンツを返す必要がありますコードをさらに変更します。ここで

@SpringBootApplication 
public class Application extends WebMvcConfigurerAdapter{ 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

私のプロジェクトの依存関係 enter image description here

+0

いいえ、拡張する 'WebMvcConfigurerAdapter'を追加しても役に立ちませんでした。プロジェクトの依存関係を表示できますか? – yurii

+0

確かに依存関係が回答に添付されています – utpal416

+0

WebConfigクラスを削除して最初にヒットしてください。 – utpal416

関連する問題