结合了通过模板引擎使html页面集成了页面对数据的处理功能,如下图:
springBoot提供的thymeleaf版本会远远低于先行版本所以需要覆盖旧版本
在pom.xml的
<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
以此来使用最新版本
欢迎页面默认路径是resources/static下名为index.html的文件 其他请求指向的页面是resources/templates下 xxxx.html的文件
使用thymeleaf模板步骤
YAML(Yet Aint Markup Language)是一种直观的能够被电脑识别的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的文件类型。
k(属性):(空格)v(值) —->表示一对键值对,换行也可,一定要有空格,属性和值区分大小写。 例:
server:
port: 8081
address: http://xxx
纯量: 直接写需要的值,不需要双引号或者单引号 如果使用单引号,诸如\n\t之类的特殊字符不会进行转义,特殊字符就是普通字符串 如果使用双引号,则会进行转义 \n变为换行符
'date: 2018-09-07'
"ABC\n DFE"
Maven是由Java代码编写的 项目管理及自动构建工具 适合于一个团队对项目进行管理和版本的迭代,如果项目 非常大则不适合使用包来划分模块,改为每一个模块一个工程,使用Maven将其拆分,以区分版本号和不同模块组件。
在以往的web项目中,所需要的jar包都需要手动导入到WEB-INF/lib目录下,还要将jar包添加到类路径下,浪费时间还占用存储空间。 Maven可以通过POM.XML 项目对象模型(Project Object Model缩写:POM) 文件从仓库中引用需要的jar包,并不需要真正的把jar包复 制到项目中。
在一个项目中不同的开发人员所使用的jar包可能版本不一致,导致项目在不同服务器上运行结果不一样。 Maven可以规范 化每个人的jar包版本,因为Maven将知名框架和第三方工具的jar存在中央仓库中,所以开发人员通过maven取出来的jar包也是规 范可靠的。
有时不同的jar包之间存在互相依赖关系,例如spring框架中spring-beans.jar,spring-aop.jar,spring-context.jar等 都需要spring-core.jar的支持,但是开发人员无法完全了解各个jar包之间的依赖关系。 Maven会将被依赖的jar包自动导入到仓库中,以供 开发人员使用,极大减少了学习的成本。
网上有很多教程,下面是我参考的一个博客的教程 在这里
Maven作为规范化的管理工具自然少不了规范化的目录结构,刚开始接触Maven的时候建议手动搭建目录结构以此来熟悉Maven的概念
目录如下
POM.xml文件Maven项目中不可或缺的核心文件,构建项目过程中的所有设置都在这个文件中进行配置
包括项目的名称 <groupid>
,模块 <artifactid>
,版本 <version>
,jar包依赖<dependency>
常用的Maven命令
tips:2~6阶段需要进入pom.xml所在的路径下才能执行
Maven的坐标,类似于数学中的坐标,maven通过三个值来定位某一个jar在仓库中的位置
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
以上代码定位了servle-api-2.5.jar的位置,Maven会沿着这个路径去找这个jar包如果本地仓库没有,则会到远程仓库中进行寻找并下载。
tips:测试类不参与打包和部署 所以看不到测试类编译的.class文件
由于生命周期的限制如果进入对应项目pom.xml的路径后跳过某些周期直接执行后面的步骤,例:
>mvn test
Maven依旧会从第一步开始执行,这也表现出Maven的规范化
如下图
首先编译源代码,在编译test代码,再执行测试返回结果
作为J2EE新手,在学校学习接触了hibernate框架,后来渐渐接触到mybatis框架,它比起hibernate来是一个轻量级,半自动化的框架, sql语句写在Mapper.xml文件下降低了代码的耦合性,也更易于sql查询的优化和特殊sql的定制编写。 这几天跟着网上教程一步一步手动搭载出来第一个ssm框架,过程中也遇到了不少坑,现在将这些坑都记录下来,一方面是作为自己学习 的总结积累,另一方面希望能帮助到他人。
环境和各框架版本
mysql5及之前的版本使用的是旧版驱动,mysql6以及之后的版本需要更新到新版驱动
浏览器报错如下
Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
log4j日志显示
java.sql.SQLException: No suitable driver
解决方法
com.mysql.jdbc.Driver
改为 com.mysql.cj.jdbc.Driver
报错如下
com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
解决方法
在数据库连接属性文件url后面加上&serverTimezone=GMT%2B8
解决方法2
此问题产生的根本原因就是mybatis读取系统时间出现了问题,默认读取CST时间是美国中部时间 Central Standard Time (USA) UT-6:00 所以手动在sql数据库中修改CST时间为 China Standard Time UT+8:00
mysql> set time_zone = '+8:00'
mysql> set global time_zone= '+8:00'
mysql> flush privileges
之前hibernate的在全局配置文件中用的原生的DataSource接口org.hibernate.connection.DatasourceConnectionProvider
这次使用的是c3p0连接池,一开始使用的是0.9.1版本,一直报错也找不出来原因,后来更新到0.9.5.2版本就ok了
另一问题是最最大的坑,关于数据库配置文件 报错如下
Access denied for user 'xxx'@'localhost' (using password: YES)
大致意思就是username没有读取到导致无法连接数据库进行操作
解决方法
数据库属性配置文件中的
要加 前缀 改成
这是一篇测试文档