SpringMVC入门之二:配置及启用SpringMVC(基于JAVA配置)

搭建SpringMVC的基础组件

为了方便理解和简化无关细节,我们要使用最简单的方式来配置SpringMVC:所要实现的功能仅限于运行我们所创建的控制器。

  • 配置DispatcherServlet
    DispatcherServlet是SpringMVC的核心。在这里请求会第一次接触到框架,它要负责将请求路由到其他的组件之中。配置DispatcherServlet的传统方式是在web.xml文件中配置,这个文件也会放到应用的war包里面。但是,借助于Servlet3规范和Spring3.1的功能增强,这种方式已经不是唯一的方案了,接下来就会讲解新方法。
    我们使用Java将DispatcherServlet配置在Servlet容器中,而不会再使用web.xml文件。如下程序清单展示了所需的Java类。
package spittr.config;
public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
  @Override
  protected String[] getServletMappings(){   //将DispatcherServlet映射到"/"
    return new String[]{"/"};
  }
  @Override
  protected Class<?>[] getRootConfigClasses(){
    return new Class<?>[]{ RootConfig.class };
  }
  @Override
  protected Class<?>[] getServletConfigClasses(){    //指定配置类
    return new Class<?>[] {WebConfig.class};
  }
}

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

启用SpringMVC

  • 启用SpringMVC

    当Spring使用XML配置时,可以使用<mvc:annotation-driven>启动注解驱动的SpringMVC。基于Java的配置中,使用@EnableWebMvc注解来启动SpringMVC,如:

package spittr.config;
@Configuration
@EnableWebMvc
public class WebConfig{
    //视图解析器、启动组件扫描等等....
}
  • 视图解析器

    当没有配置视图解析器时,Spring默认会使用BeanNameViewResolver,这个视图解析器会查找ID与视图名称匹配的bean,并且查找的bean要实现View接口,它以这样的方式来解析视图。

  • 组件扫描

    在配置类中记得要启用组件扫描,否则Spring只能找到显式声明在配置类中的控制器。

  • 映射分类

    这样配置的话,DispatcherServlet会映射为应用的默认Servlet,所以它会处理所有的请求,包括对静态资源的请求,如图片和样式表(在大多数情况下,这可能并不是你想要的结果)。

  • 配置完善

    鉴于上面的种种欠缺,我们的配置类应该是这样的:

package spitrr.config;
@Configuration
@EnableWebMvc
@ComponentScan("spitter.web")    //启用组件扫描
public class WebConfig extends WebMvcConfigurerAdapter{
    @Bean
    public ViewResolver viewResolver(){  //配置 视图解析器
      InternalResourceViewResolver resolver=new InternalResourceViewResolver();
      resolver.setPrefix("/WEB-INF/views/");
      resolver.setSuffix(".jsp");
      resolver.setExposeContextBeansAsAttributes(true);
      return resolver;
    }
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigrer configurer){    //配置静态资源的处理
      configurer.enable();
    }
}
  • 组件扫描的作用

    上面我们启动了组件扫描,因此将会扫描spitter.web下面的组件。稍后会看到,我们所编写的控制器将会带有@Controller注解,这会使其成为组件扫描时的候选bean。因此,我们不需要在配置类中显式声明任何控制器。

  • 静态资源分流

    需要注意,新的WebConfig类还拓展了WebMvcConfigurerAdapter并重写了其configureDefaultServletHandling()方法,通过调用DefaultServletHandlerConfigurer的enable()方法,我们要求DispatcherServlet将对静态资源的请求转发到Servlet容器中默认的Servlet上,而不是使用DispatcherServlet本身来处理此类请求。



上一篇: SpringMVC入门之一:SpringMVC基本原理及请求过程概述
下一篇: SpringMVC入门之三:控制器&模型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值