SpringMVC(1)

前言

1. SpringMVC简介

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

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

2. 入门案例

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

第一步导入坐标,SpringMVC和servlet
在这里插入图片描述
在这里插入图片描述
这样其实就把我们要用的Spring相关的都用上了

在这里插入图片描述
第三步就是加载这个bean
写配置类
在这里插入图片描述
第四步做一个Tomcat容器启动的配置
在这里插入图片描述
还要加上Tomcat插件
在这里插入图片描述
我们在创建一个快捷方式

注意由于我的JDK版本高,所以我只能用spring-webmvc的5.3.22版本,但是呢5.3.22这个版本的Tomcat也必须要版本高才行,所以Tomcat7就不能用了,我用的是本地的Tomcat9,因为Tomcat11和10需要的是javata
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

3. 入门案例工作流程

在这里插入图片描述

ServletContainersInitConfig中的createServletApplicationContext加载了配置类SpringMvcConfig,SpringMvcConfig又去扫描了我们的UserController,这样就执行成功了
在这里插入图片描述
在这里插入图片描述

4. bean加载控制

在这里插入图片描述
SpringMVC会记在controller的bean那么如何避免Spring也加载这个呢
因为我们加载Spring的时候是加载itheima下的所有包,所以我们加载Spring的时候,去掉SpringMVC控制的bean就可以了
在这里插入图片描述
在这里插入图片描述

现在没有Spring的配置文件,我们加载一个Spring的配置文件,就是Spring的配置类
在这里插入图片描述
在这里插入图片描述
这样就可以了

第三个方式就是不区分Spring和SpringMVC的环境,都加载到同一个环境

在这里插入图片描述
这样就可以加载Spring的环境了

在这里插入图片描述
在这里插入图片描述
我们现在介绍第二种方法,来加载spring和SpringMVC的配置类

在这里插入图片描述

这样写就可以了

以后都写这个

5. PostMan工具介绍

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

在这里插入图片描述

点workspaces
然后创建springmvc
在这里插入图片描述

点搜索下面的加号
在这里插入图片描述
在这里插入图片描述
这样就可以发请求了
直接点那个save或者ctrl+s就可以保存了

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

这样右边就多了一个入门案例了

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

6. 设置请求映射路径

在这里插入图片描述
在这里插入图片描述
bookcontroller和user的都有save功能,那到底执行谁的呢

这个我们直接报错了

怎么解决这个冲突呢
设置相应的模块名就可以了

在这里插入图片描述
这样就可以了

但是都写了save还有点麻烦
我们可以这样来

在这里插入图片描述
我们先在整个类上面写上@RequestMapping(“/user”)
这个就是请求路径的前缀
这样就可以了
在这里插入图片描述
加在类上面就是请求前缀

7. get请求与post请求发送普通参数

在这里插入图片描述

7.1 get请求

在这里插入图片描述
怎么接受get请求的参数呢

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当然我们也可以在这里测试,下面的key和value就是对应的get请求参数

在这里插入图片描述

7.2 post请求

对于get请求或者post请求,我们后台代码是没有变化的,所以我们不管后台了

我们直接在postman那里搞post
新建一个post
在这里插入图片描述

post请求的请求参数在请求体内,所以我们要点Body

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

这两个的区别主要是,第一个能发文件能发表单,第二个只能发表单,所以我们用第二个
在这里插入图片描述

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

注意我们这个不能处理中文乱码问题
在这里插入图片描述
在这里插入图片描述
所以我们要设一个过滤器,在配置类中设置

在这里插入图片描述
在这里插入图片描述
但是不知道为什么,我这样还是会出现乱码,而且就算是打印出来也会出现乱码,但是经过我的仔细仔细再仔细的思考
在这里插入图片描述
给我们的虚拟机加上-Dfile.encoding=UTF-8这个选项就可以了

在这里插入图片描述
而且get请求也可以处理乱码了

在这里插入图片描述

8. 5种类型参数传递

8.1 普通参数

在这里插入图片描述

在这里插入图片描述
注意形参和post请求的参数名称得要一样才能映射,不一样的话就不能映射了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就不行了

我们也是有解决方案的
在这里插入图片描述

@RequestParam(“name”)就是把请求参数里面的name给userName了

在这里插入图片描述

8.2 实体类参数类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个我们就可以看出,post里面的属性名和后面实体类里面的属性名一样,它就可以自动把属性名塞进去

