What's the intended use of `servlet-context.xml`, `root-context.xml` and `web.xml`?

前端 未结 2 643
遇见更好的自我
遇见更好的自我 2021-02-09 09:52

I a new to Java Spring MVC web development. I am kind of confused by the 3 config files below. They are auto created by the STS webmvc project template.

  • What\'s t
2条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-09 10:25

    Create a file name "javax.servlet.ServletContainerInitializer" (without quotes) the file content will be fully qualified name of the class implementing this interface, put the file here /META-INF/services

    You may implement ServletContainerInitializer and override the method like this

    public class CourtServletContainerInitializer implements ServletContainerInitializer {
    
        @Override
        public void onStartup(Set> c, ServletContext ctx) throws ServletException {
            AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
            applicationContext.register(CourtConfiguration.class);
    
            DispatcherServlet dispatcherServlet = new DispatcherServlet(applicationContext);
    
            ServletRegistration.Dynamic registration = ctx.addServlet("court", dispatcherServlet);
            registration.setLoadOnStartup(1);
            registration.addMapping("/");
    
        }
    
    }
    

    After this you do not need web.xml

    Do remember if you are using maven to build your application mention this in pom.xml

    
            false
    
    

    Before that you have to write a configuration class using @Configuration and @Bean annotations

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    
    @Configuration
    @ComponentScan(basePackages = "com.practice.learnspringmvc.*")
    
    public class CourtConfiguration {
    
        @Bean
        public InternalResourceViewResolver internalResourceViewResolver() {
            InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
            internalResourceViewResolver.setPrefix("/WEB-INF/views/");
            internalResourceViewResolver.setSuffix(".jsp");
            return internalResourceViewResolver;
        }
    }
    

    This configuration class replaces your initializers from servlet-context.xml

提交回复
热议问题