Spring Boot框架的总结与介绍

目录

前言

第一章 Spring Boot

1、Spring Boot

2、Mybatis开发流程

3、Spring

第二章 maven

1、maven简介

2、maven作用

3、maven的安装

4、本地仓库和中央仓库

5、如何测试maven安装成功

6、Spring Boot

7、坐标

第三章 Spring Boot工程的搭建

1、搭建工程

2、Spring Boot工程目录结构

3、SpringBoot测试类

4、自动化配置(零配置)

第四章 lombok

1、lombok简介

2、使用流程

3、lombok常用的注解

4、idea不兼容lombok

第五章 SpringBoot集成mybatis

1、mybatis传统开发流程

2、SpringBoot集成mybatis

第六章 Spring boot事务

1、事务(Transactional)

2、事务处理

3、Spring boot事务处理

4、运行时异常

5、事务的配置

6、事务的传播行为

第七章 读取自定义配置

1、配置(Configuration)

2、问题

3、读取自定义配置

第八章 配置文件

1、properties文件

2、yaml文件

3、yaml格式

4、总结

第九章 多环境选择

1、多环境

2、多环境配置

3、多环境选择应用场景

第十章 Maven功能

1、依赖管理

2、maven工具

第十一章 pom文件解析

1、父工程

2、项目信息

3、版本信息

第十二章 Spring Web

1、专业术语

2、请求和响应模式

3、web开发模式

4、控制器(controller)

5、控制器如何做出响应

6、请求参数

7、前端发送请求参数的几种方式

8、控制器如何接收请求参数

9、请求转发和重定向

第十三章 模板引擎技术

1、模板引擎(template engine)

2、Spring的模型数据处理

3、模板引擎实现(thymeleaf)

第十四章 thymeleaf常用属性

1、th:text="${}"

2、th:each="变量 : ${模型数据}"

3、th:src="${表达式}"

4、任何的html属性如果需要模型数据,th:

5、th:if="${布尔表达式}"

第十五章 拦截器和session

1、系统的分类

2、Session

3、Session实现的方式

4、拦截器

5、配置类

6、拦截器的优先级问题

第十六章 Spring MVC的全局配置

1、配置文件

2、配置类进行配置

总结


前言

本文介绍了我学习Spring Boot的全过程和总结的笔记,绝无私藏,希望可以帮到大家。


提示:以下是本篇文章正文内容,下面案例可供参考

第一章 Spring Boot

1、Spring Boot

  • 开源框架

  • 作用

    • 用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

    • 配置

      • properties

      • yaml

  • 特性

    • 自动配置(零配置) : 使用Spring Boot项目,告别xml文件,提供大量的自动化配置

    • 自动化测试(junit测试工具)

    • 内嵌tomcat服务器

    • 项目健康情况的检测

2、Mybatis开发流程

  • 引入jar包

  • 全局配置(mybatis-config.xml)

  • mapper接口

  • 注解或者xml文件

  • 注册mapper

  • 测试(4行代码)

3、Spring

  • 简化mybatis的开发

  • mapper对象 : Spring配置文件将对象以及对象相关联bean对象封装(SqlSessionFactory、SqlSession)

  • 加入大量的bean(service、mapper、sqlSession、sqlSessionFactory)

  • IOC和DI可以让项目当中bean对象产生关联

  • Spring特别适合管理项目核心对象(mybatis、redis、mongodb、spring cloud)

  • 每一个框架都有自己核心bean对象,我们都需要将这样的对象xml、注解、配置类

第二章 maven

1、maven简介

  • maven是一个项目构建工具,java编写出来的一个软件。

  • idea构建一个普通的java项目,为什么还要使用maven?

2、maven作用

  • 打包

  • 测试

  • 安装(仓库)

  • clean

  • 管理jar包

    • 第三方框架的一些类和接口,打成jar包

    • 我们项目需要一些jar包,叫做当前项目的依赖

    • dependency在我们已学知识点当中

      • DI : 类当中包含了另外一个类对象

      • 项目当中需要的第三方jar包,我们就叫做当前项目的依赖

