基于注解的 SpringMVC

news2024/11/15 12:06:34

SpringMVC

  • SpringMVC
    • 使用SpringMVC的两个配置@EnableWebMVC 和 ACWAC
    • SpringMVC执行流程
    • 接收请求参数
      • Postman 发包工具()
      • get 请求---简单类型数据(基本数据类型和String)
      • get 请求---对象类型数据
      • get 请求---数组类型
      • get 请求 --- 集合类型 @RequestParam
      • get 请求 --- 日期类型 @DateTimeFormat
      • post 请求 --- 请求体类型 @RequestBody
      • 请求---路径参数 @Pathvariable
      • @RequestParam的三个应用场景
      • 总结
  • 全局异常处理器
    • 两个注解 @RestControllerAdvice 和 @ ExceptionHandler
  • Restful 风格
    • Restful四种方式(注解)
  • 注解总结(十四)

SpringMVC

介绍:
SpringMVC将Servlet一些通用功能进行了抽取和封装,使用它之后,代码主要有两部分组成:
前端控制器:由SpringMVC提供,主要负责接收参数和返回数据(在进入控制层之前的位置 会先经过前端控制器 再 到 控制层 返回数据时在控制层之后)
处理器:由程序员编写,主要负责参数的处理和业务层调用,可以理解为自己所写的业务逻辑代码
还有视图解析器等,视图解析器可以搭配JSP使用,但是现在不用JSP,也不用表单提交,就不对视图解析器做过多解释
在这里插入图片描述

使用SpringMVC的两个配置@EnableWebMVC 和 ACWAC

需要在这个config包下添加SpringMVC的初始化类和在配置类(有@Component修饰的类)中添加 @EnableWebMVC注解 加载SpringMVC,在初始化类中继承ADSI父类重写3个方法,可以创建SpringMVC容器 配置要处理请求的路径 创建Spring容器
在这里插入图片描述
在这里插入图片描述

SpringMVC执行流程

@RequestMapping注解的作用是接收前端请求,有两个重要的属性 value 和 method
@RsponseBody注解的作用是声明返回前端的数据为Json类型
@Controller 和 @RsponseBody 可以进行合并 @RestController 用在类上表明类中的所有方法均返回前端json格式的数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接收请求参数

Postman 发包工具()

这里介绍一个小工具Postman 可以发送 get post put delete 请求 ,模拟前端请求,
可以携带参数或请求体,这样救不用写表单来进行测试了

get 请求—简单类型数据(基本数据类型和String)

在这里插入图片描述

get 请求—对象类型数据

在这里插入图片描述

get 请求—数组类型

在这里插入图片描述

get 请求 — 集合类型 @RequestParam

在这里插入图片描述

get 请求 — 日期类型 @DateTimeFormat

在这里插入图片描述

post 请求 — 请求体类型 @RequestBody

在这里插入图片描述

请求—路径参数 @Pathvariable

在这里插入图片描述

@RequestParam的三个应用场景

在这里插入图片描述
应该也可以给集合起别名(参考Mybatis中 的@Param注解猜想)

总结

在这里插入图片描述
@RequestMapping 如果不指定method属性 默认接收所有请求类型

全局异常处理器

就是在controller层之前不进行异常的处理,所有的异常都会向上层抛出,直到抛到控制层为止,全局异常处理器会对控制层中的异常进行处理,

两个注解 @RestControllerAdvice 和 @ ExceptionHandler

@RestControllerAdvice 标注在上,声明当前类是一个用于专门处理异常的类
@ExceptionHandler 标注在方法上,声明当前方法可以处理哪些异常
在这里插入图片描述

Restful 风格

Restful风格是一种通过请求方式和请求路径确定方法的方式,避免了一些请求方法的暴露,提高了安全性和简洁性

REST是一种软件架构风格,其强调HTTP应当以资源为中心[在请求地址中尽量的不要出现动词]。
REST使用不同的请求方式表示不同的操作操作: GET(获取)、POST(新建)、PUT(更新)、DELETE(删除)
在这里插入图片描述

