目录
前言
第一章 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应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
配置
properties
yaml
特性
自动配置(零配置) : 使用Spring Boot项目,告别xml文件,提供大量的自动化配置
自动化测试(junit测试工具)
内嵌tomcat服务器
项目健康情况的检测
引入jar包
全局配置(mybatis-config.xml)
mapper接口
注解或者xml文件
注册mapper
测试(4行代码)
简化mybatis的开发
mapper对象 : Spring配置文件将对象以及对象相关联bean对象封装(SqlSessionFactory、SqlSession)
加入大量的bean(service、mapper、sqlSession、sqlSessionFactory)
IOC和DI可以让项目当中bean对象产生关联
Spring特别适合管理项目核心对象(mybatis、redis、mongodb、spring cloud)
每一个框架都有自己核心bean对象,我们都需要将这样的对象xml、注解、配置类
maven是一个项目构建工具,java编写出来的一个软件。
idea构建一个普通的java项目,为什么还要使用maven?
打包
测试
安装(仓库)
clean
管理jar包
第三方框架的一些类和接口,打成jar包
我们项目需要一些jar包,叫做当前项目的依赖
dependency在我们已学知识点当中
DI : 类当中包含了另外一个类对象
项目当中需要的第三方jar包,我们就叫做当前项目的依赖
安装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 : 本地仓库
中央仓库(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所对应的资源地址 : 阿里云的中央库
本地仓库
打开命令行窗口
mvn -v
Spring Boot通过maven构建出来
maven将一个项目当做一个对象
信息
group-id : 项目组名称(项目上线之后的域名倒写的方式 : www.alibaba.pay.com) com.pay.alibaba
artifact-id : 项目名称(模块名称)
version : 版本
gav : 可以到中央仓库当去下载当前gav对应的项目的jar包
依赖的信息 : (jar包的信息)
maven信息 : pom.xml文件 project object model
模型 : 信息 -> 建立一个模型
Spring | Home官方文档当中下载对应的项目,通过idea打开即可
idea给我们提供了一个创建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坐标、依赖)
@SpringBootTest :
SpringBoot这是一个测试类,进行测试内嵌一个容器对象(已经创建完毕)
类对象交给容器来管理
@Test : Junit测试框架提供一个
Spring Boot使用第三框架,大部分的配置Spring Boot配置完毕
如果我们需要加入配置 application.properties或者application.yaml文件
application.properties
配置名=值
application.yaml
单独去将
约定大于配置 : 有一些信息我们是通过配置文件形式描述(xml),Spring Boot约定
简化一个简单java类型当中的一些通用代码
set和get方法、toString、equals、hashcode
导入依赖
初始化项目(dependencies),对当前项目需要的框架通过勾选选中的方式来完成导入依赖
pom.xml文件,dependency标记,配合gav坐标
org.projectlombok
lombok
配置 : application.properties或者application.yaml文件当中进行配置
使用
@Setter : 修饰类
@Getter : 修饰类
@ToString : 修饰类
@Data : 复合注解(@Setter、@Getter、@ToString、@EualsAndHashcode) : 记住
@NoArgsConstructor : 添加无参构造器
@AllArgsConstructor :添加所有成员变量对应的构造器
@EqualsAndHashcode
idea的开发工具当中安装lombok插件
file ->settings -> plugins -> market place --> lombok 红色辣椒logo 点击安装 重启idea
导入jar包(复制mybatis、mysql的jar包放置项目lib)
mybatis的全局配置文件(数据源配置、mapper注册、运行时配置)
mapper接口
mapper的sql映射文件(xml)
注册mapper
测试
导入依赖(maven进行简化,在pom.xml文件中导入dependency)
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.2.2
mysql
mysql-connector-java
com.alibaba
druid-spring-boot-starter
1.1.22
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自动化测试
业务方法对于数据库一系列操作,事务。
事务特性(ACID)
原子性 : 不可拆分性,一个业务方法(整体性)
一致性 : 事务提交前后,数据前后要一致。
隔离性 : 事务方法执行的过程的过程,不允许调用者在去调用事务(并发)
持久性 : 事务提交生效之后,数据库永久发生变化,不能通过回滚操作将数据还原
jdbc : 事务处理,默认提交,connection.setAutoCommit(false)。如果声明一个事务,connection.commit()、connection.rollback()\
mybatis : 事务处理,默认不提交
springboot : 事务处理,默认对于数据库的独立操作提交,自定义业务方法具备事务的特性
@Transactional注解修饰一个业务方法
spring使用方式
需要在容器当中加入一个bean: 事务管理器
spring boot使用方式 : 开箱即用
事务处理流程 :
提交 :业务方法上面@Transactional,所有默认事务取消 ,执行代码,检测是否发现了运行时异常,没有出现任何运行时异常,认为业务方法没有任何问题。
回滚 : 发现业务方法内部出现了运行时异常,回滚
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方法
方法 : 查看异常
}
@Transactional :注解是用来修饰业务方法,方法具备原子性。一旦方法出现运行时异常,整个方法对于数据库的操作全部都会回滚;没有出现运行时异常,提交。
@Transactional(属性=值,属性=值)
超时属性 : timeout : int
当客户端使用事务方法,如果本次方法的调用超过了指定的时长,会产生一个事务超时异常。
事务回滚属性 :
rollbackFor={异常类型.class,异常类型.class} : 回滚操作
没有加入此属性,默认所有的运行时异常都会回滚
rollbackForClassName={“异常的全类名”}
noRollbackFor={异常类型.class,异常类型.class} :针对什么异常不会滚
noRollbackForClassName={"异常的全类名"}
事务传播行为
事务的隔离级别(伏笔)
Spring Boot事务处理的注意事项
事务方法必须是公有
方法不能定义为final
事务方法,不允许被本对象当中的其他方法内部调用,否则事务失效
当前事务方法所属的类型必须由Spring 管理
数据库必须支持事务
事务的传播行为特性(伏笔)
运行时异常才会导致事务的回滚(运行时异常,不要自己处理)
抛出的异常必须是运行时异常
概念
当一个事务方法被另外一个事务方法调用的时候,启动一个事务包含两套业务还是启动两个事务
前提
必须一个事务方法调用另外一个事务方法
写一个全新的业务,交易
默认情况下,当一个事务方法调用另外一个事务方法时候,事务方法会将本身自己事务传递给目标事务方式。
事务的传播行为 :
REQUIRED : 默认的传播行为,在同一个事务当中
REQUIRED_NEW : 事务被其他事务调用,需要一个新的事务
被调用的事务方法上面加入@Transactional(propagation=Propagation.事务传播)
xml文件 : 按照指定格式配置的数据信息,肯定是框架底层按照格式读取。
配置文件的信息全部都是用来被需要的框架来读取
spring boot发现xml文件的约定非常的复杂,简化开发,提供了一个全新的配置文件的格式
properties
yaml
项目当中有一些数据,是属于全局性数据,存储起来,存储我的配置文件的当中
依赖注入的形式来进行读取
@Component
类{
@Value("${加入配置名称}")
private 数据类型 变量;
}
类加载自定义配置
@Component
// 读取properties文件中指定前缀对应的配置信息,prefix指定前缀
@ConfigurationProperties(prefix = "group")
@Data
public class GroupConfig {
private String address;
private String name;
}
指定的数据格式
配置名=配置值
java当中有一个集合类型,Properties
YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。
xml文件 :是一种标记语言
在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)
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:
application.yaml和application.properties如果同时存在,以application.properties
文件的扩展名代表文件的类型,文件的类型扩展名都是3个字符,yaml可以省略为yml
缩进来描述递进关系
软件开发周期当中 :计算机的环境问题
环境
开发环境 (develop)
测试环境 (test)
生产环境 (production)
多环境多配置文件
多个环境,配置多少个配置文件即可
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
项目当中配置文件有多个情况
业务实现上如果在不同环境当中也是不同,也可以使用多环境选择
一个业务接口对应的多个实现类上面加入@Profile("环境名称")
实现类的对象就会根据主配置文件当中的环境名称,来讲环境对应的实现类对象放置Spring的容器当中
依赖(dependency) : 项目依赖另外一个项目(mybatis)
使用流程
中央仓库 : 计算机存储所有开源的项目jar包、maven
本地仓库 : 安装maven(conf/settings.xml) ,本地仓库的配置
maven工程: pom.xml文件
com.alibaba
druid-spring-boot-starter
1.1.22
将gav按照顺序形成本地仓库对应文件夹目录
compile 编译 :
存储当前项目内部 : target文件夹
clean 清空 :
将maven生成字节码文件进行清空
test 测试
可以将Spring Boot的所有测试全部执行一次,形成测试报告
package 打包
将我们的项目达成jar(war) zip、rar
install 安装
将我们的项目打包,安装到本地仓库当中
org.springframework.boot
spring-boot-starter-parent
2.2.2.RELEASE
自定义Spring Boot工程有一个父工程 : spring-boot-starter-parent
描述SpringBoot的常规配置约定
spring-boot-starter-parent也有一个父工程spring-boot-dependencies
依赖版本管理
com.group
springboot_31
0.0.1
springboot_31
这是一个spring boot工程的第一个案例
1.8
web : 互联网相关的技术
服务器(server) : 如果一台计算机安装了可以被其他计算机访问的软件,计算机叫做服务器。
可以被其他计算机访问的电脑
mysql
自己创建Spring Boot工程肯定是需要客户来访问,放置到一台服务器当中,Spring Boot内嵌了一台tomcat服务器,就是任意的Spring Boot都允许客户端访问
导入一个依赖
org.springframework.boot spring-boot-starter-web
浏览器端(browser) : 当客户使用浏览器访问我们的项目。 BS架构
网页游戏
网页访问系统
客户端(client) : 客户的计算机当中安装了一个软件,用户软件来访问服务器。 CS架构
英雄联盟
服务器软件:FTP(文件服务器)、JBoss、Tomcat(tom猫),Spring Boot内嵌了一个tomcat服务器,客户端可以通过浏览器来访问
端口(port)
计算机当中安装了mysql、tomcat(8080)、jboss、ftp
计算机比喻成一个大房子,里面服务器比喻房间,端口进入房间的门牌号
赛伯乐大厦 :黄浦路112号,不能精确定位到某一个服务
八戒财税 : 黄浦路112号2002房间
localhost:3306
开启Spring Boot的服务器
启动类
浏览器访问地址
http://ip地址:端口号 static
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 : 统一资源定位符,访问服务器端某个资源,网址
请求 (request): 当客户访问服务器的某个资源,这个过程叫做请求
响应(response) : 当服务器发现用户请求的资源存在的时候,将资源反馈给我们的客户,这个过程叫做响应
特征 :
http无状态性 : 当客户端发送器请求给服务器,服务器接受到请求之后,将结果响应给客户端。本次请求响应就结束了。请求响应结束之后,客户端就就会断开与服务器的连接。
当客户端发送请求给服务器的时候,服务器会创建两个对象
HttpServletRequest 类: 对象当中包含所有客户端的信息(登录账号、密码、浏览器、操作系统)
HttpServletResponse类 : 对象包含响应给客户端的所有信息
请求响应对象的用途
从请求当中获取数据,操作HttpServletRequest,提供各种get方法
从响应当中获取响应相关的数据,HttpServletResposne对象
如何获取(伏笔Spring MVC)
MVC
Model : 模型数据,通过控制器进入到某一个html页面当中,如果html需要用到动态数据
View : 视图(jsp、thymeleaf、FreeMarker),就是在html的基础上加入视图技术代码(负责将模型数据展现出来)
Controller : 控制器(处理器 Handler),可以接受客户端发送请求,控制器对象当中的方法可以设定url地址,被客户端访问
MVC结论:
服务器端有很多的资源,例如网页、图片、css、java当中方法(只有控制器当中的方法才允许客户端访问)
用户访问普通的html,让用户进行访问
用户访问的页面,需要动态数据,需要让用户先请求控制器,控制器将结果传递给页面,页面配合着视图技术将数据以一种特定的方式渲染出来
MVVM : 前后端分离 (axios、vue、vuex、10种框架左右)
控制器的概念
java当中方法也可以作为网络资源让客户端进行访问,方法必须放到控制器当中
控制器是接受请求,做出响应的java代码而已。
控制器是前端进入到后端一个桥梁
编写控制器
Spring的时候 : @Component、@Service、@Repository、@Controller
类:类的对象需要由Spring 的IOC容器接管即可。
@RequestMapping
类 : 类定义url地址
方法 : 可以给方法定义一个url地址
问题
为什么要让客户端通过url地址访问控制器方法呢?
总结
接受客户端发送过来请求,并且负责做出响应
MVC : 控制器只能返回String类型,String类型跳转的目标页面的名称
视图的跳转
application.yaml spring: mvc: view: prefix: / suffix: .html
MVVM : 控制器随意返回数据
控制器当中不要在参与任何页面的跳转,返回数据,方法获取首页数据
前端发送给后端的数据就叫做请求参数
原生html当中
form表单 : 表单元素的name属性做请求参数名、value属性作为请求参数值,发送给form表单对应action资源
地址 : 访问目标资源的地址?请求参数名=请求参数值&请求参数名=请求参数值
javascript:
ajax发送请求方式
axios发送请求方式
form表单
用户输入项,值传递给目标控制器
url?请求参数名=值&请求参数=值
无需form表单 : 多数据 url传递就
占位符参数 :
无需form表单,当传递主键,强烈简易大家使用占位符参数
总结
url/值 @RequestMapping("/url/{名称}") 方法(@PathVariable(名称) 形参)
javascript : 各种传递数据方式(伏笔)
形参的形式来接受,前端传递多个请求数据,多个请求数据以形参的形式描述出
形参的名字和请求参数的名字必须一直
形参的名字和请求参数名不一致的话,相当于没有给形参传递数据,系统会给形参赋值为null
真实业务场景,如果真的请求参数名和形参就不一样
可以在控制器方法的形参的前面 @RequestParam(value="请求参数名") 请求参数和形参进行匹配
@RequestParam注解
value="请求参数名"
required=true或者false
默认是true,你必须给我传递,如果没有传递请求参数,默认传递null
false,可以不传递,defaultValue="默认值"
java对象来接受多个值
多个请求参数,Spring可以将多个请求参数封装成一个对象,要求对象的成员变量必须要和请求参数一直
网络资源 :客户端可以访问服务器的内容(图片、html、css、txt、方法)
请求转发
当客户端发送请求给网络资源
资源接受客户端发送过来的请求(静态资源),直接将资源响应会客户端
资源接受客户端发送过来的请求(动态资源:thymeleaf、方法),配合方法做出响应
客户端发送请求给某一个资源,请求转发给了另外一个资源。另外的资源做出响应。
张三 ----> 李四 ---> 王五
重定向
客户端发送请求给某一个资源,资源无法解决,资源告诉请求,你再去找另外一个资源
请求转发和重定向
都是为了完成资源的跳转
控制器方法返回值的位置: 做资源的跳转
return "名字" : 请求转发
请求转发
return "forward:/资源"
重定向
return "redirect:/资源"
请求转发和重定向
请求转发 | 重定向 | |
---|---|---|
url地址是否发生变化 | 不变 | 发生变化 |
请求数量 | 一次请求 | 产生多个请求 |
应用场景
如果发生跳转的资源之间,需要共享数据,请求转发
仅仅是为了完成资源的跳转,用请求转发和重定向都ok
在html的基础上可以动态展示模型数据的技术
MVC当中View : 视图技术
分类
JSP
Thymeleaf
FreeMarker
MVC当中Model,模型数据,所有控制器需要传递给目标页面的数据
模型数据处理:如何将数据传递给目标视图
控制器方法的形参位置 : Map
模型数据当中设置数据 put方法
控制器方法的形参位置 : Model
addAttribute(String,Object)
控制器方法的形参位置 : ModelMap
addAttribute(String,Object)
控制器的方法返回值是一个ModelAndView
mvc模式当中,要求控制器返回值必须是String
ModelAndView : 模型数据和视图
setViewName(String) : 设置页面视图
addObject(String,Object)
区别:
普通java开发人员来说,Map集合,页面当中需要的数据扔到Map
熟练掌握mvc概念,Model
导入依赖
org.springframework.boot
spring-boot-starter-thymeleaf
配置
spring:
mvc:
view:
prefix: /
suffix: .html
使用
resources : 模板引擎的页面,templates是Spring Boot的约定,以后无论使用jsp、freemarker
所有templates当中html页面不是一个简单的静态网页,页面需要展示模型数据,页面是不允许直接访问,必须经由控制器才可以访问
static文件夹、templates文件(页面是静态页面放置static、页面是动态页面使用模板引擎技术html页面放置templates)
template engine
模板引擎页面
通过thymeleaf提供的属性来渲染模型数据
th:text="${模型数据key}" : 将模型数据渲染到指定元素内部
将模型数据内容渲染到指定的标记内部
对某个html元素加入th:each,可以对模型数据当中集合、数组类型进行循环,每次循环就会产生一个与之对应的html元素
th:each="变量 : ${表达式}"
th:each="变量,state : ${表达式}"
state是一个当前循环状态
index
count
th:src="${表达式}"是在Thymeleaf模板引擎中使用的一个标识符,用于设置HTML元素的src属性。该表达式的作用是动态地引用指定的资源,这个资源的路径和名称由表达式指定。
在Thymeleaf模板引擎中,任何有效的SpringEL表达式都可以使用在th:src属性中。
例如,使用如下代码动态地引入图片资源:
其中,${product.imageUrl}是代表产品图片的动态表达式,通过@{}语法包装起来以获得正确的相对路径。
th:style="${}"
th:href=""
决定一个标记元素是否存在
互联网项目 : 只要是可以访问到网络的客户端都可以进入
内部系统项目 : 需要用户必须登录之后才可以进行操作
会话对象
当客户端发送请求给服务器,服务器会给客户端在服务器的内存当中分配一个临时数据存储空间,定义一个名字jSessionId,将session编号回传给客户端;下次用户如果一旦再次发送请求,客户端浏览器自动携带jSessionId的请求参数,找到之前分配的Session
结论
每一个客户端,服务器都会对于分配一个属于当前客户端的内存空间
硬编码
HttpSession类型
仅仅是在控制器的方法形参位置加入HttpSession类型形参,SpringMVC自动将session传递形参
注解
@SessionAttributes
修饰控制器类
将模型数据当中内容放置到session当中
拦截器的接口 : 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 {
}
疑问
如何编写拦截器
拦截器拦截哪些请求
前置拦截方法如何判断用户是否登录过
拦截方法如何做请求转发或者是重定向
@Order(value=整数) 整数越大优先级越低,数字越小优先级越高
application.properties
application.yml
简单的配置
以上就是今天要讲的内容,本文仅介绍了Spring Boot 框架。