1.知识小结
1.1 Mysql
1.版本说明:最好不要使用mysql8.0,建议使用mariab 10以上
2.基本功能:CRUD操作
3.连接方式:左连接,右连接,内连接
1.2 jdbc
功能和作用:java中操作数据库总最为直接的方式
表述:
- JDBC的开发效率高?不对
- JDBC的运行效率高?对,操作数据库最快的做法
1.3 前端
核心知识:
1.html
2.js
3.css
4.ajax(JS的一部分)
前端的内容属于静态页面
1.4 框架
1.4.1 Springboot
核心是spring,是为了简化框架的开发
理解:Springboot是框架的框架
1.4.2 SpringMVC
理解:主要负责前后端的交互
媒介:http(不安全)/https(安全):加载了秘钥(证书:公钥和私钥)协议
TCP/IP协议(3次握手)速度很快,文件上传
常用工具:Ajax
1.4.3 Spring
理解:整合第三方框架,使得程序可以以一种统一的方式进行管理
概念:
- 控制反转/依赖注入:IOC/DI
- 面向切面编程:AOP
2.IDEA环境配置
2.1 准备工作目录
D:\pangtuo3
2.2 IDEA环境配置
具体操作参照PPT
2.3 Maven的配置
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件
- 用户使用的jar包都来源于本地库
- 本地库中的jar包来源于私服镜像和远程服务器
工作原理:
- 配置本地仓库的地址
<localRepository>D:/IDEA/maven/resp</localRepository>
- 配置私服镜像
<mirror>
<id>ali</id>
<name>ali Maven</name>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/public/</url>
</mirror>
2.4 IDEA整合Maven
2.5 创建项目
3.SpringMVC的高级用法
3.1 maven坐标的作用
1.maven的坐标主要是标识项目,唯一标识
2.maven进行项目操作时,与本地的仓库一一对应
<!--组ID-->
<groupId>com.jt</groupId>
<!--项目名称-->
<artifactId>spring_demo1</artifactId>
<!--版本号-->
<version>0.0.1-SNAPSHOT</version>
3.2 maven命令
1.clean 清空项目中的target(存储的是字节码文件)文件目录
2.install 将项目进行打包处理
install详细说明:每次打包,会在两个位置生成jar包文件:
- 位置1:target目录文件中
- 位置2:根据坐标,在本地仓库中生成具体的jar包文件,该文件可以被其他项目"依赖"
3.3 打包类型
1.jar包文件
- 适用于spring项目/API项目/框架项目
2.war包文件
- 动态的web项目 JSP类型 运行环境为Tomcat服务器
3.pom类型,不是包,就像是标识符 (聚合工程)
- 适用于大型的项目,微服务架构采用pom类型
3.4 maven jar包依赖的传递性
案例说明1:用户只需要引入特定的jar包文件,则maven可以经过以来的传递性,实现其他jar包的引入
3.5 jar传递性的实现原理
- 当maven扫描依赖信息时,会根据坐标找到对应的jar包文件
- 扫描当前目录下的pom文件
- 根据pom文件中的依赖项dependency再次查找其他依赖jar包,直到所有jar包依赖完成为止
3.6 jar包传递安全性问题
问题:jar文件都是通过网络下载而来,如何保证其安全性?
sha1:密码散列函数,主要生成消息摘要
3.7 关于hash的基本常识
1.如果数据相同,相同的hash算法,问hash值是否相同?必定相同
2.如果数据不同,相同的hash算法,问hash值是否相同?可能相同
(hash碰撞)
3.常见的hash – 一般为8位16进制数组成
3.8 关于项目的依赖项
3.8.1关于Springboot版本管理说明
- spring-boot-dependencies是SpringBoot官网进行调试后,将所有的关联的jar包进行定义,从根本上解决了jar包版本冲突的问题
- 如果需要引入其他的jar包文件,只需要添加jar包名称即可
- 特殊的jar包文件需要手动添加版本号
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.8.2关于build标签说明
说明:当springboot项目需要打包时,build标签会起作用,将springboot按照可以执行的方式打成jar包的文件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.jt.SpringDemo1Application</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
3.9 配置文件的说明
3.9.1 默认配置文件的名称
application.properties
3.9.2 properties语法说明
说明:
- 数据结构:key=value
- value中前后不能有空格
- properties文件 程序默认采用ISO-8859-1编码结构 中文必定会乱码
- pro文件中key的名称不能复用
# 应用名称
spring.application.name=spring_demo1
# 应用服务 WEB 访问端口
server.port=8080
3.9.2 YML语法说明
- spring的核心配置文件,主要目的是为了整合第三方框架而使用的
- 将大量业务写于yml中就会导致代码的混乱
说明: - 数据结构: key:(空格)value;
- key的关键字有层级缩进效果,注意缩进
- YML文件默认采用utf-8编码格式,所以对中文友好
- value中不要有多余的空格
- key可以复用,注意层级
3.10 为动态的属性赋值
案例1:
package com.jt.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*效果
1.@RestController=@RequestBody+@Controller
2.@Controller:将当前类交给spring容器管理
3.@RequestBody:前后端交互时,后端的服务器返回的对象转化为json
后端交互的媒介:http协议,传输的数据都是字符串
json:有特殊格式的字符串
*/
@RestController
public class HelloController {
private String name="lisi";
@RequestMapping("/getname")//建议写绝对路径
public String getName(){
return name;
}
}
案例2:
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*效果
1.@RestController=@RequestBody+@Controller
2.@Controller:将当前类交给spring容器管理
3.@RequestBody:前后端交互时,后端的服务器返回的对象转化为json
*/
@RestController
public class HelloController {
@Value("${pangtuoname}")//获取配置文件中pangtuoname的值
private String name;
@RequestMapping("/getname")
public String getName(){
return name;
}
}
server:
port: 8080
//为属性赋值
pangtuoname: 张三
3.11 利用pro文件为属性赋值
- 问题:YML文件时Spring的核心配置文件,主要目的是为了整合第三方框架而使用的,如果将大量的业务数据写到YML中,会造成代码的结构混乱
- 解决方案:可以使用pro文件实现业务数据处理
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//注解说明: @RestController = @Controller + @ResponseBody
//效果: 1. @Controller 将当前类交给Spring容器管理
// 2. @ResponseBody 前后端交互时,将后端服务器返回的对象转化为JSON
// 前后端交互媒介 http协议 传输的数据都是字符串
// JSON: 有特殊格式的字符串
@RestController
//加载指定配置文件,并且设定字符集编码格式
@PropertySource(value = "classpath:/name.properties",encoding = "UTF-8")
public class HelloController {
//作用:从Spring容器中获取数据,需要指定key
// $ springel spel表达式
@Value("${cgbname}")
private String name; // = "王五";
@Value("${cgbname2}") //该属性是pro文件中,必须要求spring容器加载pro文件
private String name2;
/**
* URL: http://localhost:8080/getName
* 返回值: 变量的name属性
*/
@RequestMapping("/getName") //建议大家写绝对路径
public String getName(){
return name+"|"+name2;
}
}
4.Spring容器的理解
4.1 IOC(控制反转)
- 含义:将对象创建的权利交给Spring容器去管理
- 原因:如果将对象自己管理,会出现高耦合的现象,不方便扩展
- 容器:是一种数据结构类型Map<K,V>集合
KEY:类名首字母小写
Value:Spring为当前类创建的对象 - 只要程序启动成功,则Map集合中(容器),里面包含了所有的IOC管理对象