](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)
🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”

Maven核心功能:

1.项目构建

2.管理依赖

  • 对 pom 文件的任意改动都需要刷新 maven

  • 通过 exclude-help 可以帮我们自动添加排除依赖的代码

  • 依赖如果有一样的,按照最短路劲优先原则,如果想要排除掉就可以按照上面的 exclude 方法

Maven 仓库

本地仓库

  • 本地仓库的数据来自远程仓库,如果本地没有就会去远程仓库查找

远程仓库

中央仓库:maven 内置的一个远程仓库地址

中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹. 由 Maven 团队

维护,全球唯⼀.

仓库地址:https://repo1.maven.org/maven2/

可以通过https://mvnrepository.com 这个⽹站来查询并下载

  • 根据需求选择 jar 包的版本,尽量避免有漏洞的。然后就随便选(最好随大流,尽量不要使用最新版)

  • 我们可以把⾃⼰写好的Jar包上传到中央仓库(具备⼀定的要求), 也可以从中央仓库下载Jar包

修改 Maven 配置

  • 1.修改本地仓库地址
  • 2.修改 maven 配置

私有服务器(私服)

  • 如果我的仓库只想团队看到,不想给别人看到,此时就不能直接发到中央仓库,此时就需要私服来实现半公开

  • 进公司:问 javamaven 的 setting 如何配置,因为我不知道私服账号密码

SpringBoot 的安装

  • Java 默认会给测试文件和源文件代码有颜色的包名作为根目录,我们也可以手动修改,右击然后 Mark 成自己想要的文件类型即可.
  • 这里的测试代码是开发人员自测的代码

  • 这里也可以修改文件类型

  • 无插件进行打包,打包好的文件只有 4kb

  • 有插件打包,我们的程序才能运行起来,因为它需要包括外部资源,没有插件打包,则只有源代码。

  • 开发阶段,SNAPSHOT 是非稳定版,可以直接进行修改,如果想要给外部使用,需要将其删除。
  • RELEASE 是发布版本,稳定的,即使有 Bug 也不能修该,只能升级版本来修复 Bug。

  • SpringBoot 内置了Tomcat服务器, ⽆需配置即可直接运⾏
  • Tocmat默认端⼝号是8080, 所以我们程序访问时的端⼝号也是8080

请求响应分析

常见错误:

4XX:客户端发生错误

  • 注解或路径有误都会出现 404 的报错信息。

  • 原来的请求代码被我改成 Post,然后他就会报 405:方法不允许使用的错误

5XX:服务器发生错误-第一时间去看错误日志

  • 错误日志:从下往上拉的第一行

  • 连接错误:
    • (1)通信失败,需要确认服务器是否启动
    • (2)端口号没打开

SpringMVC-Model 模型 - View 视图 - Controller 控制器

MVC-软件架构设计模式

  • 以项目进行划分的设计模式:
    • 1.Model 模型 -> 面试官 HR,面试来的人,并将面试结果告知领导
    • 2.View 视图 -> 告知有人来了
    • 3.Controller 控制器 -> 领导:找个 HR 来面试

SpringMVC <=> SpringWeb

Spring Web MVC

1.建立连接

  • 通过 postman,我们可以知道 RequestMapping 支持所有以下发送请求的类型。

  • 通过 method 方法限定,只支持 GET 请求,不支持其他请求。

- RequestMapping:默认所有的请求方式都支持,我们可以通过 method 来限定请求的方式
- GetMapping:只支持 get 请求
- PostMapping:仅支持 post 请求
  • 在公司中,别人用什么你用什么。

注解的使用

  • 注解的位置看这个注解的源代码来决定,如果它的源代码里面有:
ElementType.TYPE
  • 如果注解的实现代码里面有这个,表示这个注解可以放到类上
ElementType.METHOD
  • 如果注解里面实现的代码有这个,表示注解可以放到方法上
  • 如果注解里面实现的代码两个都有,说明这个注解既可以在类上又可以在方法上。

  • 当我们既有类注解,又有方法注解时,此时 URL 的路径应该修改为类的路径+方法 的路径

  • 多个注解之间无先后之分,只要按照类注解+方法注解写 URL 即可。

  • 通过上面的测试结果我们可以看到上面的代码中同一个路径下不同的请求,不会报错并且能够正确区分返回的内容。但是同一个路径下同一个方法呢?

  • 如上图所示,同一个路径下,同一个请求会报错,报错信息如下。

通常情况下,类上都要加上RequestMapping,这样子就不会和别人的类路径上的方法重复了

2.传递参数

  • 前后端交互的方式:
    • 1.URL
    • 2.请求方式
    • 3.参数类型
  • 通过 postman 传递参数
① 传递单个参数
方式 1: 通过 Parms 方式传递参数

  • 通过 postman 以前端的形式给后端传递参数,后端接收前端的参数,从而实现前后端交互

  • 前端发送数据的参数名称要和后端代码变量名称一致,后端才能接收到前端的数据,否则接收到不到.
  • 前后端参数遵循一一对应原则
