Spring Boot入门指南:轻松构建高效Spring应用(三)

一.创建Spring Boot 的项目方式

1.在IDEA中通过下载插件来创建

具体创建方式查看Spring Boot入门指南:轻松构建高效Spring应用(二)-CSDN博客

2.通过官方Spring | Home来创建。

 

参照idea创建的项目(在idea创建项目时其实也是实时从官网拿来的)

 

3.阿里云创建

因为spring官网的服务器在外网,阿里云作为镜像服务器可以访问快些Cloud Native App Initializer (aliyun.com)

4.不基于任何页面和插件进行创建

创建空的Maven项目,自己写依赖,启动类。

二.修改IDEA中的JDK版本方式

1.

 2.

3. 

 JDK版本对Spring Boot版本的影响主要体现在兼容性方面。

三.Spring Web MVC

1.什么是Spring Web MVC

官网的描述是:SpringWebMVC是基于ServletAPI构建的原始Web框架,从⼀开始就包含在Spring框架中。它的正式名称“SpringWebMVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为Spring MVC。

Q:什么是Servlet?

A:Servlet是⼀种实现动态⻚⾯的技术,准确来讲Servlet是⼀套JavaWeb开发的规范,或者说是⼀套JavaWeb开发的技术标准.只有规范并不能做任何事情,必须要有⼈去实现它.所谓实现Servlet规范,就是真正编写代码去实现Servlet规范提到的各种功能,包括类、⽅法、属性等.
Servlet规范是开放的,除了Sun公司,其它公司也可以实现Servlet规范,⽬前常⻅的实现了Servlet规范的产品包括Tomcat、Weblogic、Jetty、Jboss、WebSphere等,它们都被称为Servlet容器".Servlet容器⽤来管理程序员编写的Servlet类.

简述:Spring Web MVC是⼀个Web框架。

2.MVC定义

MVC是ModelViewController的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分。

  • View(视图)指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.
  • Model(模型)是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.
  • Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型 。

⽐如去饭店吃饭
客⼾进店之后,服务员来接待客⼾点餐,客⼾点完餐之后,把客⼾菜单交给前厅,前厅根据客⼾菜单给后厨下达命令.后厨负责做饭,做完之后,再根据菜单告诉服务员,这是X号餐桌客⼈的饭.
在这个过程中。
服务员就是View(视图):负责接待客⼾,帮助客⼾点餐,以及给顾客端饭
前厅就是Controller(控制器):根据⽤⼾的点餐情况,来选择给哪个后厨下达命令.
后厨就是Model(模型):根据前厅的要求来完成客⼾的⽤餐需求

3.什么是Spring MVC

MVC是⼀种架构设计模式,也⼀种思想,⽽SpringMVC是对MVC思想的具体实现.除此之外,Spring MVC还是⼀个Web框架.
总结来说,SpringMVC是⼀个实现了MVC模式的Web框架.

 所以,SpringMVC主要关注有两个点:

  • MVC
  • Web框架

SpringMVC全称是Spring Web MVC 。

SpringBoot只是实现SpringMVC的其中⼀种⽅式⽽已.
SpringBoot可以添加很多依赖,借助这些依赖实现不同的功能.SpringBoot通过添加SpringWeb MVC框架,来实现web功能.

4.学习SpringMVC

1.既然是Web框架,那么当⽤⼾在浏览器中输⼊了url之后,我们的SpringMVC项⽬就可以感知到⽤⼾的请求,并给予响应。

现在学习如何通过浏览器和⽤⼾程序进⾏交互。

主要分以下三个⽅⾯:

  1. 建⽴连接:将⽤⼾(浏览器)和Java程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring程序。
  2. 请求:⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数的功能.
  3. 响应:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾,也就是响应.
     

对于SpringMVC来说,掌握了以上3个功能就相当于掌握了SpringMVC.

创建项目的前期工作不赘述了,直接开始。

1.RequestMapping注解建立连接 

在SpringMVC中使⽤

@RequestMapping

来实现URL路由映射,也就是浏览器连接程序的作⽤.

@RequestMapping是SpringWebMVC应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的.

表⽰服务收到请求时,路径为/sayHi的请求就会调⽤sayHi这个⽅法的代码.
路由映射:当⽤⼾访问⼀个URL时,将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射

用法:

既可以修饰类,又可以修饰方法。

 1.修饰方法(访问路径+方法路径)

