Spring3.0 – 学习笔记 –MVC装配

Spring3.0 – 学习笔记 –MVC装配

------转载请注明出处  作者:小魔头

(未完待续)

1.Spring MVC 请求流程

   DispatcherServlet是绝对的核心控制在整个流程中

 

 

2. 配置方式:

    a.JavaConfig和自动隐式装配

    b.xml装配

 

3.JavaConfig显示和自动隐式装配Spring MVC

   3.1 DispatcherServlet及config

    a.在servlet3.0中,服务器容器根据查找javax.servlet.ServletContainerInitializer的实现来配置servlet容器,具体spring如何实现这里不深入研究

    b.只需要继承Spring的AbstractAnnotationConfigDispatcherServletInitializer, 并且重写如下3个方 法,就可以将DispatcherServlet配置到servlet容器中,其实上面的spring父类会同时创建DispatcherServlet and ContextLoaderListener,作用如下:

Protected String getServletMapping(){
    return new String[]{"/"};//MVC总入口,接受所有请求
}

 

 

    //ContextLoaderListener 将会配置RootConfig中的业务逻辑bean(service,DB)

Protected Class<?> getRootConfigClasses(){
    return new Class<?>{RootConfig.class};
}
   
   //DispatcherServlet 将会配置WebConfig种配置的MVC组件bean(控制器,视图解析器和处理器映射)
Protected Class<?> getRootConfigClasses(){
    return new Class<?>{RootConfig.class};
}
 

 

    c. 配置WebConfig,显示的声明配置控制器,视图解析器和处理器映射bean

        i.add @Configuration
        ii.add @EnableWebMvc -- 如果采用xml配置可以由<mvc:annotation-driven>来同样启动        springmvc注解相关的组件
        iii.add@ComponentScan({"com.package1","com.package2"})启动组件扫描,这样不仅可以加载在WebConfig中显示声明的控制器,同样可以载入外部@Controller注解的控制器

        iiii.显示配置视图解析器,代码如下,视图解析器就是根据servlet传入的视图名("home"),解析生成完整的视图路径("/WEB-INF/web/home.jsp")

        iiiii.配置静态资源处理servlet, 继承WebMvcConfigurerAdapter 并且重写configureDefaultServletHanding方法并且调用enable()方法来开启静态资源开关代码如下 

public class WebConfig extends WebMvcConfigurerAdapter{
      @bean
      public ViewResolver viewResolver(){
          InternalResourceViewResolver resolver = new InternalResourceViewResolver();
          resolver.setPrefix("/WEB-INF/web/");
          resolver.setSuffix(".jsp");
          resolver.setExposeContextBeansAsAttributes(true);
          return resolver;
      }
      public void configureDefaultServletHanding(DefaultServletHandlerConfigurer configurer){
          configurer.enable();
      }
}

 

    d.配置RootConfig,就是显示声明业务逻辑bean,同样add @ComponentScan来加载外部bean

 

   3.2 自动隐式Controller --控制器在处理完业务逻辑后,返回给servlet数据模型和视图名("home")

     a.add @Controller在类声明前,其实@Controller和@Component起到的作用是相同,只是语义更加明确

     b.add @RequestMapping(value="/service", method=GET),定义映射逻辑及方法,DispatcherServlet会根据映射器找到对应的controller

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值