現在、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を指定するにはどうすればよいですか?
純粋な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";
}
}
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>
@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");
}
...
}
これは役立つかもしれません。