2017-06-21 12 views
0

静的ページを提供するコントローラと、RESTエンドポイントが定義されたコントローラの2つのコントローラを持つ基本プロジェクトを構築したいとします。それは私が一緒に入れて何ですので、私はそれのために任意のビューリゾルバを必要としない:viewresolverなしの静的インデックスの提供

@SpringBootApplication 
@Controller 
public class MyAppApplication extends SpringBootServletInitializer { 

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

    @RequestMapping("/") 
    public String index() { 
     return "index"; 
    } 
} 

そして私のpom.xml:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

</dependencies> 

私のindex.htmlには、/ srcに/メイン/リソース下にあり、私はインデックス、index.htmlとフルパスを返そうとしましたが、私はまだ404エラーを取得してしまいます。

私に何か不足または誤解がありますか?デフォルト春ブートすることで

答えて

1

Serving static content:

は、クラスパスにあるかのServletContextのルートから(パブリックまたは/リソースまたは/ META-INF /リソースまたは/)/静的というディレクトリから静的なコンテンツを提供します。 Spring MVCのResourceHttpRequestHandlerを使用するので、独自のWebMvcConfigurerAdapterを追加してaddResourceHandlersメソッドをオーバーライドすることでその動作を変更できます。

スタンドアロンWebアプリケーションでは、コンテナのデフォルトサーブレットも有効になっており、Springが処理しないと判断した場合、ServletContextのルートからコンテンツを提供するフォールバックとして機能します。ほとんどの場合、Springは常にDispatcherServletを介して要求を処理できるため、(MVCのデフォルトの設定を変更しない限り)これは起こりません。

デフォルトでは、リソースは/ **にマップされていますが、spring.mvc.static-path-patternで調整できます。例えば、/リソースにすべてのリソースを再配置/ **達成することができますが

spring.mvc.static-path-pattern=/resources/** 

あなたはまた、(spring.resources.static-場所を使用して、リストにデフォルト値を置き換える静的リソースの場所をカスタマイズすることができ、次のようにディレクトリの場所の)。これを行うと、デフォルトのウェルカムページ検出がカスタムの場所に切り替わります。したがって、起動時に任意の場所にindex.htmlがある場合は、アプリケーションのホームページになります。

DispatcherServletは、デフォルトで使用する実装のリストを保持します。この情報はorg.springframework.web.servletパッケージのファイルDispatcherServlet.propertiesに保持されます。

たとえば、InternalResourceViewResolver設定のプレフィックスプロパティをビューファイルの親の場所に設定するのは非常に一般的です。

ここで理解しなければならない重要な概念は、WebApplicationContextにInternalResourceViewResolverのような特別なBeanを設定すると、その特別なBeanタイプに対して使用されていたデフォルトの実装のリストを効果的にオーバーライドすることです。たとえば、InternalResourceViewResolverを設定すると、ViewResolver実装のデフォルトリストは無視されます。

http://docs.spring.io/spring/docs/5.0.0.RC2/spring-framework-reference/web.html#mvc-servlet-config

github

の例を参照してください
関連する問題