[SSM]SpringMVC快速入门

概述

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

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

  • 使用简单,开发便捷(相比于Servlet)
  • 灵活性强

入门案例

  1. 使用SpringMVC技术需要先导入SpringMVC坐标与Servlet坐标
  1. 创建SpringMVc控制器类(等同于Servlet功能)
  1. 初始化SpringMvc环境(同Spring环境),设定SpringMVC加载对应的bean
  1. 初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求
  1. 配置Tomcat插件, 用于启动Tomcat服务
  1. 启动程序

介绍上面使用到的注解

名称: @Controller

类型: 类注解

位置: SpringMVc控制器类定义上方

作用:设定SpringMvc的核心控制器bean

范例:

名称:@RequestMapping

类型: 方法注解

位置: SpringMVC控制器方法定义上方

作用: 设置当前控制器方法请求访问路径

范例:

相关属性:

value(默认): 请求访问路径

名称: @ResponseBody

类型: 方法注解

位置: SpringMVc控制器方法定义上方

作用: 设置当前控制器方法响应内容为当前返回值,无需解析

默认情况下, SpringMVC会把返回值当作页面路径处理

加上该注解后, SpringMVC会把返回值当作响应内容, 放在响应体中返回

范例:

SpringMVc入门程序开发总结 (1+N)

  1. 一次性工作
  • 创建工程,设置服务器,加载工程
  • 导入坐标
  • 创建web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径
  • SpringMVC核心配置类(设置配置类,扫描controller包,加载controller控制器bean)
  1. 多次工作
  • 定义处理请求的控制器类
  • 定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回ison数据(@ResponseBody)

AbstractDispatcherServletInitializer介绍

AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类

AbstractDispatcherServletInitializer提供三个接口方法供用户实现

  1. createServletApplicationcontext()方法,创建Servlet容器时,加载SpringMVc对应的bean并放入WebApplicationContext对象范围中,而WebApplicationcontext的作用范围为servletcontext范围,即整个web容器范围
  1. getServletMappings()方法,设定springMVc对应的请求映射路径,设置为/表示拦截所有请求,任意请求都将转入到SpringMVC进行处理
  1. createRootApplicationcontext()方法,如果创建Servlet容器时需要加载非springMVc对应的bean,使用当前方法进行, 使用方式同createServletApplicationContext()

工作流程分析

启动服务器初始化过程

  1. 服务器启动,执行ServletcontainersInitconfig类,初始化web容器
  2. 执行createServletApplicationContext方法,创建了WebApplicationContext对象
  3. 加载SpringMvcConfig
  4. 执行@ComponentScan加载对应的bean
  5. 加载Usercontroller,每个@RequestMapping的名称对应一个具体的方法
  6. 执行getServletMappings方法,定义所有的请求都通过SpringMVC

单次请求过程

  1. 发送请求localhost/save
  2. web容器发现所有请求都经过SpringMVC,将请求交给SpringMVc处理
  3. 解析请求路径/save
  4. 由/save匹配执行对应的方法save()
  5. 执行save()
  6. 检测到有@ResponseBody直接将save()方法的返回值作为响应求体返回给请求方

bean的加载控制

现在的项目中有存在很多bean, 可以分为表现层bean, 业务bean, 功能bean

  1. 表现层的bean, 就是Controller, 应该被SpringMVC管理
  2. 业务bean就是Service, 功能bean就是DataSource等, 应该被Spring管理

SpringMVC相关bean加载控制

SpringMVC加载的bean对应的包均在com.itheima.controller包内, 所以容易控制

Spring相关bean加载控制

1.排除方式: Spring加载的bean设定扫描范围为com.itheima,排除掉controller包内的bean (常用)

名称: @ComponentScan

类型: 类注解

范例:

属性:

  • excludeFilters: 排除扫描路径中加载的bean,需要指定类别(type)与具体项(classes)
  • includeFilters: 加载指定的bean,需要指定类别(type)与具体项(classes)

2.精确加载方式: Spring加载的bean设定扫描范围为精准范围,例如service包、dao包等

在Spring配置类中, 把组件扫描的范围指定的精细一下

3.不区分Spring与SpringMvc的环境,加载到同一个环境中

完整写法

简化写法

相关推荐
别动我齐刘海5 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
code2cat7 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe7 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码7 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
wewowilling7 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用7 小时前
Java Web 7-10
java·servlet
蜗牛互联网9 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端
SL_staff10 小时前
运维救火实录:钉钉考勤API变更引发工资计算异常,我们用JVS-Logic可视化逻辑引擎实现分钟级热修复
java·mysql·全栈
SunnyDays101110 小时前
Java 查找并高亮 Word 文字:精确查找及正则表达式模糊查找
java·查找文字·word 文档·高亮文字·正则匹配查找·模糊查找