3、maven的安装

  • 安装jdk

  • 配置JAVA环境变量

    • 此电脑(单击鼠标右键选择属性)

    • 属性窗口 ---> 高级系统设置

    • 系统变量: 查找是否存在一个JAVA_HOME的环境变量,如果有,这一步自动跳过

    • 如果没有 : 点击新建 --> 环境变量名(JAVA_HOME) --> 环境变量值(自己jdk安装的目录)--> 确定

    • 找到path环境变量,打开之后,右侧新建: %JAVA_HOME%\bin

  • 安装maven

    • 安装完毕的文件夹发给大家

  • 配置maven的环境变量

    • 此电脑(单击鼠标右键选择属性)

    • 属性窗口 ---> 高级系统设置

    • 系统变量: 查找是否存在一个MAVEN_HOME的环境变量,如果有,这一步自动跳过

    • 如果没有 : 点击新建 --> 环境变量名(MAVEN_HOME) --> 环境变量值(自己maven安装的目录)--> 确定

    • 找到path环境变量,打开之后,右侧新建: %MAVEN_HOME%\bin

  • idea集成maven

    • idea本身自带maven(不建议大家使用idea自带maven)

    • 打开欢迎界面

      • 2020版本 : 打开欢迎界面 选择界面下方configure ---> settings

      • 2021版本 : 打开欢迎界面 选择左侧的customize --> 下方all settings

    • 三项maven的配置

    • Maven home directory : 填写的是你maven安装的目录

    • User settings file : 填写是你maven的配置文件(maven安装目录内部conf\settings.xml)

    • Local repository : 本地仓库

4、本地仓库和中央仓库

  • 中央仓库(center         repository) : 有很多的开源框架本身就是基于maven,maven打包成jar包,jar包都放到美国的一台计算机当中。 com文件夹group31文件夹abc

    • 框架(abc)

    • groupId: com.group31

    • artifactId : abc

    • version : 1.0.0

  • 本地仓库(local repository) : 下载的jar所存放本地路径,gav

  • 阿里巴巴 : 做了中央仓库的镜像

  • settings.xml文件当中需要的配置

    • 下载jar所对应的资源地址 : 阿里云的中央库

    • 本地仓库

5、如何测试maven安装成功

打开命令行窗口

  • mvn -v

6、Spring Boot

Spring Boot通过maven构建出来

7、坐标

  • maven将一个项目当做一个对象

  • 信息

    • group-id : 项目组名称(项目上线之后的域名倒写的方式 : www.alibaba.pay.com) com.pay.alibaba

    • artifact-id : 项目名称(模块名称)

    • version : 版本

  • gav : 可以到中央仓库当去下载当前gav对应的项目的jar包

  • 依赖的信息 : (jar包的信息)

  • maven信息 : pom.xml文件 project object model

  • 模型 : 信息 -> 建立一个模型

第三章 Spring Boot工程的搭建

1、搭建工程

  • Spring | Home官方文档当中下载对应的项目,通过idea打开即可

  • idea给我们提供了一个创建spring boot工程的一个插件(工具)

2、Spring Boot工程目录结构

  • maven目录结构一致

  • 目录结构如下

    • src : 项目当中所有源代码

      • main : 项目当中主要的文件

        • java : java源代码(类、接口)

          • 基础包(构建项目指定package)

            • 项目名Application类 : 启动类,启动服务器

        • resources : 非java代码(xml、html、图片、音频、视频)

          • application.properties : spring boot工程给我们提供的配置文件(yaml文件)

      • test :项目当中测试的文件

        • java : java测试源代码

          • 基础包

            • 项目名Test类: 测试

    • pom.xml : 标记来描述项目的一些信息(gav坐标、依赖)

3、SpringBoot测试类

  • @SpringBootTest :

    • SpringBoot这是一个测试类,进行测试内嵌一个容器对象(已经创建完毕)

    • 类对象交给容器来管理

  • @Test : Junit测试框架提供一个

