码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMvc环境搭建

时间:2018-06-03 14:43:47      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:webconfig   etc   启用   name   loader   自动配置   override   扩展屏   oid   

1.配置DispatcherServlet

  借助Servlet 3 规范,可以使用JAVA配置DispatcherServlet到Servlet容器中。
下面是所需要的JAVA类。

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { WebConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { RootConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        // 将DispatcherServlet映射到"/"
        return new String[] { "/" };
    }

}


  扩展AbstractAnnotationConfigDispatcherServletInitializer的任意类都会自动配置DispatcherServlet和Spring应用上下文,Spring应用上下文会位于应用程序的Servlet上下文中。

细节:Servlet3.0中,容器会自动查找 实现了javax.servlet.ServletContainerInitialize接口的类,如果可以发现的话,就用它泪配置Servlet容器。Spring提供了实现,名为SpringServletContainerInitializer,这个类会查找实现了WebApionInitializer的类,并将配置任务交给它来完成。Spring提供了便利的WebApionInitializer实现,名为AbstractAnnotationConfigDispatcherServletInitializer。所以只要继承这个便利类,Spring会用它配置Servlet上下文。

两个应用上下文的关系

  当DispatcherServlet启动的时候,它创建了Spring应用上下文,并加载配置文件或类所声明的bean。getServletConfigClasses()中,我们要求DispatcherServlet加载应用上下文时,使用定义在WebConfig中的bean。
  SpringWeb中,还有另一个应用上下文,他是有ContextLoaderListener创建的。
  通常DispatcherServlet加载包含Web组件的bean,如控制器,视图解析器及处理器映射,ContextLoaderListener加载其他的bean,例如中间层,数据库层组件。
  实际上,AbstractAnnotationConfigDispatcherServletInitializer会同时创建DispatcherServlet和ContextLoaderListener。getServletConfigClasses()返回的带有@Configuration的类会用来定义DispatcherServlet应用上下文中的bean。
getRootConfigClasses()返回的带有@Configuration的类会用来配置ContextLoaderListener创建的应用上下文中的bean。

开启SpringMVC

最简配置

  只要添加一个 @EnableWebMvc 注解。

@Configuration
@EnableWebMvc
public class WebConfig {

}

   他可以运行但还存在一些问题。

  1. 没有配置试图解析器。Spring默认使用BeanNameViewResolver,它会查找ID与名称匹配的bean,并且bean要实现View接口。
  2. 没有启动自动扫描。
  3. 静态资源的请求也会被它处理。

循序渐进

@Configuration
@EnableWebMvc
@ComponentScan("com.mcs.Sgin.web") // 启用自动扫描
public class WebConfig extends WebMvcConfigurerAdapter {

    //配置JSP视图解析器
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
    
    //配置静态资源的处理
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

  WebConfig扩展屏重写WebMvcConfigurerAdapter的configureDefaultServletHandling()方法,通过调用DefaultServletHandlerConfigurer的enable()方法,我们要求DispatcherServlet将对静态资源的请求转发到Servlet容器默认的Servlet上。

SpringMvc环境搭建

标签:webconfig   etc   启用   name   loader   自动配置   override   扩展屏   oid   

原文地址:https://www.cnblogs.com/mcsLix/p/9128739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!