码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringMVC程序开发


    文章目录

    • 1. 什么是SpringMVC
    • 2. MVC定义
      • 2.1 MVC 和 Spring MVC 的关系
    • 3. SpringMVC项目的创建
    • 4.学习SpringMVC目标
    • 4.1 连接
      • 4.1.1 @RequestMapping
      • 4.1.2@GetMapping
      • 4.1.3PostMapping
      • 三者区别
    • 5. 获取参数
      • 5.1 获取单个参数
      • 5.2 获取多个参数
      • 5.3 获取对象
      • 5.4 后端参数重命名
      • 5.5 获取JSON对象
      • 5.6 获取URL中的参数
      • 5.7 上传文件
      • 5.8 获取cookie/session/header
        • 5.8.1 传统的获取cookie/header
        • 5.8.2 更简单的获取cookie/header
        • 5.8.3 存储session
        • 5.8.4 获取session
        • 5.8.5 更简单的获取session
    • 6. 返回数据
      • 6.1 返回静态页面
      • 6.2 返回text/html
      • 6.3 返回JSON对象
      • 6.4 请求转发和请求重定向

    1. 什么是SpringMVC

    Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它

    的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“Spring

    MVC”。

    2. MVC定义

    MVC 是 Model View Controller (模型视图控制器)的缩写,它是软件⼯程中的⼀种软件架构模式,

    它把软件系统分为模型、视图和控制器三个基本部分。

    在这里插入图片描述
    Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取

    数据。
     
    View(视图) 是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。
     
    Controller(控制器) 是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据。

    2.1 MVC 和 Spring MVC 的关系

    MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。

    总结来说,Spring MVC 是⼀个实现了 MVC 模式,并继承了 Servlet API 的 Web 框架。既然是 Web

    框架,那么当⽤户在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求.

    3. SpringMVC项目的创建

    Spring MVC 项⽬创建和 Spring Boot 创建项⽬相同,在创建的时候选择 Spring Web 就相当于创建了 Spring MVC 的项⽬。

    在这里插入图片描述

    4.学习SpringMVC目标

    学习 Spring MVC 我们只需要掌握以下 3 个功能:

    • 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。
    • 获取参数的功能:⽤户访问的时候会带⼀些参数,在程序中要想办法获取到参数。
    • 输出数据的功能:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤户。

    对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了 Spring MVC

    4.1 连接

    4.1.1 @RequestMapping

    通过RequestMapping进行连接,在SpringBoot中已经演示过了。
    在这里插入图片描述
    在这里插入图片描述

    4.1.2@GetMapping

    在这里插入图片描述

    在这里插入图片描述

    4.1.3PostMapping

    在这里插入图片描述
    在这里插入图片描述

    三者区别

    • @GetMapping 是 GET 请求
    • @PostMapping 是 POST 请求
    • @RequestMapping 既支持 GET 请求 又 支持 POST 请求

    在这里插入图片描述
    在这里插入图片描述
    当然@RequestMapping也能指定只支持一种请求

    Get

    在这里插入图片描述

    在这里插入图片描述

    Post

    在这里插入图片描述在这里插入图片描述

    5. 获取参数

    5.1 获取单个参数

    在这里插入图片描述

    在这里插入图片描述

    5.2 获取多个参数

    在这里插入图片描述
    在这里插入图片描述

    5.3 获取对象

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    5.4 后端参数重命名

    如果某天前端的参数名字与后端参数名字不一致,而你的写的代码很多了不想改了,就可以使用这个方法:
    在这里插入图片描述

    在这里插入图片描述

    修改:

    在这里插入图片描述

    在这里插入图片描述

    然而这样写会引发一个问题,当传递参数为空时,会报错:

    在这里插入图片描述

    解决办法:

    在这里插入图片描述
    在这里插入图片描述

    5.5 获取JSON对象

    当我们在前端发送一个JSON对象时,后端能否接收到呢?
    在这里插入图片描述显然并没有接收到!

    因此需要加上这个注解
    在这里插入图片描述

    注意::这里的是@RequestBody 和 类上的ResponseBody是不一样的

    在这里插入图片描述

    5.6 获取URL中的参数

    注意:这里的URL和参数部分是不同的:
    在这里插入图片描述
    我们获取的不再是?后面的参数而是/前后的参数。

    在这里插入图片描述
    在这里插入图片描述
    注意:路径参数名字需与方法参数名字相同

    5.7 上传文件

    在这里插入图片描述
    使用postman模拟一下

    在这里插入图片描述
    在这里插入图片描述

    5.8 获取cookie/session/header

    5.8.1 传统的获取cookie/header

    在这里插入图片描述
    访问后大概率是这样的,因为我们没有存储Cookie
    在这里插入图片描述添加一个即可
    在这里插入图片描述
    在这里插入图片描述

    5.8.2 更简单的获取cookie/header

    在这里插入图片描述

    5.8.3 存储session

    在这里插入图片描述

    在这里插入图片描述

    5.8.4 获取session

    在这里插入图片描述

    在这里插入图片描述

    5.8.5 更简单的获取session

    在这里插入图片描述

    6. 返回数据

    6.1 返回静态页面

    在这里插入图片描述

    在这里插入图片描述

    6.2 返回text/html

    在这里插入图片描述
    在这里插入图片描述

    6.3 返回JSON对象

    在这里插入图片描述
    在这里插入图片描述
    注意:在Spring中返回map默认就是一个json数据格式的对象。

    6.4 请求转发和请求重定向

    • 请求转发: forward 服务器帮客户进行请求转发并将结果响应给客户端, URL 地址是不变的
    • 请求重定向: redirect 服务器端将请求重新定义到要访问的地址上, URL 地址会发生改变

    请求转发和请求重定向的区别:

    • 请求转发 URL 地址不变, 因为服务器端进行转发和响应.
    • 请求重定向 URL 地址发生改变, 因为服务器端直接将请求重定向到具体的地址上
    • 使用请求转发那么有可能外部资源全部会丢失, 访问不到.
    • 请求重定向是直接重定向到 URL地址了, 所以不会存在外部资源丢失的情况
    • 重定向浏览器会发送两条请求,转发,只有一条请求。

    举个例子:

    • 请求重定向:张三找李四借钱,李四没钱,但李四告诉张三,去王五那里看看。张三借到了。结果张三跑了,这个时候,李四是不担责任了。因为钱是张三借的。
    • 请求转发:张三找李四借钱,李四没钱,但李四去找王五那里借了一些钱,然后借给给了张三。
      结果张三跑了,王五找谁还?肯定找李四啊!因为是李四找他借的钱。
  • 相关阅读:
    fastjson(反序列化)漏洞复现
    The Sandbox 和 Brinc 公布入选 5000 万美元元宇宙加速器计划的首批初创公司
    Initialization of Node and Zone(linux 内存 结点内存区域的初始化)
    综合能力 ---- 2. 法律法规
    Go构建遇到cgo动态库时解决方案
    电子电气架构设计需要考虑哪些方面?
    Visual Studio 和 VSCode 哪个好?
    asp.net在线考评系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
    Erlang入门——将字符串去““转为普通类型
    MSVCR80.DLL 丢失修复方法:完美解决你的问题!
  • 原文地址:https://blog.csdn.net/qq_59689127/article/details/126364894
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号