JDBC
一、JSON 基础语法
二、Ajax - Axios发起异步请求
Ajax
作用:
- 数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。
- 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页,如:搜索联想、用户名是否可用的校验等。
Axios
Axios对原生的Ajax进行了封装,简化书写,快速开发。
使用步骤:
简化写法
Maven
一款用于管理和构建java项目的工具。
- 依赖管理:方便的管理项目依赖的资源,避免版本冲突问题
- 统一项目结构:提供标准、统一的项目结构
- 项目构建:标准跨平台的自动化项目构建方式
仓库:
创建
groupId:定义当前Maven项目隶属的组织名称(通常是域名反写,如space.ericzht)
artifactId:定义当前Maven项目名称
version:定义当前项目版本号
生命周期
Maven的生命周期是为了对所有的Maven项目构建过程进行抽象和统一。
Maven中有3套相互独立的生命周期:
- clean:清理工作
- default:核心工作,如:编译、测试、打包、安装、部署等
- site:生成报告、发布站点等
需要了解的五个生命周期:
test为什么日志无法显示结果?
test包里的Java文件必须以Test结尾,日志没显示出来是因为类名错误,找不到test的文件
Spring
SpringBoot
快速便捷的Spring框架,基于SpringBoot可以快速构建Spring框架。
SpringBoot快速入门
新建模块
依赖中要勾选Spring Web
创建请求处理类 HelloController

运行启动类,在浏览器中进行测试
Tips:包被识别成文件夹怎么办?
右键Java目录,选择标记目录为源根
HTTP协议
概述
Hyper Text Tranfer Protocol 超文本传输协议
特点:
- 基于TCP协议:面向连接,安全
- 基于请求-响应模型:一次请求对应一次响应
- HTTP协议是无状态的协议:对事务处理没有记忆能力。每次请求-响应都是独立的。
- 缺点:多次请求之间不能共享数据
- 优点:速度快
请求数据
响应数据
状态码大类
状态码分类 | 说明 |
---|---|
1xx | 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它 |
2xx | 成功——表示请求已经被成功接收,处理已完成 |
3xx | 重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。 |
4xx | 客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等 |
5xx | 服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等 |
常见的响应状态码
状态码 | 英文描述 | 解释 |
---|---|---|
==200== | OK |
客户端请求成功,即处理成功,这是我们最想看到的状态码 |
302 | Found |
指示所请求的资源已移动到由Location 响应头给定的 URL,浏览器会自动重新访问到这个页面 |
304 | Not Modified |
告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向 |
400 | Bad Request |
客户端请求有语法错误,不能被服务器所理解 |
403 | Forbidden |
服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源 |
==404== | Not Found |
请求资源不存在,一般是URL输入有误,或者网站资源被删除了 |
405 | Method Not Allowed |
请求方式有误,比如应该用GET请求方式的资源,用了POST |
428 | Precondition Required |
服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头 |
429 | Too Many Requests |
指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After(多长时间后可以请求)响应头一起使用 |
431 | Request Header Fields Too Large |
请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。 |
==500== | Internal Server Error |
服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧 |
503 | Service Unavailable |
服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好 |
状态码大全:https://cloud.tencent.com/developer/chapter/13553
Tomcat
概述
- 一个开源免费的轻量级Web服务器,支持Servlet/JSP少量的JavaEE规范。
- JavaEE:Java企业版,指企业级开发的技术规范总和。
- Tomcat也被称为Web容器、Servlet容器。Servlet程序需要依赖于Tomcat才能运行
- 对HTTP协议操作进行了封装,简化web程序开发。
请求
Postman
在网页调试中,只能在地址栏添加内容,这是GET类型的请求,很难对POST类型的请求进行测试。于是出现了Postman插件。
网页调试与发送网页HTTP请求的Chrome插件
常用于进行接口测试
SpringBoot接受请求的方式(简单参数)
1 |
|
1 |
|
@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递则报错。如果这个参数是可选的,可以将required属性设置为false。
原始方式接受请求*
SpringBoot接受请求的方式(实体参数)
把所有参数封装到一个类中,获取时将参数全部放入类的对象中。
简单实体对象
复杂实体对象
注:这里要给类写toString方法,否则输出的是类的类似于地址的东西。
数组集合参数
- 数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型参数即可接受参数
- 集合参数:需要使用 @RequestParam 绑定参数关系
日期参数
Json参数
路径参数
响应
这样响应回去的数据是各式各样的,前后端开发成本高、不便管理、很难维护。
—— 于是设定一个统一响应的规范 Result
Springboot静态资源存放目录
分层解耦
内聚:软件中各个功能模块内部的功能联系
耦合:衡量软件中各个层/模块之间的依赖、关联程度
软件设计原则:高内聚低耦合
三层架构
- Controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
- Service:业务逻辑层,处理具体的业务逻辑。
- Dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增删改查。
分层解耦
上图这种架构,如果ServiceA要改为ServiceB,那么不仅要修改Service层的代码,还要修改Controller层的代码,Service层和Controller层耦合度较高,不利于后续开发。
于是Spring提出了控制反转与依赖注入。
控制反转
Inversion Of Control,IOC
对象的创建控制权由程序自身转移到外部(容器)
依赖注入
Dependency Injection,DI
容器为应用程序提供运行时所依赖的资源
Bean对象
IOC容器中创建、管理的对象
步骤
只有单个bean
- 将Service层及Dao层的实现类交给IOC容器管理。 添加注解 @Component
- 为Controller及Service注入运行时依赖的对象。添加注解 @Autowired
程序在运行时会自动为他们提供所注解的对象
如果要切换Service层的内容,直接将原来的Service层的@Component注解注释掉给新的添加注释就好了。
同时有多个bean
@Autowired 默认是按照类型进行的,如果存在多个相同的bean,会报错。
解决方法:
- 在想要执行的类的注解上加上**@Primary**注解设置其为高优先级。
- @Autowired + @Qualifier(“bean的名称”)
- @Resource(name=”bean的名称”)
区别:
- @Autowired 是spring框架提供的注解,而@Resource是JDK提供的注解
- @AUtowired 默认是按照类型注入,而@Resource默认是按照名称注入
Bean组件扫描
前面声明bean的四大注解,要想生效,还需要被组件扫描注解**@ComponentScan**扫描
启动类声明的注解**@SpringBootApplication**中,默认扫描的范围是启动类所在包及其子包
如果在别的地方添加了组件,并且想要被扫描,就要使用 @ComponentScan(“包名”) 来显式配置,并且需要加上启动类所在的包名。
MyBatis
是一款优秀的持久层(dao层),用于简化JDBC的开发