修饰类和方法时。(访问路径是 类路径 +方法路径)

 2.RequestMapping支持get请求和post请求。

使用Filddler抓包工具查看。

查看get请求:还是运行以上代码。

查看post请求在static包下写一个html,将表单内容用post的方式提交到url。

路径直接是hhh.html即可

四.Postman介绍

从上⾯的案例中,也发现了⼀个新的问题,就是我们测试后端⽅法时,还需要去写前端代码.

比如我要测试RequestMapping是否支持post的请求,还有写hhh.html前端代码测试.

这对我们来说,是⼀件麻烦⼜痛苦的事情.
随着互联⽹的发展,也随着项⽬难度的增加,企业也按照开发的功能,把⼈员拆分成了不同的团队.界⾯显⽰交给"前端开发⼯程师",业务逻辑的实现交给"后端开发⼯程师".
后端开发⼯程师,不要求也不需要掌握前端技能了.
那后端开发⼯程师,如何测试⾃⼰的程序呢?--使⽤专业的接⼝测试⼯具Postman,接下来我们来学习Postman的使⽤.

我把路径放入,下面的方框可以展示状态码,响应时间等

1.传参介绍

1.普通传参

普通传参,也就是通过查询字符串来传参。

学习HTTP环节时,我们通过URL来访问互联⽹上的某⼀个资源

其中,查询字符串就是请求的参数。

2.form-data

完整表⽰为:multipart/form-data);

表单提交的数据,在form标签中加上enctyped="multipart/form-data",通常⽤于提交图⽚/⽂件.

对应 Content-Type: multipart/form-data.

3.x-www-form-urlencoded 

form表单,对应 content-Type: application/x-www-from-urlencoded.

4.raw

可以上传任意格式的⽂本,可以上传text、json、xml、html等.

2.传递参数

1.传递单个参数

 两个名称必须一致,否则接收不到 ,如图。

2.传递多个参数 

url传递多个参数用&。

3.传递对象

 如果有客户端传来非常多的参数,难道也要在方法体写入这么多参数吗?

当然可以,但是这显得代码很臃肿难看,可以通过传递对象解决多参数问题。

参数⽐较多时,⽅法声明就需要有很多形参.并且后续每次新增⼀个参数,也需要修改⽅法声明.我们不妨把这些参数封装为⼀个对象.

SpringMVC也可以⾃动实现对象参数的赋值,⽐如Person对象:

在IDEA创建一个Person类对象先。

内容:如下

package com.example.demo;

public class Person {
    private String name;
    private Integer id;
    private String passwords;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getPasswords() {
        return passwords;
    }

    public void setPasswords(String passwords) {
        this.passwords = passwords;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", id=" + id +
                ", passwords='" + passwords + '\'' +
                '}';
    }
    
}

在调用方接口的定义:

展示:

4.后端参数重命名(后端参数映射)

比如客户端传来两个参数,name1和name2,对于后端的小朋友不友好,因为不知道是用户名称还是商品名称。可以用

@RequestParam

这个注解来对参数重命名。同时逻辑使用的也是自己的参数重命名。

还可以用来设置参数非必传。

得出结论:

使⽤@RequestParam进⾏参数重命名时,请求参数只能和声明的名称⼀致,才能进⾏参数绑定和赋值.
使⽤@RequestParam进⾏参数重命名时,参数就变成了必传参数
.。

5.非必传参数设置

 6.补充

关于基础类型和包装类型(后端使用int或是Integer接收参数情况不同)

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 04:36:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 04:36:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 04:36:01       45 阅读
  4. Python语言-面向对象

    2024-07-23 04:36:01       55 阅读

热门阅读

  1. 解决云服务器CPU占用率接近100%问题

    2024-07-23 04:36:01       18 阅读
  2. js进阶之作用域、函数进阶以及解构赋值

    2024-07-23 04:36:01       14 阅读
  3. 代码随想录第十六天|贪心算法(2)

    2024-07-23 04:36:01       18 阅读
  4. 为什么要有指针和引用类型?

    2024-07-23 04:36:01       15 阅读
  5. redis

    redis

    2024-07-23 04:36:01      19 阅读
  6. Android init.rc的启动流程

    2024-07-23 04:36:01       20 阅读
  7. HormonyOS第一课第八章习题答案

    2024-07-23 04:36:01       13 阅读