一.创建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项⽬就可以感知到⽤⼾的请求,并给予响应。
现在学习如何通过浏览器和⽤⼾程序进⾏交互。
主要分以下三个⽅⾯:
- 建⽴连接:将⽤⼾(浏览器)和Java程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring程序。
- 请求:⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数的功能.
- 响应:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾,也就是响应.
对于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接收参数情况不同)