欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMvc环境搭建

程序员文章站 2022-04-06 17:57:18
1.配置DispatcherServlet 借助Servlet 3 规范,可以使用JAVA配置DispatcherServlet到Servlet容器中。 下面是所需要的JAVA类。 扩展AbstractAnnotationConfigDispatcherServletInitializer的任意类都 ......
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上。