Restful四种方式(注解)

@GetMapping 相当于@RequestMapping( method = RequestMethod.GET) 常用与查询请求 可以与路径参数方式搭配使用
@PostMapping
@PutMapping
@DeleteMapping

ps:get 方式 和 delete 方式 不能携带请求体 要想获取必须通过将数据作为参数的形式传到后端
路径参数也可以传递数组形式的参数 接收不定长的数组的时候前端可以通过集合接收

注解总结(十四)

@EnableWebMVC
@RequestMapping
@Resonpse
@RestController
@RequestParam
@DateTimeFormat
@RequestBody
@Pathvariable
@RestControllerAdvice
@ ExceptionHandler
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 面试题 内存泄露的原因 二

🔥 什么是内存泄漏 🔥 在Android开发过程中,当一个对象已经不需要再使用了,本该被回收时,而另个正在使用的对象持有它引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中&#…

关于提示词 Prompt

Prompt原则 原则1 提供清晰明确的指示 注意在提示词中添加正确的分割符号 prompt """ 请给出下面文本的摘要&#xff1a; <你的文本> """可以指定输出格式&#xff0c;如&#xff1a;Json、HTML提示词中可以提供少量实例&#xff0c;…

漏洞发现-BurpSuite插件-Fiora+Fastjson+Shiro

BurpSuite插件安装 插件&#xff1a;Fiora Fiora是LoL中的无双剑姬的名字&#xff0c;她善于发现对手防守弱点&#xff0c;实现精准打击。该项目为PoC框架nuclei提供图形界面&#xff0c;实现快速搜索、一键运行等功能&#xff0c;提升nuclei的使用体验。 该程序即可作为burp插…

剑指Offer 43. !! 1~n 整数中 1 出现的次数

剑指 Offer 43. 1&#xff5e;n 整数中 1 出现的次数 困难 446 相关企业 输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的数字有1、10、11和12&#xff0c;1一共出现…

【LeetCode】160.相交链表

题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结…

OpenLayers入门,OpenLayers鼠标移动事件使用,实现鼠标移动到点位上方后高亮显示点位要素

专栏目录: OpenLayers入门教程汇总目录 前言 本章主要讲解OpenLayers鼠标移动事件的使用,并简单实现鼠标移动到点位上方后高亮显示点位要素的功能,带领大家快速上手OpenLayers鼠标移动事件的应用。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖…

勒索病毒最新变种.locked勒索病毒来袭,如何恢复受感染的数据?

引言&#xff1a; 在数字时代&#xff0c;黑客们的阴谋不断蔓延&#xff0c;其中.locked勒索病毒是备受关注的黑暗力量。它们犹如黑夜中的黑暗之星&#xff0c;迅速将用户的数据加密&#xff0c;要挟赎金。本文91数据恢复将深入揭示.locked勒索病毒的独特之处&#xff0c;并探…

C++设计模式::代理模式(combination)-可运行

实现: 1) cImage:抽象类; cImageReal:派生类, 不可直接实例化; cImageProxy:派生代理类, 可直接实例化用来代理cImageReal; NOTICE:派生代理类用来简化对特定派生类的使用. 使用: 实例化代理类, 然后使用. 1) 设计框架 /*image.hpp*/ #pragma once #…

解决Django报错 : No module named ‘MySQLdb‘

Django的版本是2.0&#xff0c;Python的版本号是3.6.4 在models.py创建好了模型类之后使用命令&#xff1a;python manage.py makemigrations 进行迁移&#xff0c;但是突然报错&#xff1a;ImportError:No module named MySQLdb 查询了相关资料发现python2.x版本是支持mysql…

条款38:对变化多端的线程句柄析构函数行为保持关注

条款37解释过&#xff0c;可联结的线程对应着一个底层系统执行线程&#xff0c;未推迟任务&#xff08;参见条款36&#xff09;的期值和系统线程有类似关系。这么一来&#xff0c;std::thread型别对象和期值对象都可以视作系统线程的句柄。 从这个视角来看&#xff0c;std::th…

