【SpringBoot】
八、Spring Boot整合Druid
1、数据库连接池回顾
在内存中一块空间,空间中放置N多个数据库连接对象。对象可以是处于活动状态,也可以是空闲(Idle)状态的。数据库获取连接对象时不在从数据库中获取连接对象,而是从数据库连接池中获取到连接对象,当获取到连接对象后,对象处于活动状态(Active),当连接对象使用完成后,在代码中进行连接关闭,实际上是把连接对象从活动状态变为空闲状态,不是真正的关闭。
在频繁访问数据库(访问频率特别高的)的应用中,使用数据库连接池效率高。
2、Druid
Druid是由阿里巴巴推出的数据库连接池。它结合了C3P0、DBCP、PROXOOL等数据库连接池的优点。之所以从众多数据库连接池中脱颖而出,还有一个重要的原因就是它包含控制台。
3、代码实现
3.1 添加依赖
此依赖版本一定不能太高,否则和数据库驱动不匹配,无法访问控制台页面。
org.springframework.boot
spring-boot-starter-parent
2.1.13.RELEASE
com.alibaba
druid-spring-boot-starter
1.1.10
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
mysql
mysql-connector-java
8.0.11
3.2 编写配置文件
其中spring.datasource.type就告诉程序使用druid连接池。
spring:datasource:# 使用阿里的Druid连接池type:com.alibaba.druid.pool.DruidDataSourcedriver-class-name:com.mysql.cj.jdbc.Driver# 填写你数据库的url、登录名、密码和数据库名url:jdbc:mysql://127.0.0.1:3306/tingyu?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8username:rootpassword:rootdruid:# 连接池的配置信息# 初始化大小,最小,最大initial-size:5min-idle:5maxActive:20# 配置获取连接等待超时的时间maxWait:60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis:60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis:300000validationQuery:SELECT 1testWhileIdle:truetestOnBorrow:falsetestOnReturn:false# 打开PSCache,并且指定每个连接上PSCache的大小poolPreparedStatements:truemaxPoolPreparedStatementPerConnectionSize:20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters:stat,wall,slf4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties:druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000# 配置DruidStatFilterweb-stat-filter:enabled:trueurl-pattern:"/*"exclusions:"*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"# 配置DruidStatViewServletstat-view-servlet:url-pattern:"/druid/*"# IP白名单(没有配置或者为空,则允许所有访问)allow:127.0.0.1,192.168.163.1# IP黑名单 (存在共同时,deny优先于allow)deny:192.168.1.188# 禁用HTML页面上的“Reset All”功能reset-enable:false# 登录名login-username:admin# 登录密码login-password:123456mybatis:mapper-locations:classpath:mybatis/*.xml
九、Spring Boot整合PageHelper
Spring Boot整合PageHelper不需要做任何配置文件的配置,添加依赖后就可以直接使用。
1、添加依赖
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.12
2、编写代码
代码中一定要注意,要把PageHelper.startPage()写在上面。
//pageNumber为当前页码 pageSize为页大小PageHelper.startPage(pageNumber,pageSize);
//查询全部List list = tbItemMapper.selectAll();
// 构造方法参数必须是查询全部的结果。否则无法知道给哪个sql后面拼接limit//PageInfo是分页查询所有查询结果封装的类,所有的结果都从这个类取PageInfo pi = new PageInfo<>(list);
System.out.println(pi.getList());
System.out.println(pi.getTotal());
十、Spring Boot整合logback
Spring Boot默认使用Logback组件作为日志管理。Logback是由log4j创始人设计的一个开源日志组件。
在Spring Boot项目中我们不需要额外的添加Logback的依赖,因为在spring-boot-starter或者spring-boot-starter-web中已经包含了Logback的依赖。
1、Logback读取配置文件的步骤
(1)在classpath下查找文件logback-test.xml
(2)如果文件不存在,则查找logback.xml
十一、Spring Boot整合JSP
1、添加依赖
org.apache.tomcat.embed
tomcat-embed-jasper
provided
2、在项目中创建webapp目录并将其设置为资源目录
在项目中新建webapp/WEB-INF目录
设置工作目录,如果在IDEA中项目结构为聚合工程。那么在运行jsp是需要指定路径。如果项目结构为独立项目则不需要。
2、在 yml配置文件中配置视图解析器参数
3、在控制类中声明单元方法请求转发jsp资源
十二、SpringBoot整合Thymeleaf
1、Thymeleaf介绍
Thymeleaf的主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易地协作。Thymeleaf能够处理HTML,XML,JavaScript,CSS甚至纯文本。
长期以来,jsp在视图领域有非常重要的地位,随着时间的变迁,出现了一位新的挑战者:Thymeleaf,Thymeleaf是原生的,不依赖于标签库.它能够在接受原始HTML的地方进行编辑和渲染.因为它没有与Servelet规范耦合,因此Thymeleaf模板能进入jsp所无法涉足的领域。
Thymeleaf在Spring Boot项目中放入到resources/templates中。这个文件夹中的内容是无法通过浏览器URL直接访问的(和WEB-INF效果一样),所有Thymeleaf页面必须先走控制器。
2、使用步骤
2.1 在pom.xml中添加Thymeleaf启动器
org.springframework.boot
spring-boot-starter-thymeleaf
2.2 在resources下新建templates文件夹。新建index.html
html页面随意写句话,以免访问index.html是空白页。
2.3 新建控制器
此处方法返回值为页面名称。
@RequestMapping("/showIndex")
public String showIndex(){
System.out.println("执行index");
return "index";
}
3、Thymeleaf语法
为了有提示,修改html页面中标签为
3.1 th:text属性
向HTML标签内部输出信息。
3.2 th:value
表单元素,设置HTML标签中表单元素value属性时使用。
3.3 th:if
进行逻辑判断。如果成立该标签生效(显示),如果不成立,此标签无效(不显示)。
注意:判断条件中逻辑判断符号写在${}外面的
3.4 th:each
循环遍历.
示例中u为迭代遍历。
th:each=”u,i :${list}” 其中i表示迭代状态。① index:当前迭代器的索引 从0开始
② count:当前迭代对象的计数 从1开始
③ size:被迭代对象的长度
④ even/odd:布尔值,当前循环是否是偶数/奇数 从0开始
⑤ first:布尔值,当前循环的是否是第一条,如果是返回true否则返回false
⑥ last:布尔值,当前循环的是否是最后一条,如果是则返回true否则返回false
编号 | 姓名 |
3.5 th:href
设置href属性的。取值使用@{}取值
3.6 th:onclick
点击传递参数的单击事件
3.7 字符串操作
Thymeleaf提供了一些内置对象,内置对象可直接在模板中使用。这些对象是以#引用的。
使用内置对象的语法
1)引用内置对象需要使用#
2)大部分内置对象的名称都以s结尾。如:strings、numbers、dates
3.8 日期格式化处理
3.9 操作域对象
3.9.1 HttpServletRequest
3.9.2 HttpSession
3.9.3 ServletContext