Spring MVC

news/2024/11/7 22:36:21/

目录

Spring MVC

什么是Spring MVC

MVC定义

MVC和Spring MVC的关系

学习Spring MVC

Spring MVC项目的创建和连接

注意

 @RequestMapping是post还是get请求

获取参数

1.获取单个参数

2.获取多个参数

3.获取普通对象

4.获取form表单参数

5.获取form表单(多个参数)

 6.获取JSON对象

 7.获取上传文件

8.获取Cookie/Session/Header

 重命名前端参数

 获取URL中的参数


Spring MVC

什么是Spring MVC

Spring MVC全称为Spring Web MVC ,Spring Web MVC可以叫做 Spring MVC 或者 Spring Web,

它是一个原始的基于Servlet API的Web框架,要了解Spring MVC就需要先清楚什么是MVC

MVC定义

MVC是Model View Controller的缩写,称为模型视图控制器,它是一种软件架构框架

 Controller(控制器)是应用程序处理用户交互的部分,负责控制用户输入,读取数据,并向模型发送数据

Model(模型)是应用程序中处理数据逻辑的,负责在数据库中存储数据

Viem(视图)是程序中显示数据的,视图依赖于模型返回的数据而创建

MVC和Spring MVC的关系

可以认为MVC是一种思想而Spring MVC则是实现思想的具体实现,我们知道Spring MVC是基于Servlet API的Web框架,因此就可以通过URL获取到用户的请求

学习Spring MVC

学习Spring MVC我们需要掌握三个功能

1.连接的功能:通过访问一个地址能够调用我们的Spring程序

2.获取参数的功能:用户访问会带上参数,在程序中想办法获取参数

3.输出数据的功能:处理业务逻辑后将程序执行的结果返回给用户

Spring MVC项目的创建和连接

Spring MVC项目创建与Spring Boot创建方式相同,在创建时选择Spring Web就相当于创建了Spring MVC项目

 项目创建成功,我们在Spring MVC中使用@RequesMapping来实现URL的映射,实现浏览器和程序的连接

 可以看到上面使用了三个注解,分别解释一下作用

①@Controller代表要在Spring启动时加载并注册

②@ResponseBody代表当前类返回非静态页面

③RequestMapping代表使用"/xx"可以访问当前类或者方法

注意

1.@RequestMapping注解是Spring Web中最常见的注解之一,它是用来注册接口的路由映射的(用户访问URL,将用户的请求对应到程序的某个类的某个方法的过程称为路由映射)

2.我们还可以使用@RestController代替@Controller+@ResponseBody,表示我是一个http控制器,返回的是非静态页面的数据

 @RequestMapping是post还是get请求

我们可以通过postman来验证结果

 可以看到@RequestMapping是同时支持post和get请求的,那如果想要只能同时支持其中一种呢

 可以通过method方法指定请求方式是post还是get,或者使用注解@PostMapping/GetMapping

@PostMapping("/hi")
@GetMapping("/hi")

获取参数

1.获取单个参数

 可以通过servlet中的request方法获取参数,在Spring MVC中默认内置隐藏了两个参数,一是Request (HttpServletRequest),另一是Response (HttpServletResponse)对象,所以想使用只需要在方法中声明就能获取到

 Spring MVC(Spring Web)主要获取参数的方式

2.获取多个参数

 Spring MVC中当传递多个参数的时候,传递参数的顺序是不影响程序执行的,获取参数的结果只和名称有关和顺序无关

3.获取普通对象

4.获取form表单参数

5.获取form表单(多个参数)

 6.获取JSON对象

 注意:获取JSON对象必须满足上面的两个条件(Content-Type,Body),如果获取JSON对象需要使用注解@RequestBody并且使用@RequestBody只能获取到JSON对象不能获取属性

 7.获取上传文件

 使用注解@RequestPart参数myfile对应key,在使用file对象的transferTo()方法进行保存

8.获取Cookie/Session/Header

可以通过注解@CookieValue或者使用内置的HttpServletRequest对象的getCookies方法()

 获取session可以使用注解@sessionAttribute,参数value表示要获取session名字是什么,required表示是否是必须的,默认是true(此时没有对应的session则会报错),或者使用HttpServletRequest

 获取Header信息可以使用注解@RequestHeader或者使用HttpServletRequest对象的getHeader()方法来获取

 重命名前端参数

正常情况下前端与后端传递的key应该相同但是如果不一致如何应对呢?这就需要使用@RequestParam注解来重命名后端的参数值

 如果是非必传参数要设置required为false使其不会报错

 获取URL中的参数

有些场景下可能需要在URL中设置参数,那么如何在URL中获取参数呢

注意:在@RequestMapping("login4/{name}/{passworld}")中{}参数是不可省略的配合注解@PathVariable就可以拿到URL中的参数

请求转发(forward)和请求重定向(redirect)

forward和redirect的区别

1.请求转发服务器端转发,请求重定向将请求重新定位到资源

2.请求转发地址不发生变化,请求重定向地址发生变化

3.请求转发服务器端转发可能造成原外部资源不能访问,请求重定向与直接访问新地址效果相同,不会造成原外部资源不能访问


http://www.ppmy.cn/news/31659.html

相关文章

实习生培养计划

部门最近入职了实习生,为了更好的帮助实习生完成由学生向职业人的转变,并尽快融入企业稳步成长,现提出实习生培养计划,具体方案如下: 1、方案目的 1、使实习生快速转换角色与心态,适应从校园到企业的坏境…

C语言数据结构:链表的增删改查及动态创建

目录 一,链表与数组 ① 定义区别 ② 实现区别 二,链表遍历和计算链表中节点数量 ① 链表遍历 ② 计算节点数量 三,查找链表节点 四,增加节点到链表中 ① 在节点后方插入 ② 在节点前方插入 ● 在头节点前方插入 ● 在…

超过10000人学习的Fiddler抓包教程,只需一小时就可以精通!

如果还是有朋友不太明白的话,可以看看这套视频,有实战讲解 零基础玩转Fiddler抓包在测试领域应用实战!一、Fiddler与其他抓包工具的区别 1、Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请…

2017系统分析师案例分析真题背记内容

前言 以下内容仅为个人根据当年系分案例真题问题整理的偏需要记背的考点答案,方便个人背诵和记忆使用。方便文字转语音,所以内容全为纯文字内容,以下内容仅供参考。 背记内容 微服务 微服务中应该包含的内容有:资源、对资源的…

Python unittest 模块

一、Unittest 的几个基本概念 TestCase :要写的具体的测试用例TestSuite: 多个测试用例集合(或测试套件/测试集)TestLoader:用来加载 TestCase 到 TestSuite中的(更通俗一点,就是用来把符合我们…

Linux进程学习【进程地址】

✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Perseverance is not a long race; it is many short races one after another…

COLMAP

简介:在使用instant-ngp过程中需要使用COLMAP得到模型的必要输入,比如模型需要的相机外参我们就可以通过COLMAP中的sparse reconstruction稀疏重建得到;而对于depth map深度图我们则需要dense reconstruction稠密重建得到,下面我们…

2023-3-8 刷题情况

礼盒的最大甜蜜度 题目描述 给你一个正整数数组 price ,其中 price[i] 表示第 i 类糖果的价格,另给你一个正整数 k 。 商店组合 k 类 不同 糖果打包成礼盒出售。礼盒的 甜蜜度 是礼盒中任意两种糖果 价格 绝对差的最小值。 返回礼盒的 最大 甜蜜度。…