方式 2: 通过 Body 方式传递参数

  • 注意:两种传递参数的方式,如果其中一个参数不想传递,直接取消勾选即可,或者将其中一种传参方式改选成 None 即可

  • 通过 Params 和 Body 请求发送参数的差异:
    • Params 发送的参数数据能够在 URL 显示,Body 发送的参数数据不会在 URL 中显示
  • 除了通过 Postman 发送请求以外,还可以使用浏览器发送请求,它的效果和 postman 是一样的

  • 传递类型和需求类型不一致也会报错,类型不匹配,状态码是 400

包装类型和基本类型的区别

  • 使用 param3 报的是后端类型的错误,状态码是 500,int 类型接收参数,参数为 null,报错信息为 500,
  • 而之前数据类型不匹配状态码是 400
传递单个参数

  • 当接受的参数只有一个时,建议将 int 转换成 Integer 这个包装类型
传递多个参数

  • 对于新项目还未上线,可以直接修改接口,但是如果是老项目,建议增加一个接口,然后将旧接口废弃掉即可
  • 传递多个参数,对参数的顺序没有任何要求,就算多传一个没有的,它也只是不会使用而已。
传递对象-可以将多个变量封装成一个对象

  • 传递对象,eg: 将多个参数打包成一个对象,它前端传递参数的方式和传递多个参数的方式一样,区别是:当它打包成对象进行传递时,对于基本类型的 int 他会有默认值 0,而不像上面的,对于基本类型 int 如果未进行传参,就会报 500 的错误。

使用 Body 的 form 表单格式传参:

  • 当使用 Body 的 form 表单传参的 get 方法对后端传参时,后端无法接收到前端的数据,而使用 post 方法传参时,后端才能接收到前端传输的信息。
  • **小结:**使用 Body 传参必须使用 post 方法
使用 Params 传参

  • 当我们使用 params 方式传参, get 和 post 方法都能成功从前端往后端传输数据。
修改参数名称的注解: @RequestParam

  • Params4 和 7 的区别就是有无修改参数名称的区别,没有修改,这个变量前端未传值,后端收到默认值 null,但是对于 7 我们修改了参数名称,这个修改参数名称的注解的参数是必填项

  • 如果后端的参数名不想和前端的参数名保持一致,可以通过@RequestParam(前端参数名)进行前后端参数绑定,对于@RequestParam(value = “绑定的前端参数名”,required = true/false),这个注解里面的参数是必传项,如果不给他传值就会报错,可以通过修改 required 的值为 false 来变成非必传项。

  • 当我们的 required 修改成 false 时,当我们的前端未给后端传递 name 的参数,它就不会再报 400 的错误了,而是初始化为 null,因为现在的 name 这个变量变成了非必填项。

SpringBoot-集成别人实现的功能,使得开发变得简单

总结:

  • 请求方式:GET,POST,PUT…默认都是可以使用的,如果需要限制前端使用的请求,可以使用 method 来传递可用的方式即可。

  • 也可以使用 GetMapping 和 PostMapping 来限制请求方式:

  • **RequestMapping 😗*路由映射注解,进行 URL 的绑定,它 既可以是类注解也可以是方法注解,对于方法注解 ② 不可省略,类注解 ① 可省略,但是为了避免和别人方法出现冲突,我们可以在自己的文件里面加上类注解 ①

  • 传递参数:直接传即可,Spring 会帮我们自动传参,并且传参没有先后顺序,对于类型单个参数的时候最好使用包装类(eg:Integer),
    • 而对于基本类型 int ,未传参,会出现报错;
    • 但是如果这个参数是包装类类型,未进行传参,包装类会将这个变量赋值为 null,不会出现报错。
  • 传递对象:
    • 对于传递对象,其传递参数的方式和传递多个参数一致,但对于对象,如果内部使用基本类型,我们未传递参数会有默认值,不会发生报错

  • @RequestParam对参数重命名 - 当后端和前端不想使用同一个变量名时使用这个注解 :
    * 这个注解修饰的变量默认是必传项,如果想要修改为非必传项,将 require 的值修改成** false **即可。

import java.util.Random;

public class FarewellMessageGenerator {
    public static void main(String[] args) {
        String[] greetings = {
            "祝您前程似锦 ✨",
            "愿您心想事成 🌟",
            "祝您幸福安康 ❤️",
            "愿您天天开心 😊",
            "祝您事业腾飞 🚀"
        };
        
        String[] emojis = {
            "🎉", "🌈", "🌻", "🍀", "🎊"
        };
        
        Random random = new Random();
        String message = greetings[random.nextInt(greetings.length)];
        String emoji = emojis[random.nextInt(emojis.length)];
        
        System.out.println(message + " " + emoji);
        System.out.println("感谢阅读!希望这篇文章对您有所帮助 🙏");
    }
}
 
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