복붙노트

[SPRING] WebApplicationInitializer.onStartup ()에서 welcome-file-list를 지정하는 방법

SPRING

WebApplicationInitializer.onStartup ()에서 welcome-file-list를 지정하는 방법

현재 web.xml을 사용하여 응용 프로그램을 구성하는 웹 응용 프로그램이 있습니다. web.xml에는 welcome-file-list가 있습니다.

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

우리는 스프링 프레임 워크를 사용하고 응용 프로그램 구성을 위해 Java 클래스를 사용할 계획입니다.

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

이 Java 클래스에서 welcome-file-list를 어떻게 지정합니까?

해결법

  1. ==============================

    1.순수 Java 기반 구성을 사용하여 Spring MVC 애플리케이션을 개발하는 동안 WebMvcConfigurerAdapter 클래스를 확장하는 애플리케이션 구성 클래스를 만들고 아래에 설명 된대로 기본 홈 페이지를 설정할 수있는 addViewControllers 메소드를 대체하여 홈 페이지를 설정할 수있다.

    순수 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은 다음과 같이 말합니다 -

    두 번째 방법 - 정적 HTML 파일 홈 페이지의 경우 구성 클래스에서 아래 코드를 사용할 수 있습니다. index.html을 홈페이지로 반환합니다.

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

    세 번째 방법 - 아래의 요청 매핑 "/"은 앱의 홈페이지로 제공 될 수있는 집보기를 반환합니다. 그러나 위의 방법이 권장됩니다.

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

    2.Java Doc로 지정된대로

    Java Doc로 지정된대로

    web.xml에는 최소한의 설정 만 필요합니다.

    <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    
  3. ==============================

    3.

    @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");
    }
    ...
    }
    

    이것은 도움이 될 수 있습니다.

  4. from https://stackoverflow.com/questions/30972676/how-to-specify-welcome-file-list-in-webapplicationinitializer-onstartup by cc-by-sa and MIT license