Spring mvc介绍

Spring mvc介绍Spring mvc介绍

大家好,又见面了,我是你们的朋友全栈君。

MVC是一个设计模式 是开发程序的一种解决方案

整体流程

在这里插入图片描述
具体步骤:

1、 首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;

2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名);图中的 3、4、5 步骤;

3、 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图中的步骤 6、7;

4、 前端控制器再次收回控制权,将响应返回给用户,图中的步骤 8;至此整个结束。

运行流程

在这里插入图片描述
前端控制器 DispatcherServlet
处理执行链HandlerExcutionChian
处理器映射器 HandlerMapping
处理器适配器 HandlerAdapter 去执行Handler

前端控制器 DispatcherServlet 请求执行Handler 处理完 返回 ModelAndView (模型和视图的结合体) 前端控制器接收到ModelAndView后请求视图解析器 返回view 前端控制器将视图进行渲染
SpringMvc整个的执行流程:
1、发起请求到前端控制器(DispatcherServlet )
2、前端控制器请求HandlerMapping查找Handler(可以根据xml、注解进行查找)
3、处理器映射器HandlerMapping向前端控制器DispatcherServlet 返回Handler
4、前端控制器DispatcherServlet 调用处理器适配器HandlerAdapter 执行Handler
5、处理器适配器HandlerAdapter 执行Handler
6、Handler执行完给处理器适配器返回ModelAndView
7、处理器适配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底层对象 包括model和view)
8、前端控制器请求视图解析器去解析视图
  根据逻辑视图名解析成真正的视图(jsp)
9、视图解析器向前端控制器返回view
10、前端控制器进行视图渲染
  视图渲染将模型数据(模型数据在ModelAndView对象中)填充到request域
11、前端控制器向用户响应结果
组件:
1、前端控制器 DispatcherServlet(不需要程序员开发)
  作用:接收请求、响应结果 相当于转发器
  有了DispatcherServlet 就减少了其它组件之间的耦合度
2、处理器映射器HandlerMapping(不需要程序员开发)
  作用:根据请求的URL来查找Handler
3、处理器适配器HandlerAdapter
  作用:按照特定的规则(HandlerAdapter要求的规则)去执行Handler
  注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler
4、处理器Handler(需要程序员开发)
5、视图解析器 View Resolver(不需要程序员开发)
  作用:进行视图的解析 根据视图逻辑名解析成真正的视图(view)
6、视图View(需要程序员开发jsp)
  View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf。。。)

ModelAndView是什么以及它的作用是什么

用于封装需要响应到页面的数据和视图名字
简单理解它是将后台返回的数据传递给View层,同时包含一个要访问的View层的URL地址
当控制器处理完请求后,通常控制器会将包含视图名称以及一些模型属性的ModelAndView对象返回给DispatcherServlet。因此,在控制器中会构造一个ModelAndView对象, ModelAndView默认转发。

ModelAndView作用

  • 设置转向地址
  • 将底层获取的数据进行存储(或者封装)
  • 最后将数据传递给View

可以携带信息

    modelAndView.addObject("message", "Hello World, Hello Kitty");

简单跳转,前端提交表单,后端验证后跳转不同的页面,并传递信息

form

<form action="http://localhost:8080/login" method="post">
    <input name="name">
    <input name="age">
    <button type="submit">login</button>
</form>

 

suc,err .jsp

<h1>
    ${msg}
</h1>

login 根据不同的数据,跳转不同的页面,视图后缀可以省略jsp

  @RequestMapping("/login")
    public ModelAndView login(
            HttpServletRequest request, HttpServletResponse response) {
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println("login:" + name + " age:" + age);
        if (name.equals("root"))
            return new ModelAndView("suc", "msg", "登录成功");
        return new ModelAndView("err", "msg", "登录失败");
    }

设置重定向

    return new ModelAndView("redirect:http://www.baidu.com");
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106611.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea 2021.5.3 删除之前的激活码(最新序列号破解)

    idea 2021.5.3 删除之前的激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    431
  • aliddns ipv6_IPv6 + aliddns 实现群晖外网控制

    aliddns ipv6_IPv6 + aliddns 实现群晖外网控制IPv6+aliddns实现群晖外网控制2019-07-2117:09:3125点赞257收藏84评论你是AMDYes党?还是intel和NVIDIA的忠实簇拥呢?最新一届#装机大师赛#开始啦!本次装机阵营赛分为3A红组、intelNVIDIA蓝绿组、混搭组还有ITX组,实体or虚拟装机都能参与,可使用值得买定制化DIY装机工具在文中展现配置单!每个小组均有精美礼品,优秀文章还可角逐装…

    2022年5月2日
    130
  • 矩阵组合matlab,matlab中矩阵的所有组合[通俗易懂]

    这是一个更简单(原生)的解决方案,包含perms和meshgrid:N=size(A,1);X=perms(1:N);%#PermuationsofcolumnindicesY=meshgrid(1:N,1:factorial(N));%#Rowindicesidx=(X-1)*N+Y;…

    2022年4月17日
    80
  • 苹果 find my 原理_find区别

    苹果 find my 原理_find区别什么是查我网络?2021年4月21日的苹果发布会发布了一款新的产品:AirTag,防丢器。使用的是BLE+UWB的技术。BLE通过FindMy网络解决了GPS定位的问题;而UWB解决了室内的、厘米级的精准定位问题。二者相互补充,实现了比较精准的定位,为用户提供优秀的物品防丢体验。查我网络(FindMyNetwork)是苹果公司发布的一项应用技术。这项技术比较神奇的一点是,支持这项技术的苹果设备(iPhone,iPad,AirPods,AirTag等),即使本身没有GPS

    2025年8月23日
    6
  • macOS虚拟机安装全过程(VMware)

    macOS虚拟机安装全过程(VMware)​1.安装前的准备VMwareWorkspace16Pro要准备好,如果没有见我之前写的博客的前半部分;还有百度网盘,链接:百度网盘下载链接。2.下载macOS镜像这里提供3个版本的macOS镜像,越往下版本越新,下文以macOSBigSur11举例macOSEICaptian10.11:https://pan.baidu.com/s/1fagJkrFqq4FKA_HSB9Xhcgpwd=rvwz此系统适合配置较低的WindowsXP、Windows7老电脑..

    2022年8月16日
    10
  • foremost windows_windows上安装foremost – kalibb

    foremost windows_windows上安装foremost – kalibb做CTF题需要这工具来提取文件里的隐藏文件,网上大部分是linux版本,之前好不容易找了一个exe文件结果还不能用。找了很长时间终于找到了:用这个原代码你自己就可以编译出exe,如果懒得编译的话里面的binary里就有编译好的,直接用这个就好可以把前两个文件复制到一个安全的文件夹,方便以后使用,不要误删就好。分离文件的步骤:1.将所要解密的文件放入foremost所在的目录;进入foremos…

    2025年6月2日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号