当前位置: 首页 > news >正文

Day7 | Java框架 | SpringMVC

Day7 | Java框架 | SpringMVC

  • SpringMVC简介
    • SpringMVC 概述
    • 入门案例
    • 入门案例工作流程分析
    • Controller 加载控制与业务bean加载控制(SpringMVC & Spring)
    • PostMan
  • 请求与响应
    • 请求映射路径
    • 请求方式(不同类型的请求参数):@RequestParam
    • 传递 json 数据
    • 日期型参数传递
    • 响应
  • REST风格
    • 简介
    • RESTful 入门案例
    • REST 快速开发
    • 案例:基于RESTful数据交互
  • SSM整合
    • SSM整合:整合配置、功能模块开发、接口测试
      • Spring 整合 MyBatis
      • Spring 整合 SpringMVC
    • 表现层数据封装
    • 异常处理器
      • SpringMVC 提供了异常处理器
      • 项目异常处理方案
    • 案例:SSM整合标准开发-前后台协议联调
  • 拦截器
    • 概念
    • 入门案例:配置
    • 拦截器执行顺序
    • 拦截器参数
    • 拦截器链配置

视频链接:黑马程序员SSM框架教程-SpringMVC

学习目标

  • 掌握基于 SpringMVC 获取请求参数与响应 json 数据操作
  • 熟练应用基于 REST 风格的请求路径设置与参数传递
  • 能够根据实际业务建立前后端开发通信协议并进行实现
  • 基于 SSM 整合技术开发任意业务模块功能

SpringMVC简介

在这里插入图片描述

  • 表现层拿到业务层返回的数据之后,将其转换成 json 格式发送给前端页面
  • 前端页面接收数据,将其解析成用户最终浏览的页面信息,交给浏览器

技术栈

  • 后端服务器
    • 数据层实现:JDBC → MyBatis 框架(加速开发)
    • 表现层开发:Servlet → SpringMVC 框架

SpringMVC 概述

  • SpringMVC 是一种基于 Java 实现 MVC 模型的轻量级 Web 框架
  • 优点:相比于Sevlet,使用简单,开发便捷;灵活性强

入门案例

  1. 导入 SpringMVC 坐标与 Servlet 坐标
    在这里插入图片描述

  2. 创建 SpringMVC 控制器类(等同于 Servlet 功能)

    用于处理请求
    在这里插入图片描述

  3. 初始化 SpringMVC 环境(同Spring环境),设定 SpringMVC 加载对应的 bean
    在这里插入图片描述

  4. 初始化 Servlet 容器,加载 SpringMVC 环境,并设置 SpringMVC 技术处理的请求
    在这里插入图片描述

涉及的注解

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

SpringMVC 入门程序开发总结

在这里插入图片描述

在这里插入图片描述

AbstractDispatcherServletInitializer 类

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

入门案例工作流程分析

在这里插入图片描述

Controller 加载控制与业务bean加载控制(SpringMVC & Spring)

在这里插入图片描述

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

PostMan

PostMan是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件

  • 作用:常用于及进行接口测试(模拟网页发送各种各样的请求)
  • 特征:简单、实用、美观、大方
  • 基本使用:注册登录–>创建工作空间/进入工作空间–>发送请求测试结果

请求与响应

请求映射路径

团队多人开发,每人设置不同的请求路径。冲突问题如何解决? --> 设置模块名作为请求路径前缀

在这里插入图片描述

PostMan 发送携带参数 GET 请求

在这里插入图片描述

PostMan 发送携带参数 POST 请求

在这里插入图片描述

SpringMVC解决POST请求中文乱码问题

在这里插入图片描述

请求方式(不同类型的请求参数):@RequestParam

请求方式
请求参数

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

在这里插入图片描述

在这里插入图片描述

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

传递 json 数据

具体操作看视频:json 数组、json 对象(POJO)、json 数组(POJO)

  1. 接收请求中的 json 数据
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 注解
    在这里插入图片描述

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

日期型参数传递

在这里插入图片描述

注解
在这里插入图片描述

类型转换器

在这里插入图片描述

响应

在这里插入图片描述

注解

在这里插入图片描述
类型转换器:将对象数据转换成 JSON 返回出去
在这里插入图片描述

REST风格

简介

即,访问网络资源的格式。
在这里插入图片描述

在这里插入图片描述

RESTful 入门案例

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