在这里插入图片描述
但是如果里面有引用类型的属性呢
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这样写就可以了

在这里插入图片描述

8.3 数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果不写likes就不行了,就接受不到了

8.4 集合

在这里插入图片描述
在这里插入图片描述
这样写的话就会报错了

为什么不行呢,因为没有List没有这种类型的构造方法,它把likes当成一个实体类对象了

怎么才能把likes扔进去呢

在这里插入图片描述
添加一个@RequestParam就可以实现扔进去了

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

9. JSON数据传递格式

我们常用的就是JSON数据格式

9.1 集合参数

在这里插入图片描述
第一我们先打一个JSON的坐标

在这里插入图片描述
第二就是前端要发送json数据

Body里面选raw就可以了

在这里插入图片描述
第三步就是接收
在这里插入图片描述
我们直接这样写是无法转换的

我们必须得开启一个功能才行
就是在配置类开启就可以了

@EnableWebMvc加上就可以开启了

在这里插入图片描述

这个就开启了JSON转换为对象的功能

但是我们还不能直接转换
@RequestParam已经不管用了,我们得加@RequestBody,因为JSON请求数据在请求体中
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9.2 pojo

在这里插入图片描述
在这里插入图片描述
接下来把JSON数据在请求体给塞进JSON中

在这里插入图片描述
还是加个@RequestBody即可

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

9.3 集合参数


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

在这里插入图片描述

10. 日期型参数传递

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意导入Data的包必须是util的,不然会报错

在这里插入图片描述
注意不要写成Data了

在这里插入图片描述
这就说明了日期型参数是可以直接传递的,由字符串直接可以转成一个Date
在这里插入图片描述
但是我们如果直接写成这种格式就会出错了
因为转换失败了

因为斜杠才是标准格式,怎么指定标准格式呢

在这里插入图片描述
这样就可以了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以我们用@DateTimeFormat就可以指定格式了
在注意一下,要把@EnableWebMvc打开,才能执行这种规则转换

11. 响应

11.1 响应页面

在这里插入图片描述
我们这里有一个页面

在这里插入图片描述

这下我们就在浏览器上访问,因为是跳转页面

在这里插入图片描述

11.2 响应文本

在这里插入图片描述
在这里插入图片描述
但是我们报错了,为什么呢,因为它认为response text是一个页面,所以会报错

在这里插入图片描述

这样就可以了

在这里插入图片描述

说白了就是返回一个字符串,就是响应一个字符串

11.3 响应JSON数据

在这里插入图片描述

我们这样写还不行,因为方法的返回值默认是String,默认是跳转页面,而我们想要的是把这个数据转换成JSON数据,传递出去
还是一个 @ResponseBody就可以了,加上了这个,就不是默认跳转页面的操作了

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

这样我们就成功了

把我们的对象转换成JSON这个事是JSON的坐标干的

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

所以响应JSON数据特别简单

ResponseBody就是设置控制器的返回值作为响应体

12. REST风格简介

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

请求形式不止post和get,常用的就上面的四种

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

13. RESTful入门案例

现在我们直接在原来的基础上修改

在这里插入图片描述
在这里插入图片描述
这样的话,就只能post请求提交

在这里插入图片描述

在这里插入图片描述
现在增加参数的事情
delete的形参是int
在这里插入图片描述
我们的路径要这么写,但是参数怎么知道这不是路径呢,而是参数呢

在这里插入图片描述

这样写就可以了

这就是路径参数,或者路径变量

{id}代表路径的1,形参id代表{id}里面的id,@PathVariable代表我们要从{id}里面取id
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

14. RESTful快速开发

我们可以看出users都重复写了,我们可以简化一下

每个上面都有ResponseBody,也可以简化

在这里插入图片描述
直接在类上面添加一个前缀就可以了

@RequestMapping(“/users”)

后面的@RequestMapping(“/users”)就都可以去掉了

在这里插入图片描述
当然 @ResponseBody也可以写在类的上面

在这里插入图片描述

还有个简化的点就是@Controller
@ResponseBody
这两个东西,每个类上面都要写的,也可以简化

我们直接一个@RestController,就包含了这两个

在这里插入图片描述
每个方法里面都要写 method = ,也麻烦

@RequestMapping( method = RequestMethod.POST)这一行我们可以直接写一个 @PostMapping,这个就代表了上面的