4、自动化配置(零配置)

  • Spring Boot使用第三框架,大部分的配置Spring Boot配置完毕

  • 如果我们需要加入配置 application.properties或者application.yaml文件

    • application.properties

      • 配置名=值

    • application.yaml

      • 单独去将

  • 约定大于配置 : 有一些信息我们是通过配置文件形式描述(xml),Spring Boot约定

第四章 lombok

1、lombok简介

  • 简化一个简单java类型当中的一些通用代码

  • set和get方法、toString、equals、hashcode

2、使用流程

  • 导入依赖

    • 初始化项目(dependencies),对当前项目需要的框架通过勾选选中的方式来完成导入依赖

    • pom.xml文件,dependency标记,配合gav坐标

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

  • 配置 : application.properties或者application.yaml文件当中进行配置

  • 使用

3、lombok常用的注解

  • @Setter : 修饰类

  • @Getter : 修饰类

  • @ToString : 修饰类

  • @Data : 复合注解(@Setter、@Getter、@ToString、@EualsAndHashcode) : 记住

  • @NoArgsConstructor : 添加无参构造器

  • @AllArgsConstructor :添加所有成员变量对应的构造器

  • @EqualsAndHashcode

4、idea不兼容lombok

  • idea的开发工具当中安装lombok插件

  • file ->settings -> plugins -> market place --> lombok 红色辣椒logo 点击安装 重启idea

第五章 SpringBoot集成mybatis

1、mybatis传统开发流程

  • 导入jar包(复制mybatis、mysql的jar包放置项目lib)

  • mybatis的全局配置文件(数据源配置、mapper注册、运行时配置)

  • mapper接口

  • mapper的sql映射文件(xml)

  • 注册mapper

  • 测试

