SpringMVC 学习笔记(一)框架特点 | 体系架构 | 执行流程 | 参数处理、传递

本文是SpringMVC学习笔记的第一部分,详细介绍了SpringMVC框架的特点、体系架构、执行流程以及参数处理和传递的方式。内容包括DispatcherServlet的作用、Handler的职责、ModelAndView和Model的使用,以及GET和POST请求的参数处理。
摘要由CSDN通过智能技术生成

参考资料


MOOC

运行环境


  • windows10
  • JDK8
  • IDEA 2021.1专业版
  • Spring 5.0.5

一、Spring MVC


学习任务:

  • 完成Spring MVC 环境的搭建,并实现视图层 View 与 控制器 Controller 之间的参数传递
  • 超市系统的登录功能

1.1 相关概念

1. SpringMVC
Spring MVC是Spring框架提供的一个 MVC 设计模式的优秀web开发框架,本质上加了@Controller对象,SpringMVC充当控制器(Controller)来建立模型与视图的交互

2.DispatcherServlet **
DispatcherServlet,即中央调度器,是web开发底层Servlet类的子类,它负责
接收用户的所有请求** ,用户把请求提交给 DispatherServlet,之后 DispatherServlet把请求转发给Controller对象,最后是由Controller对象处理请求

DispatcherServlet 是SpringMVC中最核心的类,通常在web.xml里配置

3.Handler

处理器,对应MVC中的C,Controller层

  • 类型:Obejct
  • 作用:处理实际请求
  • 标注了@RequestMapping的所有方法都可以看做是一个 Handler

4.ModelAndView
逻辑视图名 + 视图解析器(找到真实视图)

5.Model

  • 类型:Map
  • 常用方法:添加模型数据
  • 处理方法的传入参数为Model类型
  • 页面也可以直接根据model的key取值

6.View
模型对象,一般为业务层交互后返回的数据

7.InternalResourceViewResolver
视图解析器,重要的有prefix前缀和suffix后缀两个参数

1.2 SpringMVC框架的特点

  • 清晰的角色划分
  • 灵活的配置功能
  • 提供了大量的控制器接口和实现类
  • 真正做到与View层的实现无关(JSP、Velocity、Xslt等)
  • 国际化支持
  • 面向接口编程
  • Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间都可以很方便的结合在一起

1.3 SpringMVC 体系架构与执行流程

1.3 执行流程示意图

在这里插入图片描述

1.4 执行流程分析

  1. 浏览器提交请求到中央调度器 DispatcherServlet
  2. 中央调度器DispatcherServlet直接将请求转发给处理器映射器HandleMapping
  3. 处理器映射器HandleMapping会根据请求,找到该请求的处理器Handle,并将其封装为处理器执行链后返回给中央调度器DispatcherServlet
  4. 中央调度器DispatcherServlet根据处理器执行链中的处理器Handle,找到能够执行该处理器的处理器适配器HandleAdapter
  5. 处理器适配器HandleAdapter调用执行控制器Controller
  6. 控制器Controller将处理结果以及要跳转的视图封装到一个对象 ModleAndView中,并将其返回给处理器适配器HandleAdapter
  7. 处理器适配器HandlerAdapter 直接将结果返回给中央调度器 DispatcherServlet
  8. 中央调度器 DispatcherServlet调用视图解析器ViewResolver,将ModelAndView中的视图名称封装为视图对象View
  9. 视图解析器ViewResolver 将封装了的视图对象View返回给中央调度器 DispatcherServlet
  10. 中央调度器DispatcherServlet 调用视图对象View,让其自己进行渲染,即进行数据填充,形成影响对象
  11. 中央调度器DispatcherServlet响应浏览器

1.5 SpringMVC 请求处理流程

在这里插入图片描述

1.6 源代码分析

  • Tomcat启动,创建容器的过程
    通过 load-on-start 标签指定,创建 DispatcherServlet 对象,该类是HttpServlet的子类,在创建时候会执行 init()方法
  • 在DispatcherServlet对象的init()方法中
  1. 创建容器,读取配置文件:
WebApplicationContext ctx = new ClassPathXmlApplicationContext("springmvc.xml");
  1. 把容器对象放到ServletContext中
getServletContext().setAttribute(key, ctx);

上面创建容器的作用: 创建@Controller注解所在的类的对象,创建 MyController对象,把这个对象放到springmvc的容器中,容器是map,类似于 `map.put(“myController”, MyController对象)

二、SpringMVC的参数处理


2.1 请求数据

请求数据有三种形式:Get请求、Post请求和文件请求

请求方式与提交常见的应用场景

序号 请求方式
表单请求 默认GET,可以指定 POST
AJAX请求 默认GET,可以指定 POST
地址栏请求 GET 请求
超链接请求 GET 请求
src资源路径请求 GET 请求

Get请求:

@RequestMapping(method=RequestMethod.GET)

Post请求

@RequestMapping(method=RequestMethod.POST)

2.2 GET请求

固定参数1 —— @RequestParam

若请求参数与方法定义的参数名不一致,可使用@RequestParam指定请求域的名称,赋给参,例如:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值