SpringMVC全面学习

SpringMVC

1、介绍

Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能

Java Web开发者必须要掌握的技术框

2、MVC是什么
MVC是一种软件架构思想,把软件按照模型,视图,控制器来划分
Model:模型层,指工程中的JavaBean,用来处理数据
JavaBean分成两类:

一类称为实体类Bean:专门用来存储业务数据,比如Student,User
一类称为业务处理Bean:指Servlet或Dao对象,专门用来处理业务逻辑和数据访问
View:视图层,指工程中的html,jsp等页面,作用是和用户进行交互,展示数据
Controler:控制层,指工程中的Servlet,作用是接收请求和响应浏览器
流程:
用户通过视图层发送请求到服务器,在服务器中请求被Controller接收
Controller调用相应的Model层处理请求,处理完毕后结果返回到Controller
Controller再根据请求处理的结果二、Spring MVC实现原理
3、核心组件
DispatcherServlet:前置控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合性,是整个Spring MVC的核心模块
Handler:处理器,完成具体的业务逻辑,相当于Servlet
HandlerMapping:DispatcherServlet是通过 HandlerMapping把请求映射到不同的Handler
HandlerInterceptor:处理器拦截器,是一个接口,如果我们需要进行一些拦截处理,可以通过实现该接口完成
HandlerExecutionChain:处理器执行链,包括两部分内容:Handler和HandlerInterceptor(系统会有一个默认的HandlerInterceptor,如果有额外拦截处理,可以添加拦截器进行设置)
HandlerAdapter:处理器适配器,Handler执行业务方法之前,需要进行一系列的操作包括表单的数据验证、数据类型转换、把表单数据封装到POJO等,这些一系列的操作都是由HandlerAdapter完成,DispatcherServlet通过HandlerAdapter执行不同的Handler
ModelAndView:封装了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet
ViewResolver:视图解析器,DispatcherServlet通过它把逻辑视图解析为物理视图,最终把渲染的结果响应给客户端

4、工作流程
客户端请求被DispatcherServlet接收
根据HandlerMapping映射到Handler
生成Handler和HandlerInterceptor
Handler和HandlerInterceptor以HandlerExecutionChain的形式一并返回给DispatcherServlet
DispatcherServlet通过HandlerAdapter调用Handler的方法完成业务逻辑处理
返回一个ModelAndView对象给DispatcherServlet
DispatcherServlet把获取的ModelAndView对象传给ViewResolver视图解析器,把逻辑视图解析成物理视图
ViewResolver返回一个View进行视图渲染(把模型填充到视图中)
DispatcherServlet把渲染后的视图响应给客户端

5、连接功能
        连接功能需要建立路由映射,实现用户与程序之间的连接,这里就需要使用到注解有@RequestMapping(请求映射)

@RequestMapping(请求映射)
此注解可以实现路由映射,通过输入一个URL来访问我们的项目程序。

 @RequestMapping 的最小请求单元是方法 。

        因此使用该注解必须要添加在方法上。同时该注解也可以加在类上即一级目录,加在方法上为二级目录 (也可以直接修饰方法)。

6、SpringMVC大概编写(主要分为三层)

(Mapper层,也就是Dao层)

用来映射xml中的sql语句

(Service层)

这里的注入Mapper爆红不会影响运行,只是Spring容器它不知道这个是什么,但是运行时可以像正常运行一样

(Controller层)

用来做请求映射,你的业务逻辑可以在service层写,也可以在Controller层中写。

我这里没有通过接口来实现Service,但是相较于一些业务逻辑比较复杂的就要通过接口来实现Service层的业务逻辑,这样主要是方便来进行解耦

五种参数传参处理

  • 普通参数:url地址传参,地址参数名和形参变量名相同,定义形参即可接收参数
    • @RequestParam:形参注解,绑定请求参数与处理器方法形参间的关系。当请求中参数名与处理器方法形参名称不一致的,进行绑定
    • POJO类型参数:请求参数名与新参对象属性名相同,定义POJO形参即可接收参数
    • 嵌套POJO类型参数:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数
    • 数组类型参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型形参即可接收参数
    • 集合类型参数:请求参数与形参对象名相同且相同且请求参数为多个,@RequestParam绑定参数关系
    • json传递参数(重点 常用)
      @RequestBody与@RequestParam区别:

      @RequestParam用于接收url地址传参,表单传参[application/x-www-form-urlencoded]
      @RequestBody用于接收json数据[application/json]
      后期开发中,发送json格式数据为主,@RequestBody应用较广,如果发送非json格式数据,选用@RequestParam接收请求参数

  • 27
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值