SpringMVC第一天

简介

SpringMVC技术与Servlet技术功能等同,均属于web层开发技术

SpringMVC是一种基于java实现的MVC模型的轻量级Web框架

优点

        使用简单,开发便捷(相比于Servlet)

        灵活性强

入门案例

第一步、导入SpringMVC与Servlet坐标




  4.0.0

  com.cacb
  SpringMVC_demo1
  1.0-SNAPSHOT
  war



  
    UTF-8
    1.8
    1.8
  

  
    
      javax.servlet
      javax.servlet-api
      3.1.0
      provided
    

    
      org.springframework
      spring-webmvc
      5.2.10.RELEASE
    
  

  
    
      
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        2.1
        
          80
          /
        
      
    
  

第二步、创建SpringMVC控制类(等同于Servlet功能)

package com.cacb.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//定义controller(使用@Controller定义Bean)
@Controller
public class UserController {
    //设置当前操作的返回路径
    @RequestMapping("/save")
    
//设置当前路径的返回值类型
    @ResponseBody
    public String save(){
        System.out.println("user saving!");
        return "{'module':'SpringMVC'}";
    }
}

第三步、初始化SpringMVC环境(同SPring环境),设定SpringMVC加载对应的Bean

package com.cacb.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//创建spring配置文件,加载controller对应的bean
@Configuration
@ComponentScan("com.cacb.controller")
public class SpringMVCConfig {
}

第四步、初始化Servlet容器,加载SPringMVC环境,并设置SpringMVC技术处理的请求

package com.cacb.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

//定义一个servlet容器启动的配置类,在里面加载spring配置
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    // 加载springMVC容器配置
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMVCConfig.class);
        return ctx;
    }
    //设置哪些请求归属springMVC处理
    @Override
    protected String[] getServletMappings() {
        //所有请求归springmvc管理
        return new String[]{"/"};
    }
    //加载spring容器配置
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

SpringMVC第一天_第1张图片

Bean加载控制 

Controller加载控制与业务Bean加载控制

SpringMVC相关Bean

        表现层Bean

Spring控制的Bean

        业务Bean(Service)

        功能Bean(DataSource等)

因功能不同,为了避免Spring错误的加载到SpringMVC管理的Bean

        加载Spring控制的Bean的时候要排除掉SpringMVC控制的Bean

三种解决方式

        方式一:Spring加载的bean设定扫描范围为com.cacb,排除掉controller包内的bean

        方式二:Spring加载的bean设定扫描范围为几个准范围,例如service,dao包等

        方式三:不区分Spring与SpringMVC的环境,加载到同一个环境中

你可能感兴趣的:(spring)