热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot2X对web的开发支持(二)

Spring-Boot-2-X-对-web-的开发支持(二)SpringBoot2.X对web的支持开发上章节的SpringBoot的入门案例,我们感受到SpringBoot简单的
  • 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
    @NoArgsConstructor
    public 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;
    }请求接口:
    @RestController
    public class PersonController {
    @RequestMapping("/savePerson")
    public void savePerson(@Valid Person person, BindingResult result) {
    System.out.println("Person:"+person);
    if(result.hasErrors()){
    List errorList = result.getAllErrors();
    errorList.stream().forEach(error-> System.out.println(error.getCode()+"====="+error.getDefaultMessage()));
    }
    }
    }

    编写测试类:
    @Test
    public 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=rookie
    author.age=18
    启动类:
    @RestController
    @SpringBootApplication
    public class ConfigFileDemoApplication {
    public static void main(String[] args) {
    SpringApplication.run(ConfigFileDemoApplication.class, args);
    }
    @Autowired
    private 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
    @Setter
    public class Student {
    private String name;
    private String sex;
    private String phone;
    }
    rookie.xml 文件

    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">





    启动类
    @RestController
    @SpringBootApplication
    @ImportResource(locatiOns= "classpath:rookie.xml")
    public class ConfigFileDemoApplication {
    public static void main(String[] args) {
    SpringApplication.run(ConfigFileDemoApplication.class, args);
    }
    @Autowired
    private Student student;
    @GetMapping("/student")
    public String getStudent(){
    return "姓名:"+student.getName()+"==========="+"性别:"+student.getSex()+"==========="+"手机号:"+student.getPhone();
    }
    }


推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
author-avatar
小妖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有