REST 快速开发

在这里插入图片描述

简化为如下形式:

注解

在这里插入图片描述

标准请求动作映射(4种)

在这里插入图片描述

案例:基于RESTful数据交互

  • 先做后台功能,开发接口并调通接口
  • 再做页面异步调用,确认功能可以正常访问
  • 最后完成页面数据展示
  • 补充:放行静态资源访问
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

SSM整合

SSM整合:整合配置、功能模块开发、接口测试

在这里插入图片描述

Spring 整合 MyBatis

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

Spring 整合 SpringMVC

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

表现层数据封装

即,前后端联调协议。配合业务将数据整理成统一格式,反馈给前端页面,再由前端页面的人员进行解析。

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

异常处理器

在这里插入图片描述

  • 各个层级均出现异常,异常处理代码书写在哪一层?–>** 所有的异常均抛出到表现层进行处理**
  • 表现层处理异常,每个方法中单独书写,代码书写量巨大且意义不强,如何解决?–>AOP思想

SpringMVC 提供了异常处理器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

项目异常处理方案

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

在这里插入图片描述

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

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

案例:SSM整合标准开发-前后台协议联调

在这里插入图片描述

详细请看视频教程。

拦截器

概念

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

入门案例:配置

  1. 制作拦截器功能类
  2. 配置拦截器的执行位置

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

拦截器执行顺序

在这里插入图片描述

拦截器参数

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

拦截器链配置

在这里插入图片描述

相关文章:

Day7 | Java框架 | SpringMVC

Day7 | Java框架 | SpringMVC SpringMVC简介SpringMVC 概述入门案例入门案例工作流程分析Controller 加载控制与业务bean加载控制(SpringMVC & Spring)PostMan 请求与响应请求映射路径请求方式(不同类型的请求参数)&#xff1…...

【网络通信基础与实践第二讲】包括互联网概述、互联网发展的三个阶段、互联网的组成、计算机网络的体系结构

一、互联网概述 计算机网络是由若干节点(node)和连接这些节点的链路(link)组成。 网络之间还可以通过路由器互联起来,这就构成了一个覆盖范围更大的计算机网络。这样的网络称为互联网。 网络把许多计算机连接在一起…...

CentOS7下安装Ruby3.2.4的实施路径

一、CentOS版本 [userzt ~]$ cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31" CPE…...

Redis 实现原理或机制

Redis 是一个高性能的、基于内存的键值对存储系统,广泛用于缓存、会话管理、排行榜和消息队列等场景。它的高效性得益于其独特的实现原理和机制,Redis支持丰富的数据结构和多种持久化、复制、集群和发布/订阅功能,提供了灵活性和高可用性。 …...

使用程序方式获取与处理MySQL表数据

8.1  执行多条语句获取 MySQL 表数据 8.1.1  MySQL 中的常量 8.1.2  MySQL 中的变量 1.用户变量 用户可以在表达式中使用自己定义的变量,这样的变量称为用户变量。 用户变量在使用前必须定义和初始化,如果使用没有初始化的变量&#x…...

计算机网络(五) —— 自定义协议简单网络程序

目录 一,关于“协议” 1.1 结构化数据 1.2 序列化和反序列化 二,网络版计算器实现准备 2.1 套用旧头文件 2.2 封装sock API 三,自定义协议 3.1 关于自定义协议 3.2 实现序列化和反序列化 3.3 测试 三,服务器实现 3.1…...

开源模型应用落地-qwen2-7b-instruct-LoRA微调-unsloth(让微调起飞)-单机单卡-V100(十七)

一、前言 本篇文章将在v100单卡服务器上,使用unsloth去高效微调QWen2系列模型,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 使用unsloth能够使模型的微调速度提高 2 - 5 倍。在处理大规模数据或对时间要求较高的场景下,…...

[数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):138 标注数量(xml文件个数):138 标注数量(txt文件个数):138 标注类别…...

Delphi 的 RSA 库 LockBox

LockBox 是用于 Delphi 的一套加密/解密控件 最早是一套商业控件,后来开源了。再后来,又有一个新版本的 LockBox,和旧版本完全不同。 旧版本的 LockBox 叫 LockBox 2;新版本的叫 LockBox 3。 这两个控件,都可以通过…...

element UI学习使用(1)