在这里插入图片描述
这样就简化了好多

在这里插入图片描述

在这里插入图片描述

这个调用的就是save
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

15. 案例:基于RESTful页面数据交互

15.1 后台接口开发

在这里插入图片描述

在这里插入图片描述

现在我们写两个接口来测试一下

这里我们在postman那里写了两个测试的

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
因为我们没有写RequestBody

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

15.2 页面访问处理

直接复制功能页面

没有的可以去我的Gitee复制

在这里插入图片描述
主要访问的是books.html

在这里插入图片描述
但是我们却不能访问,为什么呢
因为springmvc给拦截了这个路径,这种图片 css这种应该交给Tomcat处理,而不是springmvc来拦截,为什么拦截了呢
在这里插入图片描述
因为我们的getServletMappings就是拦截的所有路径,所以才会拦截

对于这些静态资源的访问,我们不要过springmvc,我们应该放行
我们在config包下设置一个功能类专门来干这件事SpringMvcSupport

在这里插入图片描述
别忘了做出bean之后,还要去扫描一下

在这里插入图片描述
在给其他静态资源放行

在这里插入图片描述
在这里插入图片描述
现在我们的页面就能正常访问了

现在我们把页面和controller绑定在一起

在这里插入图片描述

进去页面会自动调用getAll方法—》这个操作主要是查询全部的操作

在这里插入图片描述
这样写就可以了,对应的前端代码基本上已经写过了,不用在写了

在这里插入图片描述

这样就可以了

我们开始第二个操作,就是添加操作

我们主要看有没有调用save方法就可以了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就是调用了

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

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/484439.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins+github+springboot自动部署

背景: 最近看流水线有点意思,就说自己也搞一套。 预期效果: idea提交代码后,GitHub接收,jenkins自动部署。【后续加个自动部署时的代码检查、单元测试、安全测试、sonarqube】 思路分析: idea上的spring代码push到gi…

RabbitMQ 客户端 连接、发送、接收处理消息

RabbitMQ 客户端 连接、发送、接收处理消息 一. RabbitMQ 的机制跟 Tcp、Udp、Http 这种还不太一样 RabbitMQ 服务,不是像其他服务器一样,负责逻辑处理,然后转发给客户端 而是所有客户端想要向 RabbitMQ服务发送消息, 第一步&a…

MSSQL2022的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序

MSSQL2022导入Excel的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序 一、导入情况二、问题发现三、问题解决 最近在安装新版SQLServer SSMS 2022后,每次导入Excel都会出现错误提示:未在本地计算机上注册“Microsoft.AC…

GPT 1到4代的演进笔记

