--- spring MVC ---

news/2025/2/27 5:52:33

引言

所谓MVC是一种软件的设计模型,他把软件系统分为三部分,View(视图),Controller(控制器),Model(模型),他们之间的关系是

spring mvc全称为spring web mvc,而spring在实现mvc的时候,也根据自己的特点来进行一些改变,这是更贴合springmvc的实现

spirng mvc中controller实现了选择模型和视图的功能,而在spring mvc中已经支持了视图的处理,具体是通过委派给集成的第三方库来实现数据的渲染,比如返回一个类,控制器只需要直接return这个类就好,spring mvc会自动的选择对应的json转换视图模型来对这个类进行转换并返回响应

并且提供了比servlet更加简单的web开发,比如

// 原生 Servlet:手动解析参数
String userId = request.getParameter("userId");

// Spring MVC:自动绑定参数
@GetMapping("/user")
public String getUser(@RequestParam String userId) {
    // 直接使用 userId
}

spring mvc使用注解开发,减少了一半多的代码量,而且能够根据请求头来自动的进行格式转换

也就是可以不用特别放回json/xml格式的数据

spring mvc中的常见注解

使用@RequestMapping来进行url路由映射

p这个方法的url就是http://127.0.0.1:8080/b1/p,因为是默认在本地的8080端口运行的项目

但是单单这样写还不能接受http请求,还需要加上Controller注解表示这个类是个控制器,因为发起的请求是发送给控制器的,那么就还需要加上Controller注解

@RestController表示的是这个类返回的是数据,而@Controller表示返回的是html页面

对于前端参数的接收

一个参数

这是前端发起的请求一定要和后端的名字相同

数组接收

只能接收get请求

只能接收post请求

将接收到的数据赋给另一变量

 集合的接收,使用@RequestParam来绑定参数

json的接收

获取url中的参数 使用@PathVariable注解

文件的接收 @RequestPart

服务端Cookie的获取

HttpServletRequest类是servlet的类,记录的发来的请求的所有信息,在这之上的获取值得方法其实都是封装了这个类的方法,可以说你想从请求中获取什么都可以在这里获取到

还有个对应的类HttpServletResponse,这个返回的响应的servlet类,你想返回什么也都可以这个类中,你可以设置返回的状态码


设置cookie

直接获得某个key对应的Cookie值

返回html页面 要是使用Controller这个标签,且返回页面的路径是在项目的main/resource/static下的文件     

end~~ 下一篇使用这些实现一些案例


http://www.niftyadmin.cn/n/5869573.html

相关文章

深入解析 Spring 中的 BeanDefinition 和 BeanDefinitionRegistry

在 Spring 框架中,BeanDefinition 和 BeanDefinitionRegistry 是两个非常重要的概念,它们共同构成了 Spring IoC 容器的核心机制。本文将详细介绍这两个组件的作用、实现以及它们之间的关系。 一、BeanDefinition:Bean 的配置描述 1.1 什么…

线性回归(一)基于Scikit-Learn的简单线性回归

主要参考学习资料: 《机器学习算法的数学解析与Python实现》莫凡 著 前置知识:线性代数-Python 目录 问题背景数学模型假设函数损失函数优化方法训练步骤 代码实现 问题背景 回归问题是一类预测连续值的问题,满足这样要求的数学模型称作回归…

仿真环境下实现场景切换、定位物体和导航行走

1. 代码(以微波炉为例) from ai2thor.controller import Controller import math import randomdef distance_2d(pos1, pos2):"""计算两点之间的二维欧几里得距离(忽略Z轴)"""return math.sqrt((p…

Python在实际工作中的运用-通用格式CSV文件自动转换XLSX

继续上篇《Python在实际工作中的运用-CSV无损转XLSX的几个方法》我们对特定的CSV实现了快速转换XLSX的目标,但是运行Py脚本前还是需要编辑表格创建脚本和数据插入脚本,自动化程度很低,实用性不强,为提供工作效率,实现输…

kafka consumer 手动 ack

在消费 Kafka 消息时,手动确认(acknowledge)消息的消费,可以通过使用 KafkaConsumer 类中的 commitSync() 或 commitAsync() 方法来实现。这些方法将提交当前偏移量,确保在消费者崩溃时不会重新消费已处理的消息。 以…

HBase与MapReduce结合(二)——对HBase表中字段进行WordCount

目录 1. 数据文本2. pom.xml中依赖配置3. 工具类Util4. 导入数据ImportData5. 对HBase表进行WordCount6. 配置Job7. 结果参考 1. 数据文本 1_song1_2016-1-11 song1 singer1 man slow pc 2_song2_2016-1-11 song2 singer2 woman slow ios 3_song3_2016-1-11 song3 singer3 man…

Project #0 - C++ Primer前置知识学习

这次的Lab0主要以熟悉C 11和C 17的新特性。这里先把相关新特性分析一下。 目录 一、Doxygen注释 二、函数签名分析 三、构造函数与delete、explicit 四、static constexpr 解释 五、各种cast转换(重点) 5.1 const_cast与reinterpret_cast 5.2 static_cast与dynamic_cas…

eclipse 4.4.2 m2eclipse apache-maven-3.2.1

apache-maven-3.2.1-CSDN博客 eclipse 4.4.2 m2eclipse