当前位置: 首页 > 编程日记 > 正文

Spring Boot 2.X 对 web 的开发支持(二)

  • Spring Boot 2.X 对 web 的支持开发

    上章节的 Spring Boot 的入门案例,我们感受到 Spring Boot 简单的配置即可运行项目。

    今天了解 Spring Boot 对 web 的支持。

    Spring Boot 对 Web 开发的支持很全面,包括开发、测试和部署阶段都做了支持。spring-boot-starter-web
    是 Spring Boot 对 Web 开发提供支持的组件,主要包括 RESTful,参数校验、使用 Tomcat 作为内嵌容器器等功能。

  • Spring Boot 2.X 常用注解说明
    get: 查询一些信息                       post:提交一些需要服务器保存的信息
    put: 更新,更新一些用户信息           delete:删除信息
    @GetMapping = @RequestMapping(method = RequestMethod.GET)
    @PostMapping = @RequestMapping(method = RequestMethod.POST)
    @PutMapping = @RequestMapping(method = RequestMethod.PUT)
    @DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)eg: @RequestMapping(value="/user",method = RequestMethod.GET)等同于 @GetMapping(value = "/user")如果指定以 Post 的方式去请求,然后使用 Get 的方式(或其他非 post 请求方式)去请求的话,则会报 405 不允许访问的错误。如果不进⾏设置默认两种方式的请求都支持。
  • Spring Boot 对 JSON的支持以及常用 JSON 注解使用

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。现在大部分的数据交互方式都采用 JSON。 而 Spring Boot 对 JSON 支持很完善,在 Web 层仅需要一个注解即可。

    性能:Jackson > FastJson > Gson > Json-lib 同个结构。

    jackson处理相关自动(在实体类字段上使用以下注解)
    指定字段不返回:@JsonIgnore
    指定日期格式:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
    空字段不返回:@JsonInclude(Include.NON_NUll) --->对于字符串类型的不返回,int类型的返回0
    指定别名: @JsonProperty("XXXX")
  • Spring Boot 常见 web 中的传递参数方式

    ① 使用 URL 进行传参:@PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中,如 URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。

    @RequestMapping(value="get/{name}", method=RequestMethod.GET)
    public String get(@PathVariable String name) {return name;
    }
    在浏览器中输入网址:http://localhost:8080/get/Rookie,返回:Rookie,说明 name 值已经成功传入。

    ②数据校验:Web开发中最常见的就是输入数据的校验。

    ​ 在 Spring MVC 中有两种方式可以验证输入:Spring 自带的验证框架和利用 JSR 实现。

    ​ JSR 是一个规范文档,指定了一整套 API,通过标注给对象属性添加约束。

    ​ Hibernate Validator 就是 JSR 规范的具体实现。

    ​ Spring Boot 的参数校验依赖于 hibernate-validator 来进行。

    ​ 使用 Hibernate Validator 校验数据,需要定义一个接收的数据模型,使用注解的形式描述字段校验的 规则。

    实体类:@Getter@Setter@ToString@AllArgsConstructor@NoArgsConstructorpublic class Person {@NotEmpty(message="姓名不能为空")private String name;@Max(value = 100, message = "年龄不能大于100岁")@Min(value= 18 ,message= "必须年满18岁!" )private int age;@NotEmpty(message="密码不能为空")@Length(min=6,message="密码长度不能小于6位")private String pass;}请求接口:@RestControllerpublic class PersonController {@RequestMapping("/savePerson")public void savePerson(@Valid Person person, BindingResult result) {System.out.println("Person:"+person);if(result.hasErrors()){List<ObjectError> errorList = result.getAllErrors();errorList.stream().forEach(error->          System.out.println(error.getCode()+"====="+error.getDefaultMessage()));}}}编写测试类:@Testpublic void savePerson() throws Exception {mockMvc.perform(MockMvcRequestBuilders.post("/savePerson").param("name","").param("age","666").param("pass","test"));}测试结果显示:
    Person:Person(name=, age=666, pass=test)
    Length=====密码长度不能小于6位
    Max=====年龄不能大于100岁
    NotEmpty=====姓名不能为空结果显示已触发了校验规则,返回错误信息。在实际开发过程中可对错误信息进行包装,最后返回到前端展示。@Valid:参数前面添加 @Valid 注解,代表此对象使用了参数校验;
    BindingResult:参数校验的结果会存储在此对象中,可以将错误信息打印出来。
    Hibernate Validator 基本上包含了常用的数据校验,包括校验属性是否为空、长度、大小、特定格式等完整的注解自己查表对比。
  • Spring Boot 常用获取读取配置文件的注解详解
    @PropertySource 指定配置文件位置
    @ConfigurationProperties  标注该注解的类与配置文件进行绑定,通过设置的前缀,来进行属性设置。代码演示:
    Author 类:@Component@PropertySource("author.properties")@ConfigurationProperties(prefix = "author")public class Author {//Value("${author.name}")private String name;//Vlue("${author.age}")private int age;}author.properties 配置文件# 配置作者信息author.name=rookieauthor.age=18启动类:@RestController@SpringBootApplicationpublic class ConfigFileDemoApplication {public static void main(String[] args) {SpringApplication.run(ConfigFileDemoApplication.class, args);}@Autowiredprivate Author author;@GetMapping("/author")public String getAuthor(){return "姓名:"+author.getName()+"==========="+"年龄:"+author.getAge();}}

    因为我们在 Author 类中已经加了 @Component 注解,因此可以将此注解下的类作为 bean 注入到 Spring 容器中,方便使用。

    使用频次最高的就是 @PropertySource & @ConfigurationProperties 配合使用,需要注意的是当在 resources 下再创建 config 文件夹,再将 author.properties 放进 config 文件夹时,需要修改@PropertySource("classpath:config /author.properties") 才可以正确读取配置路径。

    当没使用 @ConfigurationProperties(prefix = "author") 注解的时,要想得到配置文件中属性,则需要结合以下注解进行数据源的配置(以上面 Author 类注释掉的部分为例):

    @Value("${author.name}")
    @Value("${author.age}")

    也可以直接写在 application.properties 中(不建议这么做,但如果是全局变量提倡这种方法),当写在此文件中时,不需要指明资源文件路劲,只需要指明前缀即可。

    @ImportResource 将外部的配置文件加载到程序中来。
    如果要让编写的 Spring 配置文件生效,如 beans.xml,可以使用    @ImportResource 注解,将配置文件导入进来。代码演示:
    Student 类@Getter@Setterpublic class Student {private String name;private String sex;private String phone;}rookie.xml 文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans              http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="student" class="com.rookie.model.Student"><property name="name" value="jack"/><property name="sex" value="男人"/><property name="phone" value="132659896254"/></bean></beans>启动类@RestController@SpringBootApplication@ImportResource(locations = "classpath:rookie.xml")public class ConfigFileDemoApplication {public static void main(String[] args) {SpringApplication.run(ConfigFileDemoApplication.class, args);}@Autowiredprivate Student student;@GetMapping("/student")public String getStudent(){return "姓名:"+student.getName()+"==========="+"性别:"+student.getSex()+"==========="+"手机号:"+student.getPhone();}}

转载于:https://www.cnblogs.com/miantiao312/p/11235420.html

相关文章:

Blender建筑可视化技能学习视频教程

Blender建筑可视化技能学习视频教程 chocofur–Blender2021的内部可视化秘密 大小&#xff1a;28G 1920X1080 mp4 语言&#xff1a;英语 信息: 云桥网络 平台获取教程&#xff01; 了解Blender中完整的内部可视化工作流程是成为一名成功的3D艺术家的关键。向做了十几年的专…

基于DCMTK的DICOM相关程序编写攻略

2008年09月10日 星期三 15:35 基于DCMTK的DICOM相关程序编写攻略 前言&#xff1a; 由于现在的医学影像设备的图像存储和传输正在逐渐向DICOM标准靠拢&#xff0c;在我们进行医学图像处理的过程中&#xff0c;经常需要自己编写和DICOM格式的图像相关的各种程序模块&#xff0c;…

计算机组成考试题及答案,计算机组成测试题一参考答案

计算机组成测试题一参考答案一、填空题(每空1分&#xff0c;共20分)1. 设二进制数X2&#xff0b;100(—0.10101100)&#xff0c;用15个二进制位来表示它的浮点数&#xff0c;阶码用5位&#xff0c;其中阶符用2位&#xff1b;尾数用10位&#xff0c;其中符号用2位(2100中的100为…

典型的垃圾收集算法

上一编&#xff1a;《垃圾回收之标记算法》 &#xff0c;用以确认那些垃圾判定为可以回收。 在确定了哪些垃圾可以被回收后&#xff0c;垃圾收集器要做的事情就是开始进行垃圾回收&#xff0c;但是这里面涉及到一个问题是&#xff1a;如何高效地进行垃圾回收。由于Java虚拟机规…

Oracle10g安装中遇到的错误及解决办法

linux解决xhost: unable to open display实用技巧&#xff1a;在Linux下设置xhost方法步骤 第一步&#xff1a;用root登陆linux&#xff0c;启动vnc服务&#xff1b;第二步&#xff1a;根据vnc起来的端口&#xff0c;设置export DISPLAYlocalhost:1&#xff08;1表示vnc在第一个…

Result Maps collection already contains value for

启动的时候报错&#xff0c;junit报错一样的 Result Maps collection already contains value for mybatis 查了一下应该是 ***mapper.java和 ***mapper.xml解析有问题了&#xff0c; 不能注入了。 按照***mapper.java 里的方法一个一个到***mapper.xml去查 id 结果发现有一个…

创建三维建筑可视化和虚拟现实的最快和最简单的方法

创建三维建筑可视化和虚拟现实的最快和最简单的方法 时长3小时12分 1280X720 Mkv 语言&#xff1a;英语中文字幕&#xff08;根据原英文字幕机译更准确&#xff09;原英文字幕 大小解压后&#xff1a;2.86G 共28小节课程 标题&#xff1a;Skillshare–TWINMOTION实时3d架构可…

刚过国家线计算机考研报哪个好,考研估分刚过了去年国家线,今年上岸还有希望吗?有!...

随着2020年考研成绩的陆续发布&#xff0c;考生们的神经也愈发紧张起来。有很多的同学其实在成绩发布之前&#xff0c;就已经通过网上的答案对自己整体的考试分数有了个大概的估计&#xff0c;于是很多同学乃至是学生家长就想问了&#xff0c;如果估分刚刚过了去年的国家线&…

2022-2028年中国数码摄像机市场投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数码摄像机行业市场行业相关概述、中国数码摄像机行业市场行业运行环境、分析了中国数码摄…

Android中怎么使图片显示

android中经常到利用图片&#xff0c;利用图片时我们都是把图片放在drawable-xxx目录下&#xff0c;因为这里就是存储图片的地方&#xff0c;xxx不用理他&#xff0c;就是关于分辨率而已。 楼主在学习android的时候一直尝试把图片在程序中显示&#xff0c;但是一直不成功&#…

webElement.text()获取到内容为空

使用webElement.text()方法获取字符串时&#xff0c;有时候会获取失败--获取到的内容为空 使用 webElement.getAttribute("attributeName")&#xff0c;通过textContent, innerText, innerHTML等属性获取 public String getText(String string){WebDriverWait wait …

【blender教程】从头到尾全流程创建一辆吉普车

【blender教程】从头到尾全流程创建一辆吉普车 持续时间41小时 30分 包括项目文件 1280X720 MP4 语言&#xff1a;英语中文字幕&#xff08;根据原英文字幕机译更准确&#xff09;原英文字幕 大小解压后&#xff1a;34.7G 云桥网络 平台huo取 教程 blender:从头到尾打造吉普…

Hat’s Words(字典树)

Hat’s Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11314 Accepted Submission(s): 4041 Problem DescriptionA hat’s word is a word in the dictionary that is the concatenation of exactly two…

遥感计算机分类的基本原理,遥感数字图像的计算机分类

《遥感数字图像的计算机分类》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《遥感数字图像的计算机分类(3页珍藏版)》请在人人文库网上搜索。1、遥感数字图像的计算机分类一、实验类型综合型二、实验目的与要求1、实验目的掌握非监督分类的过程和方法。2、实验要求(1…

Java垃圾回收之新生代垃圾收集器

分代收集算法 Stop-the-World&#xff08;停止一切&#xff09; JVM由于要执行GC而停止了应用程序的执行任何一种GC算法中都会发生多数GC优化通过减少Stop-the-world发生时间来提高程序性能 Safepoint &#xff08;安全点&#xff09; 分析过程中对象引用关系不会发生变化的…

用x86的模拟器内核记得安装intel的haxm

Android 模拟器一直以运行速度慢著称&#xff0c; 本文介绍使用 Intel HAXM 技术为 Android 模拟器加速&#xff0c; 使模拟器运行度媲美真机&#xff0c; 彻底解决模拟器运行慢的问题。 Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualizatio…

我焦躁,并不只是心里承受,还是因为我上面担着。

由于工作任务紧、重&#xff0c;最近很焦躁&#xff0c;终于在今天爆发了。在这次爆发中&#xff0c;隐约的感到并不只是自己的“心理承压”能力的问题。 我爆发后&#xff0c;发现虽然任务如此紧张&#xff0c;但是组长只是“紧张”&#xff0c;工作还是“有条有序”的进行着。…

ue4商城资源 Car Configurator Template 汽车配置器模板

ue4商城资源 Car Configurator Template 汽车配置器模板 ue4商城资源 Car Configurator Template 汽车配置器模板 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –Car Configurator Template 4.25 汽车配置器模板 素材大小解压后&#xff1a;0.99G 云桥网络…

Sublime Text 3 常用插件以及安装方法(转)

http://www.cnsecer.com/460.html 安装Sublime Text 3插件的方法&#xff1a; 朋友们&#xff0c;小站活着不容易&#xff0c;全靠广告费养着了&#xff0c;如果本文对你有帮助。麻烦动下手点下页面的广告吧&#xff0c;谢谢&#xff01; 直接安装 安装Sublime text 2插件很方便…

现代计算机基本工作原理,现代计算机的基本工作原理是

现代计算机的基本工作原理是存储程序控制。“计算机”一般是指“电子计算机”&#xff0c;电子计算机(electronic computer)通称电脑&#xff0c;是现代一种用于高速计算的电子计算机器。可以进行数值计算、逻辑计算&#xff0c;具有存储记忆功能&#xff0c;能够按照程序运行&…

Java垃圾回收之老年代垃圾收集器

1、Serial Old 收集器&#xff08;-XX: UseSerialOldGC, 标记-整理算法&#xff09; 单线程收集&#xff0c;进行垃圾收集时&#xff0c;必须暂停所有工作线程简单高效&#xff0c;Client模式下默认的老年代收集器2、Parallel Od收集器(-XX: UseParallelOldGC &#xff0c;标…

linux中awk下 gsub函数用法

gsub函数则使得在所有正则表达式被匹配的时候都发生替换gsub(regular expression, subsitution string, target string);简称 gsub&#xff08;r,s,t)一、遇到的问题&#xff1a;问题&#xff1a;echo "a b c 2011-11-22 a:d" | awk $4gsub(/-/,"",$4)为啥…

Maya2022基础入门学习教程

Maya2022基础入门学习教程 Maya 2022 Essential Training Maya2022基础入门学习教程 Maya 2022 Essential Training MP4 |视频:h264&#xff0c;1280x720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 技能水平:初级|流派:电子学习|语言:英语中文字幕&#xff08;机译&…

简单几何(线段覆盖) POJ 3347 Kadj Squares

题目传送门 题意&#xff1a;告诉每个矩形的边长&#xff0c;它们是紧贴着的&#xff0c;问从上往下看&#xff0c;有几个还能看到。 分析&#xff1a;用网上猥琐的方法&#xff0c;将边长看成左端点到中心的距离&#xff0c;这样可以避免精度问题。然后先求出每个矩形的左右端…

服务器自动post,jquery ajax $.post自动变GET的解决方式(for CI)

环境&#xff1a;CI 3.x windows 2008 phpstudy jquery 1.7.2 apache以往一直用lnmp&#xff0c;这次用windowsapache&#xff0c;遇到了一些问题&#xff0c;记录下来。将本地的文件上传到服务器上以后&#xff0c;有一个将大段html提交到服务器处理的代码&#xff0c;是用…

2022-2028年中国数据中台行业深度调研及投资前景预测报告(全卷)

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数据中台行业市场行业相关概述、中国数据中台行业市场行业运行环境、分析了中国数据中台行…

为什么一定要杀掉病毒?---帮一位老师解决MyDocument.exe优盘文件夹图标病毒问题...

最近一位大学老师给我抱怨了一个她遇到的烦恼&#xff0c;一直在纠结&#xff0c;生活都被打乱了&#xff0c;事情大概是这样的&#xff1a; 她的优盘里辛辛苦苦弄好备课文件&#xff0c;放在了优盘里&#xff0c;可是每次上课时&#xff0c;就是找不到文件。有时好多文件都被修…

微信小程序开发初探

一、关于微信小程序 1.1 小程序诞生的背景 张小龙说道&#xff1a; &#xff08;1&#xff09;一切以用户价值为依归→用户是微信的核心&#xff0c;所以微信中没有很多与客户无关的功能&#xff0c;比如QQ中的乱七八糟一系列东西。 &#xff08;2&#xff09;让创造发挥价值→…

ue4商城资源 The Forest v1.5 森林景观场景

ue4商城资源 The Forest v1.5 森林景观场景 ue4商城资源 The Forest v1.5 森林景观场景 ue4商城资源 The Forest v1.5 森林景观场景 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –The Forest v1.5 森林景观场景 大小解压后&#xff1a;2.62G 云桥网络 平台…

服务器硬盘如何增加分区,服务器硬盘分区方法是什么?

服务器硬盘&#xff0c;顾名思义&#xff0c;就是服务器上使用的硬盘。如果说服务器是网络数据的核心&#xff0c;那么服务器硬盘就是这个核心的数据仓库&#xff0c;所有的软件和用户数据都存储在这里。用户用久了服务器硬盘就可能会出现空间不足的情况&#xff0c;那么应该如…