2、SpringBoot集成mybatis

  • 导入依赖(maven进行简化,在pom.xml文件中导入dependency)

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.22</version>
    </dependency>

  • application.properties文件中进行配置

    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.url=jdbc:mysql://localhost:3306/book_31?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    ​
    mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    mybatis.configuration.map-underscore-to-camel-case=true
    mybatis.mapper-locations=classpath:mapper/*.xml

  • mapper接口

    @Repository
    @Mapper
    public interface Mapper接口 {
        @Select("SQL语句")
        方法声明;
    }
     
  • mapper的sql映射文件(不能简化、注解)

  • 注册mapper配置文件进行简化

  • 测试: Spring Boot自动化测试

第六章 Spring boot事务

1、事务(Transactional)

  • 业务方法对于数据库一系列操作,事务。

  • 事务特性(ACID)

    • 原子性 : 不可拆分性,一个业务方法(整体性)

    • 一致性 : 事务提交前后,数据前后要一致。

    • 隔离性 : 事务方法执行的过程的过程,不允许调用者在去调用事务(并发)

    • 持久性 : 事务提交生效之后,数据库永久发生变化,不能通过回滚操作将数据还原

2、事务处理

  • jdbc : 事务处理,默认提交,connection.setAutoCommit(false)。如果声明一个事务,connection.commit()、connection.rollback()\

  • mybatis : 事务处理,默认不提交

  • springboot : 事务处理,默认对于数据库的独立操作提交,自定义业务方法具备事务的特性

3、Spring boot事务处理

  • @Transactional注解修饰一个业务方法

  • spring使用方式

    • 需要在容器当中加入一个bean: 事务管理器

  • spring boot使用方式 : 开箱即用

  • 事务处理流程 :

    • 提交 :业务方法上面@Transactional,所有默认事务取消 ,执行代码,检测是否发现了运行时异常,没有出现任何运行时异常,认为业务方法没有任何问题。

    • 回滚 : 发现业务方法内部出现了运行时异常,回滚

4、运行时异常

  • Throwable是所有异常类的根类,描述了异常具备共通的内容(消息)

  • Error、Exception

  • Error类 :系统问题出现错误。程序员无法精确干越

  • Exception : 业务异常

    • RuntimeException : 运行时异常,只有程序运行起来的时候,才知道是否会出现这个异常。

      • NullPointerException

      • ArrayIndexOutOfBoundsException

      • ClassCastException

      • mybatis : BindingException

      • spring

    • 编译时异常(检查时异常) : 编写代码,java编译器自动检测,提示,try,catch,throws向上抛

  • Throwable : message : String

public class Throwable{
    private String message;
    public Throwable(String message){
        this.message = message;
    }
    set和get方法
    方法 : 查看异常
}

5、事务的配置

  • @Transactional :注解是用来修饰业务方法,方法具备原子性。一旦方法出现运行时异常,整个方法对于数据库的操作全部都会回滚;没有出现运行时异常,提交。

  • @Transactional(属性=值,属性=值)

  • 超时属性 : timeout : int

    • 当客户端使用事务方法,如果本次方法的调用超过了指定的时长,会产生一个事务超时异常。

  • 事务回滚属性 :

    • rollbackFor={异常类型.class,异常类型.class} : 回滚操作

      • 没有加入此属性,默认所有的运行时异常都会回滚

    • rollbackForClassName={“异常的全类名”}

    • noRollbackFor={异常类型.class,异常类型.class} :针对什么异常不会滚

    • noRollbackForClassName={"异常的全类名"}

  • 事务传播行为

  • 事务的隔离级别(伏笔)

  • Spring Boot事务处理的注意事项

    • 事务方法必须是公有

    • 方法不能定义为final

    • 事务方法,不允许被本对象当中的其他方法内部调用,否则事务失效

    • 当前事务方法所属的类型必须由Spring 管理

    • 数据库必须支持事务

    • 事务的传播行为特性(伏笔)

    • 运行时异常才会导致事务的回滚(运行时异常,不要自己处理)

    • 抛出的异常必须是运行时异常

6、事务的传播行为

  • 概念

    • 当一个事务方法被另外一个事务方法调用的时候,启动一个事务包含两套业务还是启动两个事务

  • 前提

    • 必须一个事务方法调用另外一个事务方法

    • 写一个全新的业务,交易

  • 默认情况下,当一个事务方法调用另外一个事务方法时候,事务方法会将本身自己事务传递给目标事务方式。

  • 事务的传播行为 :

    • REQUIRED : 默认的传播行为,在同一个事务当中

    • REQUIRED_NEW : 事务被其他事务调用,需要一个新的事务

  • 被调用的事务方法上面加入@Transactional(propagation=Propagation.事务传播)

第七章 读取自定义配置

1、配置(Configuration)

  • xml文件 : 按照指定格式配置的数据信息,肯定是框架底层按照格式读取。

  • 配置文件的信息全部都是用来被需要的框架来读取

  • spring boot发现xml文件的约定非常的复杂,简化开发,提供了一个全新的配置文件的格式

    • properties

    • yaml

2、问题

  • 项目当中有一些数据,是属于全局性数据,存储起来,存储我的配置文件的当中

3、读取自定义配置

  • 依赖注入的形式来进行读取

    @Component
    类{
        @Value("${加入配置名称}")
        private 数据类型 变量;
    }

  • 类加载自定义配置

    @Component
    // 读取properties文件中指定前缀对应的配置信息,prefix指定前缀
    @ConfigurationProperties(prefix = "group")
    @Data
    public class GroupConfig {
        private String address;
        private String name;
    }

第八章 配置文件

1、properties文件

  • 指定的数据格式

  • 配置名=配置值

  • java当中有一个集合类型,Properties

2、yaml文件

  • YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写

    • xml文件 :是一种标记语言

  • 在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言

  • yaml不是一种标记语言,但是他具备标记语言的特征可以存储配置。

3、yaml格式

  • properties文件: key=value

张三.老婆.闺蜜=章子怡
张三.老婆.车=宝马3系
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/book_31
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  • yaml文件 : 缩进式(tab)的配置

张三:
    老婆:
        闺蜜: 章子怡
        车: 宝马3系
spring:
    datasource:
        username: root
        password: 123456
        url: jdbc:mysql://localhost
        driver-class-name: 

4、总结

  • application.yaml和application.properties如果同时存在,以application.properties

  • 文件的扩展名代表文件的类型,文件的类型扩展名都是3个字符,yaml可以省略为yml

  • 缩进来描述递进关系

第九章 多环境选择

1、多环境

  • 软件开发周期当中 :计算机的环境问题

  • 环境

    • 开发环境 (develop)

    • 测试环境 (test)

    • 生产环境 (production)

2、多环境配置

  • 多环境多配置文件

    • 多个环境,配置多少个配置文件即可

    • application-环境名称.yml

      • application-pro.yml

      • application-dev.yml

    • 多环境选择

      • application.yml文件

        spring:
          profiles:
            active: pro
  • 多环境单配置文件 (鸡肋)

    • 多个环境,你还是只有一个配置文件

spring:
  profiles:
    active: dev
---
spring:
  datasource:
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/book_31
    type: com.alibaba.druid.pool.DruidDataSource
  profiles: dev
mybatis:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
​
  mapper-locations: classpath:mapper/*.xml
---
spring:
  datasource:
    username: root
    password: 78765421134adsad
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.1.113:3306/book_31
    type: com.alibaba.druid.pool.DruidDataSource
  profiles: pro
mybatis:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
​
  mapper-locations: classpath:mapper/*.xml
 

3、多环境选择应用场景

  • 项目当中配置文件有多个情况

  • 业务实现上如果在不同环境当中也是不同,也可以使用多环境选择

    • 一个业务接口对应的多个实现类上面加入@Profile("环境名称")

    • 实现类的对象就会根据主配置文件当中的环境名称,来讲环境对应的实现类对象放置Spring的容器当中

第十章 Maven功能

1、依赖管理

  • 依赖(dependency) : 项目依赖另外一个项目(mybatis)

  • 使用流程

    • 中央仓库 : 计算机存储所有开源的项目jar包、maven

    • 本地仓库 : 安装maven(conf/settings.xml) ,本地仓库的配置

    • maven工程: pom.xml文件

      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid-spring-boot-starter</artifactId>
          <version>1.1.22</version>
      </dependency>

  • 将gav按照顺序形成本地仓库对应文件夹目录

2、maven工具

  • compile 编译 :

    • 存储当前项目内部 : target文件夹

  • clean 清空 :

    • 将maven生成字节码文件进行清空

  • test 测试

    • 可以将Spring Boot的所有测试全部执行一次,形成测试报告

  • package 打包

    • 将我们的项目达成jar(war) zip、rar

  • install 安装

    • 将我们的项目打包,安装到本地仓库当中

第十一章 pom文件解析

1、父工程

<parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.2.2.RELEASE</version>
     <relativePath/> <!-- lookup parent from repository -->
</parent>
  • 自定义Spring Boot工程有一个父工程 : spring-boot-starter-parent

    • 描述SpringBoot的常规配置约定

  • spring-boot-starter-parent也有一个父工程spring-boot-dependencies

    • 依赖版本管理

2、项目信息

<groupId>com.group</groupId>
<artifactId>springboot_31</artifactId>
<version>0.0.1</version>
<name>springboot_31</name>
<description>这是一个spring boot工程的第一个案例</description>

3、版本信息

 <properties>
    <java.version>1.8</java.version>
 </properties>

第十二章 Spring Web

1、专业术语

  • web : 互联网相关的技术

  • 服务器(server) : 如果一台计算机安装了可以被其他计算机访问的软件,计算机叫做服务器。

    • 可以被其他计算机访问的电脑

    • mysql

    • 自己创建Spring Boot工程肯定是需要客户来访问,放置到一台服务器当中,Spring Boot内嵌了一台tomcat服务器,就是任意的Spring Boot都允许客户端访问

    • 导入一个依赖

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
  • 浏览器端(browser) : 当客户使用浏览器访问我们的项目。 BS架构

    • 网页游戏

    • 网页访问系统

  • 客户端(client) : 客户的计算机当中安装了一个软件,用户软件来访问服务器。 CS架构

    • QQ

    • 英雄联盟

  • 服务器软件:FTP(文件服务器)、JBoss、Tomcat(tom猫),Spring Boot内嵌了一个tomcat服务器,客户端可以通过浏览器来访问

  • 端口(port)

    • 计算机当中安装了mysql、tomcat(8080)、jboss、ftp

    • 计算机比喻成一个大房子,里面服务器比喻房间,端口进入房间的门牌号

    • 赛伯乐大厦 :黄浦路112号,不能精确定位到某一个服务

    • 八戒财税 : 黄浦路112号2002房间

    • localhost:3306

  • 开启Spring Boot的服务器

  • 启动类

  • 浏览器访问地址

  • web应用程序的部署方案

  • 计算机当中创建Spring Boot引入web依赖,通过启动类项目启动,resources/static/login.html

  • http://192.168.0.100:8080/login.html为什么访问不到

  • 中国网络高墙,独立搭建服务器(视频、图片、网页),不允许其他客户端访问

  • 必须通过公安局(网络侦查大队)备案,审核你项目是否违规

  • 租赁计算机作为我们服务器(阿里云)

  • 申请域名 : 当前项目一种简写方式 www.sd.com/login.html ----> http://192.168.0.100:8080/login.html

  • 网络资源 : 允许客户端或者浏览器端访问到服务器的内容

  • html

  • 图片

  • txt

  • 超文本都可以被用户访问 : http://网址 超文本传输协议 ftp://网址 电驴 快播 迅雷

  • java当中方法也可以做为网络资源,让用户访问!超级重要

    public class Person{
        // 定义一个网址   /sum
        public int sum(int i,int j){
            return i + j;
        }
    }
    ​
    http://localhost:8080/sum
  • url : 统一资源定位符,访问服务器端某个资源,网址

2、请求和响应模式

  • 请求 (request): 当客户访问服务器的某个资源,这个过程叫做请求

  • 响应(response) : 当服务器发现用户请求的资源存在的时候,将资源反馈给我们的客户,这个过程叫做响应

  • 特征 :

    • http无状态性 : 当客户端发送器请求给服务器,服务器接受到请求之后,将结果响应给客户端。本次请求响应就结束了。请求响应结束之后,客户端就就会断开与服务器的连接。

    • 当客户端发送请求给服务器的时候,服务器会创建两个对象

      • HttpServletRequest 类: 对象当中包含所有客户端的信息(登录账号、密码、浏览器、操作系统)

      • HttpServletResponse类 : 对象包含响应给客户端的所有信息

    • 请求响应对象的用途

      • 从请求当中获取数据,操作HttpServletRequest,提供各种get方法

      • 从响应当中获取响应相关的数据,HttpServletResposne对象

    • 如何获取(伏笔Spring MVC)

3、web开发模式

  • MVC

    • Model : 模型数据,通过控制器进入到某一个html页面当中,如果html需要用到动态数据

    • View : 视图(jsp、thymeleaf、FreeMarker),就是在html的基础上加入视图技术代码(负责将模型数据展现出来)

    • Controller : 控制器(处理器 Handler),可以接受客户端发送请求,控制器对象当中的方法可以设定url地址,被客户端访问

  • MVC结论:

    • 服务器端有很多的资源,例如网页、图片、css、java当中方法(只有控制器当中的方法才允许客户端访问)

    • 用户访问普通的html,让用户进行访问

    • 用户访问的页面,需要动态数据,需要让用户先请求控制器,控制器将结果传递给页面,页面配合着视图技术将数据以一种特定的方式渲染出来

  • MVVM : 前后端分离 (axios、vue、vuex、10种框架左右)

4、控制器(controller)

  • 控制器的概念

    • java当中方法也可以作为网络资源让客户端进行访问,方法必须放到控制器当中

    • 控制器是接受请求,做出响应的java代码而已。

    • 控制器是前端进入到后端一个桥梁

  • 编写控制器

    • Spring的时候 : @Component、@Service、@Repository、@Controller

    • 类:类的对象需要由Spring 的IOC容器接管即可。

  • @RequestMapping

    • 类 : 类定义url地址

    • 方法 : 可以给方法定义一个url地址

  • 问题

    • 为什么要让客户端通过url地址访问控制器方法呢?

  • 总结

    • 接受客户端发送过来请求,并且负责做出响应

5、控制器如何做出响应

  • MVC : 控制器只能返回String类型,String类型跳转的目标页面的名称

    • 视图的跳转

      application.yaml
      spring:
          mvc:
              view:
                  prefix: / 
                  suffix: .html
  • MVVM : 控制器随意返回数据

    • 控制器当中不要在参与任何页面的跳转,返回数据,方法获取首页数据

6、请求参数

  • 前端发送给后端的数据就叫做请求参数

  • 原生html当中

    • form表单 : 表单元素的name属性做请求参数名、value属性作为请求参数值,发送给form表单对应action资源

    • 地址 : 访问目标资源的地址?请求参数名=请求参数值&请求参数名=请求参数值

  • javascript:

    • ajax发送请求方式

    • axios发送请求方式

7、前端发送请求参数的几种方式

  • form表单

    • 用户输入项,值传递给目标控制器

  • url?请求参数名=值&请求参数=值

    • 无需form表单 : 多数据 url传递就

  • 占位符参数 :

    • 无需form表单,当传递主键,强烈简易大家使用占位符参数

    • 总结

      url/值
      @RequestMapping("/url/{名称}")
      方法(@PathVariable(名称) 形参)
  • javascript : 各种传递数据方式(伏笔)

8、控制器如何接收请求参数

  • 形参的形式来接受,前端传递多个请求数据,多个请求数据以形参的形式描述出

    • 形参的名字和请求参数的名字必须一直

    • 形参的名字和请求参数名不一致的话,相当于没有给形参传递数据,系统会给形参赋值为null

      • 真实业务场景,如果真的请求参数名和形参就不一样

      • 可以在控制器方法的形参的前面 @RequestParam(value="请求参数名") 请求参数和形参进行匹配

    • @RequestParam注解

      • value="请求参数名"

      • required=true或者false

        • 默认是true,你必须给我传递,如果没有传递请求参数,默认传递null

        • false,可以不传递,defaultValue="默认值"

  • java对象来接受多个值

    • 多个请求参数,Spring可以将多个请求参数封装成一个对象,要求对象的成员变量必须要和请求参数一直

9、请求转发和重定向

  • 网络资源 :客户端可以访问服务器的内容(图片、html、css、txt、方法)

  • 请求转发

    • 当客户端发送请求给网络资源

      • 资源接受客户端发送过来的请求(静态资源),直接将资源响应会客户端

      • 资源接受客户端发送过来的请求(动态资源:thymeleaf、方法),配合方法做出响应

    • 客户端发送请求给某一个资源,请求转发给了另外一个资源。另外的资源做出响应。

      • 张三 ----> 李四 ---> 王五

  • 重定向

    • 客户端发送请求给某一个资源,资源无法解决,资源告诉请求,你再去找另外一个资源

  • 请求转发和重定向

    • 都是为了完成资源的跳转

  • 控制器方法返回值的位置: 做资源的跳转

    • return "名字" : 请求转发

    • 请求转发

      return "forward:/资源"
    • 重定向

      return "redirect:/资源"
  • 请求转发和重定向

    请求转发重定向
    url地址是否发生变化不变发生变化
    请求数量一次请求产生多个请求
  • 应用场景

    • 如果发生跳转的资源之间,需要共享数据,请求转发

    • 仅仅是为了完成资源的跳转,用请求转发和重定向都ok

第十三章 模板引擎技术

1、模板引擎(template engine)

  • 在html的基础上可以动态展示模型数据的技术

  • MVC当中View : 视图技术

  • 分类

    • JSP

    • Thymeleaf

    • FreeMarker

2、Spring的模型数据处理

  • MVC当中Model,模型数据,所有控制器需要传递给目标页面的数据

  • 模型数据处理:如何将数据传递给目标视图

    • 控制器方法的形参位置 : Map<String,Object> map

      • 模型数据当中设置数据 put方法

    • 控制器方法的形参位置 : Model

      • addAttribute(String,Object)

    • 控制器方法的形参位置 : ModelMap

      • addAttribute(String,Object)

    • 控制器的方法返回值是一个ModelAndView

      • mvc模式当中,要求控制器返回值必须是String

      • ModelAndView : 模型数据和视图

        • setViewName(String) : 设置页面视图

        • addObject(String,Object)

  • 区别:

    • 普通java开发人员来说,Map集合,页面当中需要的数据扔到Map

    • 熟练掌握mvc概念,Model

3、模板引擎实现(thymeleaf)

  • 导入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

  • 配置

    spring:
      mvc:
        view:
          prefix: /
          suffix: .html

  • 使用

    • resources : 模板引擎的页面,templates是Spring Boot的约定,以后无论使用jsp、freemarker

    • 所有templates当中html页面不是一个简单的静态网页,页面需要展示模型数据,页面是不允许直接访问,必须经由控制器才可以访问

    • static文件夹、templates文件(页面是静态页面放置static、页面是动态页面使用模板引擎技术html页面放置templates)

    • template engine

  • 模板引擎页面

    <html xmlns:th="http://www.thymeleaf.org">
    ​
    </html>

  • 通过thymeleaf提供的属性来渲染模型数据

    • th:text="${模型数据key}" : 将模型数据渲染到指定元素内部

      <h4 th:text="${msg}"></h4>

第十四章 thymeleaf常用属性

1、th:text="${}"

  • 将模型数据内容渲染到指定的标记内部

2、th:each="变量 : ${模型数据}"

  • 对某个html元素加入th:each,可以对模型数据当中集合、数组类型进行循环,每次循环就会产生一个与之对应的html元素

  • th:each="变量 : ${表达式}"

  • th:each="变量,state : ${表达式}"

    • state是一个当前循环状态

      • index

      • count

3、th:src="${表达式}"

        th:src="${表达式}"是在Thymeleaf模板引擎中使用的一个标识符,用于设置HTML元素的src属性。该表达式的作用是动态地引用指定的资源,这个资源的路径和名称由表达式指定。

        在Thymeleaf模板引擎中,任何有效的SpringEL表达式都可以使用在th:src属性中。

        例如,使用如下代码动态地引入图片资源: <img th:src="@{${product.imageUrl}}"/>

        其中,${product.imageUrl}是代表产品图片的动态表达式,通过@{}语法包装起来以获得正确的相对路径。

4、任何的html属性如果需要模型数据,th:

  • th:style="${}"

  • th:href=""

5、th:if="${布尔表达式}"

  • 决定一个标记元素是否存在

第十五章 拦截器和session

1、系统的分类

  • 互联网项目 : 只要是可以访问到网络的客户端都可以进入

  • 内部系统项目 : 需要用户必须登录之后才可以进行操作

2、Session

  • 会话对象

  • 当客户端发送请求给服务器,服务器会给客户端在服务器的内存当中分配一个临时数据存储空间,定义一个名字jSessionId,将session编号回传给客户端;下次用户如果一旦再次发送请求,客户端浏览器自动携带jSessionId的请求参数,找到之前分配的Session

  • 结论

    • 每一个客户端,服务器都会对于分配一个属于当前客户端的内存空间

3、Session实现的方式

  • 硬编码

    • HttpSession类型

    • 仅仅是在控制器的方法形参位置加入HttpSession类型形参,SpringMVC自动将session传递形参

  • 注解

    • @SessionAttributes

    • 修饰控制器类

    • 将模型数据当中内容放置到session当中

4、拦截器

  • 拦截器的接口 : HandlerInterceptor,提供三个方法

// 前置拦截方法
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    return false;
}
// 后置拦截方法
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {

		return true;
	}
// 请求响应结束之后执行拦截方法
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			@Nullable ModelAndView modelAndView) throws Exception {
	}

5、配置类

  • 疑问

    • 如何编写拦截器

    • 拦截器拦截哪些请求

    • 前置拦截方法如何判断用户是否登录过

    • 拦截方法如何做请求转发或者是重定向

6、拦截器的优先级问题

  • @Order(value=整数) 整数越大优先级越低,数字越小优先级越高

第十六章 Spring MVC的全局配置

1、配置文件

  • application.properties

  • application.yml

  • 简单的配置

2、配置类进行配置


总结

以上就是今天要讲的内容,本文仅介绍了Spring Boot 框架。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值