https://element.eleme.cn/2.6/#/zh-CN/component/container vue模块库&#xff0c;可复制直接使用 1、搜索框、下拉搜索框 <el-form :inline"true" class"demo-form-inline"><el-form-item label"结果搜索"><el-inputplaceho…...

如何搞定日语翻译?试试这四款工具

写一篇字数800-1000字的软文&#xff0c;用翻译新手的角度分享福昕翻译在线、福昕翻译客户端、海鲸AI翻译以及彩云翻译在翻译日语时候的表现&#xff0c;要求口语化表达。 最近对于一些轻小说突然感兴趣了&#xff0c;所以我开始尝试各种翻译工具来帮助我搞定日语翻译。今天&am…...

【STM32】独立看门狗(IWDG)原理详解及编程实践(上)

本篇文章是对STM32单片机“独立看门狗&#xff08;IWDG&#xff09;”的原理进行讲解。希望我的分享对你有所帮助&#xff01; 目录 一、什么是独立看门狗 &#xff08;一&#xff09;简介 &#xff08;二&#xff09;、独立看门狗的原理 &#xff08;三&#xff09;、具体操…...

前端框架大观:探索现代Web开发的基石

目录 引言 一、前端框架概述 二、主流前端框架介绍 2.1 React 2.1.1 简介 2.1.2 特点 2.1.3 代码示例 2.2 Vue.js 2.2.1 简介 2.2.2 特点 2.2.3 代码示例 2.3 Angular 2.3.1 简介 2.3.2 特点 2.3.3 代码示例 三、其他前端框架与库 四、前端框架的选择 五、结…...

16 训练自己语言模型

在很多场景下下&#xff0c;可能微调模型并不能带来一个较好的效果。因为特定领域场景下&#xff0c;通用话模型过于通用&#xff0c;出现多而不精。样样通样样松&#xff1b;本章主要介绍如何在特定的数据上对模型进行预训练&#xff1b; 训练自己的语言模型&#xff08;从头开…...

udp网络通信 socket

套接字是实现进程间通信的编程。IP可以标定主机在全网的唯一性&#xff0c;端口可以标定进程在主机的唯一性&#xff0c;那么socket通过IP端口号就可以让两个在全网唯一标定的进程进行通信。 套接字有三种&#xff1a; 域间套接字&#xff1a;实现主机内部的进程通信的编程 …...

LG AI研究开源EXAONE 3.0:一个7.8B双语语言模型,擅长英语和韩语,在实际应用和复杂推理中表现出色

EXAONE 3.0介绍&#xff1a;愿景与目标 EXAONE 3.0是LG AI研究所在语言模型发展中的一个重要里程碑&#xff0c;特别是在专家级AI领域。 “EXAONE”这个名称源自于“ EX pert A I for Every ONE”&#xff0c;反映了LG AI研究所致力于将专家级别的人工智能能力普及化的承诺。这…...

【mysql】mysql之主从部署以及介绍

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

Invoke-Maldaptive:一款针对LDAP SearchFilter的安全分析工具

关于Invoke-Maldaptive MaLDAPtive 是一款针对LDAP SearchFilter的安全分析工具&#xff0c;旨在用于对LDAP SearchFilter 执行安全解析、混淆、反混淆和安全检测。 其基础是 100% 定制的 C# LDAP 解析器&#xff0c;该解析器处理标记化和语法树解析以及众多自定义属性&#x…...

QT 读取Excel表

一、QAxObject 读取excel表的内容&#xff0c;其仅在windows下生效&#xff0c;当然还有其他跨平台的方案。 config qaxcontainer #include <QAxObject>QStringList GetSheets(const QString& strPath) {QAxObject* excel new QAxObject("Excel.Application&…...

深入理解 Vue 组件样式管理:Scoped、Deep 和 !important 的使用20240909

深入理解 Vue 组件样式管理&#xff1a;Scoped、Deep 和 !important 的使用 在前端开发中&#xff0c;样式的管理与组件化开发之间的平衡一直是一个难题。Vue.js 提供了一些强大的工具来帮助开发者在开发复杂的应用时管理样式。这篇文章将详细介绍 Vue 中的 scoped、:deep() 和…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置&#xff1a;遍历整个矩阵&#xff0c;找出所有值为 0 的元素&#xff0c;并将它们的坐标记录在数组zeroPosition中置零操作&#xff1a;遍历记录的所有 0 元素位置&#xff0c;将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...