web-dev-qa-db-ja.com

WebApplicationInitializer.onStartup()でwelcome-file-listを指定する方法

現在、web.xmlを使用してアプリケーションを構成しているWebアプリケーションがあります。 web.xmlにはwelcome-file-listがあります。

<web-app>  
   ...
   <welcome-file-list>  
     <welcome-file>home.html</welcome-file>  
   </welcome-file-list>  
</web-app>  

Springフレームワークを使用し、アプリケーション構成にJavaクラスを使用する予定です。

class MyApplication extends WebApplicationInitializer {
    public void onStartUp(ServletContext context){
        ...
    }
}

このJava=クラスでwelcome-file-listを指定するにはどうすればよいですか?

16
user2032118

純粋なJavaベースの構成を使用してSpring MVCアプリケーションを開発しているときに、アプリケーション構成クラスを WebMvcConfigurerAdapter クラスを拡張して作成し、 addViewControllers メソッド。以下で説明するように、デフォルトのホームページを設定できます。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.myapp.controllers" })
public class ApplicationConfig extends WebMvcConfigurerAdapter {

  @Bean
  public InternalResourceViewResolver getViewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/view/");
    viewResolver.setSuffix(".jsp");
    return viewResolver;
  }

  @Override
  public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("home");
  }

}

ホームページとして提供できるhome.jspビューを返します。ホームページビューを返すためにカスタムコントローラロジックを作成する必要はありません。

addViewControllers メソッドのJavaDocは言う-

応答ステータスコードやビューを事前に構成したシンプルな自動コントローラーを構成して、応答本文をレンダリングします。これは、カスタムコントローラーロジックが必要ない場合に便利です。ホームページのレンダリング、単純なサイトURLリダイレクトの実行、HTMLコンテンツでの404ステータス、コンテンツのない204などを返します。

2番目の方法-静的HTMLファイルのホームページの場合、構成クラスで以下のコードを使用できます。 index.htmlをホームページとして返します-

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/index.html");
    }

3番目の方法-以下のリクエストマッピング「/」は、アプリのホームページとして提供できるhomeビューも返します。ただし、上記の方法をお勧めします。

@Controller
public class UserController {
    @RequestMapping(value = { "/" })
    public String homePage() {
        return "home";
    }
}
19
Omkar

できません

Java Doc で指定されているとおり

public interface WebApplicationInitializer

Interfaceは、従来のweb.xmlベースのアプローチとは対照的に(またはおそらく併用して)、ServletContextをプログラムで構成するためにServlet 3.0以降の環境に実装されます。

ただし、次のようなweb.xmlの最小構成は必要です。

<welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
7
Neeraj Jain
@EnableWebMvc
@Configuration
@ComponentScan("com.springapp.mvc")
public class MvcConfig extends WebMvcConfigurerAdapter {
...
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/*.html").addResourceLocations("/WEB-INF/pages/");
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("forward:/index.html");
}
...
}

これは役立つかもしれません。

5
Kartik Mavani