springboot中配置bpmsjs插件-activiti7流程图绘制插件/IDEA中运行bpmnjs

BPMNJS的安装和使用需要依赖nodejs插件,需要先安装NODEJS,因为bpmnjs插件的运行需要使用到NODEJS中的npm命令。 安装nodejs 安装和使用bpmnjs插件,绘制activiti工作流需要的流程图。 1、安装和配置nodejs 2.1、下载nodejs https://nodejs.org/en 1.2、安装nodejs,默认安…

基于 Docker 的深度学习环境:Windows 篇

本篇文章&#xff0c;我们聊聊如何在 Windows 环境下使用 Docker 作为深度学习环境&#xff0c;以及快速运行 SDXL 1.0 正式版&#xff0c;可能是目前网上比较简单的 Docker、WSL2 配置教程啦。 写在前面 早些时候&#xff0c;写过一篇《基于 Docker 的深度学习环境&#xff…

C++设计模式::享元模式(combination)-可运行

实现: 1) cShape:抽象接口; cShape*:具体实现的接口; 2) cFactory:按照传入参数color来区别对象, 如果已经创建过, 那就返回已有的, 否则创建新的. 使用: 传入参数, 获取被创建的对象(创建尽可能少的对象) 1) 设计框架 /*shape.hpp*/ #pragma once #if…

CSS伪元素详解以及伪元素与伪类的区别

伪元素常常被误解为伪类&#xff0c;主要在于他们的语法相似&#xff0c;都是对于选择器功能的扩展&#xff0c;相似程度很高导致被混淆。 本文通过详细介绍伪元素和常见的使用方法&#xff0c;最后也会分析下伪元素与伪类的基本区别。 基本描述 CSS伪元素也是应用于选择器的…

渗透测试:Linux提权精讲(一)之sudo方法第一期

目录 写在开头 CVE-2019-14287 sudo apt和sudo apt-get sudo apache2 sudo ash sudo awk sudo base32/58/64/nc/z sudo cp sudo cpulimit sudo curl sudo date sudo dd sudo dstat sudo ed sudo env sudo exiftools 总结与思考 写在开头 在进行渗透测试获取…

sql server表值函数

一、创建测试表 Employees 二、创建表值函数 -- DROP FUNCTION TableIntSplit;CREATE FUNCTION TableIntSplit(Text NVARCHAR(4000),Sign NVARCHAR(4000)) RETURNS tempTable TABLE(Id INT ) AS BEGIN DECLARE StartIndex INT DECLARE FindIndex INT DECLARE Content VARCHAR(…

浅谈 Spring AOP 思想

Spring AOP AOP 切面编程普通代理类JDK动态代理Cglib动态代理AOPAOP术语AOP切面编程的优势Advice通知类型&#xff08;5种&#xff09;通知的执行顺序 Order切入点表达式表达式execution注解annotation Spring事务管理Transactional 及 Transactional 的两个属性Transactional …

AR开发平台 | 探索AR技术在建筑设计中的创新应用与挑战

随着AR技术的不断发展和普及&#xff0c;越来越多的建筑师开始探索AR技术在建筑设计中的应用。AR(增强现实)技术可以通过将虚拟信息叠加到现实场景中&#xff0c;为设计师提供更加直观、真实的建筑可视化效果&#xff0c;同时也可以为用户带来更加沉浸式的体验。 AR开发平台广…

SpringBoot项目连接数据库

1、找到applications.yml&#xff0c;如下图 2、写入代码 server:port: 9494spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/自己的数据库表名?serverTimezoneGMT%2b8username: rootpassword: root

短视频矩阵源码开发搭建分享--多账号授权管理

目录 文章目录 前言 一、矩阵号系统是什么&#xff1f; 二、使用步骤 1.创建推广项目 2.多账号授权 3.企业号智能客服系统 总结 前言 短视频多账号矩阵系统&#xff0c;通过多账号一键授权管理的方式&#xff0c;为运营人员打造功能强大及全面的“矩阵式“管理平台。…