SpringMvc环境搭建

2018-06-18 00:29:58来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

package com.mcs.Sgin.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import com.mcs.Sgin.config.web.WebConfig;

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

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

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

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

}

 

1.配置DispatcherServlet

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


  扩展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上。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:文件的上传和下载学习小结

下一篇:day18_文件的上传和下载学习笔记