【第三阶段 day11】第二阶段知识小结 IDEA环境配置 SpringMVC的高级用法 Spring容器的理解

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管理对象
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值