1. GPT-1 标题是 Improving Language Understanding by Generative Pre-Training. 发表于 2018.02, 比 bert(发布于 2018.10) 早了半年. 1.1 动机 困难:NLU 任务是多样的, 有 {textual entailment, question answering, semantic similarity assessment, document classifica…

【06】 MySQL 数据表的约束都有哪些?理解与实践

文章目录 1. 主键约束(Primary Key)2. 外键约束(Foreign Key)3. 唯一约束(Unique)4. 非空约束(Not Null)5. 默认值约束(Default)6. 检查约束(Chec…

element-ui的下拉框报错:Cannot read properties of null (reading ‘disabled‘)

在使用element下拉框时,下拉框option必须点击输入框才关闭,点击其他地方报错:Cannot read properties of null (reading disabled) 造成报错原因:项目中使用了el-dropdown组件,但是在el-dropdown里面没有定义el-dropdo…

工业—使用Flink处理Kafka中的数据_ChangeRecord1

使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,当某设备 30 秒状态连续为 “ 预警 ” ,输出预警 信息。当前预警信息输出后,最近30

丹摩征文活动 | AI创新之路,DAMODEL助你一臂之力GPU

目录 前言—— DAMODEL(丹摩智算) 算力服务 直观的感受算力提供商的强大​ 平台功能介绍​ 镜像选择 云磁盘创建 总结 前言—— 只需轻点鼠标,开发者便可拥有属于自己的AI计算王国 - 从丰富的GPU实例选择,到高性能的云磁盘,再到预配置的深度学习…

Java程序调kubernetes(k8s1.30.7)core API简单示例,并解决403权限验证问题,即何进行进行权限授权以及验证

简单记录问题 一、问题描述 希望通过Java程序使用Kubernetes提供的工具包实现对Kubernetes集群core API的调用&#xff0c;但是在高版本上遇见权限验证问题4xx。 <dependency><groupId>io.kubernetes</groupId><artifactId>client-java</artifact…

微信小程序wx.showShareMenu配置全局分享功能

在app.js文件中配置如下即可&#xff1a; onLaunch() {//开启分享功能this.overShare()},/*** 开启朋友圈分享功能* 监听路由切换/自动执行*/overShare() {wx.onAppRoute((res) > {// console.log(route, res)let pages getCurrentPages()let view pages[pages.length - …

生信软件开发1 - 设计一个简单的Windwos风格的GUI报告软件

1. 安装基础库 使用Windows 11标题样式和主题自定义UI窗口库pywinstyles&#xff08;github: https://github.com/Akascape/py-window-styles&#xff09;&#xff0c;结合python自带tkinter库设计一个报告GUI软件。 pip install pywinstyles2. 设计一个简单的Windwos风格的G…

【PlantUML系列】类图(一)

目录 一、类 二、接口 三、抽象类 四、泛型类 五、类之间的关系 六、添加注释 七、包图 八、皮肤参数 一、类 使用class关键字定义类&#xff0c;类名后跟大括号&#xff0c;声明类的属性和方法。 属性&#xff1a;格式为{visibility} attributeName : AttributeType…

复现SMPLify-X: Ubuntu22.04, Cuda-11.3, GPU=3090Ti

Env: 3090Ti CUDA 最低支持版本需要>cuda-11.1 Ubuntu 22.04 Installation: Installing CUDA11.3 wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run sudo sh cuda_11.3.0_465.19.01_linux.run …

数据库实验7

数据库实验7 0 建立登录名用SSMS工具建立登录名用T-SQL语句建立登录名 1 删除登录名用SSMS工具实现用T-SQL语句实现 2 建立数据库用户用SSMS工具实现用T-SQL语句实现 3 删除数据库用户用SSMS工具实现用T-SQL语句实现 4 管理用户权限用SSMS工具实现用T-SQL语句实现 5 建立用户定…

4.5 TCP 报文段的首部格式

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言1 TCP 报文段的基本结构2 固定部分2.1 源端口与目的端口2.2 序号2.3 确认号2.4 数据偏移2.5 保留字段2.6 控制位2.7 窗口2.8 检验和2.9 紧急指针 3 可变部分3.1 选项3.2 填…

青听云音乐项目总结

前言 先来介绍一下我的项目&#xff1a;青听云音乐&#xff0c;几乎完全参考网易云音乐网页版实现&#xff0c;使用的技术栈有SpringBoot、SpringCloud、Mybatis、Mybatis-Plus、Redis、Elasticsearch、RabbitMQ、Docker&#xff0c;也包括一些小技术的使用&#xff0c;比如 j…

openssl的运用

一、概述 Opssl是一个用于TLS/SSL协议的工具包&#xff0c;也是一个通用密码库。 包含了国密sm2 sm3 sm4&#xff0c;包含了对称加密&#xff0c;非对称加密&#xff0c;单项散列&#xff0c;伪随机、签名&#xff0c;密码交换&#xff0c;证书等一些算法库。 为了深层次的学习…

房屋租赁系统源码 SpringBoot + Vue 实现全功能解析

这是一套使用 SpringBoot 与 Vue 开发的房屋租赁系统源码,站长分析过这套源码,推测其原始版本可能是一个员工管理系统,经过二次开发后,功能被拓展和调整,现已完全适用于房屋租赁业务。 该系统功能完善,涉及房屋销售、租赁管理等。站长在测试部署过程中,发现源码结构清晰…

工业齐套管理虚拟现实仿真模拟软件

工业齐套管理虚拟现实仿真模拟软件是与法国最大的汽车制造商合作开发的一款虚拟现实仿真模拟软件&#xff0c;借助身临其境的虚拟现实环境&#xff0c;无需停止生产线&#xff0c;即可模拟仓库和提货区域。 工业齐套管理虚拟现实仿真模拟软件不仅适用于汽车工业&#xff0c;安全…

基于python爬虫的智慧人才数据分析系统

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 废话不多说&#xff0c;先看效果图 更多效果图可私信我获取 源码分享 import os import sysdef main():"""Run administrative tasks."""os.environ.setdefault(DJANGO…