SpringMVC学习目标:
️ 1、掌握基于SpringMVC获取请求参数与响应json数据操作
️ 2、熟练应用基于REST风格的请求路径设置与参数传递
️ 3、能够根据实际业务建立前后端开发通信协议并进行实现
️ 4、基于SSM整合技术开发任意业务功能
- SpringMVC概述
- SpringMVC入门
- ●初始化 SpringMVC项目环境
- ●SpringMVC项目的开发
- SpringMVC入门开发总结
- SpringMVC工作流程分析
- ●启动服务器初始化过程
- ●单次请求过程
- SpringMVC-Controller加载控制与业务bean加载控制
- SpringMVC-简化Servlet容器配置类
➠SpringMVC是一种基于Java实现MVC模型的轻量级 web框架
➠是一种表现层框架技术,用于进行表现层功能开发
➠ SpringMVC技术与Servlet技术功能等同,均属于web层开发技术
SpringMVC入门 ●初始化 SpringMVC项目环境① 新建模块,选择使用webapp的骨架
②添加源码目录(web程序骨架没有源码目录)
① 导入SpringMVC坐标与Servlet坐标
javax.servlet javax.servlet-api 3.1.0 org.springframework spring-webmvc 5.2.10.RELEASE
② 创建SpringMVC控制器类( 等同于Servlet功能)
package com.GY.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//开发表现层bean(SpringMvc开发专用声明bean的注解)
@Controller
public class UserController {
@RequestMapping("/save")
//设置当前操作的返回值类型
@ResponseBody
public String save(){
System.out.println("save........");
return "{...springmvc...}";
}
}
③ 初始化SpringMVC环境(同Spring环境),设定SpringMVC加载对应的bean
④ 初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术请求(web容器的配置类)
package com.GY.config;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
//4、定义一个servlet容器启动的配置类,在里面加载Spring的配置
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
//Tomcat容器加载springmvc配置
protected WebApplicationContext createServletApplicationContext(){
AnnotationConfigWebApplicationContext A=new AnnotationConfigWebApplicationContext();
//注册配置
A.register(SpringmvcConfig.class);
return A;
}
//配置拦截请求,设置哪些请求归属springMVC处理(此时Tomcat接收的所有请求将交由SpringMVC处理)
protected String []getServletMappings(){
//所有请求归springMVC处理
return new String[]{"/"};
}
//加载spring容器配置
protected WebApplicationContext createRootApplicationContext(){
return null;
}
}
此时我们便可启动服务器
●配置tomcat插件
org.apache.tomcat.maven tomcat7-maven-plugin 2.1 80 /
●启动程序
️️
tomcat启动成功
️️️
在浏览器进行访问(请求成功并且成功打印)
1、服务器启动,执行ServletContainersInitConfig类,初始化web容器
2、执行createServletApplicationContext方法,创建WebApplicationContext(SpringMVC容器)对象
3、加载SpringMvcConfig
4、执行@ComponentScan加载对应的bean
5、加载UserController,每个@RequestMapping的名称对应一个具体的方法
6、 执行getServletMapping方法,定义所有的请求都通过SpringMVC
1、发送请求 http://localhost:81/savehttp://localhost:81/save
2、web容器发现所有请求都经过SpringMVC,将请求交给SpringMVC处理
3、解析请求路径 /save
4、由 /save 匹配执行对应的方法save()
5、执行save()
6、检测到有@ResponseBody直接将save()方法的返回值作为响应体返回给请求方
➠SpringMVC相关的bean(表现层bean)
➠Spring控制的bean
●业务bean(Service)
●功能bean(DateSource等)
思考
1、因为功能不同,如何避免Spring错误的加载到SpringMVC的bean?
SpringMVC的bean一一加载Spring控制的bean的时候排除掉SpringMVC控制的bean
️方法
➠①SpringMVC相关bean加载控制
●SpringMVC加载的bean对应的包均在com.GY.controller
➠②Spring相关bean加载控制
●方式一:Spring加载的bean设定扫描范围为com.GY,排除controller包内的bean
@Configuration
@ComponentScan(value = "com.GY",
excludeFilters = @ComponentScan.Filter(
//按注解过滤(排除)
type = FilterType.ANNOTATION,
classes = Controller.class
)
)
public class SpringConfig {
}
●方式二:Spring加载的bean设定扫描范围为精准范围,例如service包、dao包
●方式三:不区分Spring与Spring与SpringMVC的环境,加载到同一个环境中
SpringMVC-简化Servlet容器配置类将Servlet容器配置类继承 AbstractAnnotationConfigDispatcherServletInitializer类 (AbstractDispatcherServletInitializer的子类)
package com.GY.controller.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}
@Override
protected Class>[] getServletConfigClasses() {
return new Class[]{SpringmvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}



