一、thymeleaf:
这个是模板引擎,里面配有页面的前缀和后缀
结论:如果需要使用thymeleaf,只需要导入对应的依赖就行,我们将html页面放在项目的templates目录下即可。
在页面使用thymeleaf取数据
所有的html元素都可以被thymeleaf替换接管: th:元素名
thymeleaf语法
thymeLeaf语法 | 说明 | |
---|---|---|
th:utext="${ }" | 不转义特殊字符 | |
th:text="${ }" | 转义特殊字符 | |
<h3 th:each=“user: u s e r s ” t h : t e x t = " {users}” th:text=" users”th:text="{user}"> | 遍历集合元素 | |
[[${user}]] |
||
@{/} 这个代表项目资源的根目录,静态static目录不需要写 | ||
导入图片,传参用() | ||
<form … th:action="@{ }" > | ||
<p … th : if = “${not #strings.isEmpty(msg)}”> | thymeleaf是个超级模板,可以和很多java语句融合,判断从controller传过来的数据是否为空 | |
<nav … th: fragment=“xxx” …> | 抽取这一部分,将其变成一个可使用的组件 | |
将抽取的插件插入进去 | ||
将抽取的插件插入进去 | ||
<a th: class="${key==‘value’}" ? 选择一 : 选择二 > | 判断key是否等于值value | |
遍历后台数据 | ||
格式化时间 |
…
配置在application.properties中, 清除thymeleaf模板引擎的缓存 : spring.thymeleaf.cache = false
二、首页配置
自定义解析器
//全面接管springmvc,扩展mvc配置,添加新配置
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//将创建一个一个组件,交给springboot,springboot会自动转配
@Bean
public ViewResolver myViewResolver(){
return new MyViewResolver();
}
public static class MyViewResolver implements ViewResolver{
//自定义一个视图解析器
@Override
public View resolveViewName(String s, Locale locale) throws Exception {
return null;
}
}
}
自定义一个自己的starter
- 写一个后缀是Configuration类,再写一个后缀是Properties类,把两个类打成jar包的形式,然后添加到项目当中,可以用maven的package打包。
- Configuration类中一定有带有ConditionalOnClassl注解来判断是否导入了公司编写的类,没有,该类就不能生效,就不能使用该类里面的功能。
总结,在springboot中,有非常多的XXXConfiguration配置类,用来扩展
@Repository //把该类交给spring进行管理,放在类上
@AllArgsConstructor //创建该类的所有构造参数,放在类上
@NoArgsConstructor //创建该类的无参构造,放在类上
@Autowired //在该类里可以使用类类型字段的引用,放在类类型的字段上,也就是从spring容器中拿到实例对象
@RequestMapper() //访问接口名字,放在方法上
@Controller //该类是个Controller容器,放在类上
//扩展spring
@Configuration //配置访问接口,放在类上,实现WebMvc
@Bean //将自己写的组件配置(类)到spring容器里
@ResponseBody
@RequestParam()
Model
new Model().addAttribute(key,value);
return "redirect:/";
HttpSession
new HttpSession().setAttribute();
request.getSession().getAttribute(key);
request.getRequestDispatcher("页面地址").forward(request,response); //转发
@PathVariable() //路径变量
配置类步骤:可以不用controller层
- 添加thymeleaf依赖
- 将以Config为后缀创建配置类,统一放在项目config包下管理
//扩展spring,添加配置类
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("luona").setViewName("login");
}
}
idea快捷键
Shift + Alt+ Ctrl + 鼠标左键 :选中多行内容区域
Shift + Alt + 鼠表左键 :选中多行编辑多行
Shift + Alt +Ctrl + N 查找当前项目中的类
首页配置步骤总结:
- 注意点,所有页面的静态资源都需要使用thymeleaf来接管
- url: @{ }
三、页面国际化:
[]: https://www.bilibili.com/video/BV1PE411i7CV?p=22
- Bundle:可视化配置视图
注意国际化的数据要使用thymeleaf的 #{ }来获取
页面国际化:
- 在resources下建包i18n,然后将创建中英的properties,统一放在idea自己生成的Bundle下,最后是在把统一配置卸载项目的application.properties配置中。
-
编写自己的国际化解析器,实现LocaleResolver接口
-
将自己写的组件配置到spring容器里,在配置类中重写localeResolver方法,返回自己编写的国际化解析器类的对象,方法名上使用@Bean注解,配置给spring
-
页面使用 #{ }来获取
注意:设置了首页配置和页面国际化后,页面的所有地址都是用 @{ }来表示
頁國際化文本显示用 #{ } ,数据获取用${ }
四、登录拦截器
[]: https://www.bilibili.com/video/BV1PE411i7CV?p=24
- 创建拦截组件(类),实现 HandlerInterceptor 接口
- 重写 preHandle 方法
- 将拦截器组件配置到Spring 容器中
- 在配置类(配置类实现了)中重写addInterceptors方法,并在方法上添加@Bean
vue是纯前端的模板引擎,thymeleaf是对后台比较友好的模板引擎
五、使用Thymeleaf语法遍历
1.提取公共页面
th:frament="xxx";
th: replace="~{页面名::xxx}"
<!--用()传参,直接接受即可-->
2.遍历后台数据
<tr th:each="emp:${emps}">
<td th:text="${emp.getId()}"></td>
......
</tr>
六.整合JDBC
#关闭默认图标
spring.mvc.favicon.enabled=false
#关闭模板引擎的缓存
spring.thymeleaf.cache=false
server.servlet.context-path=/luona
#我们的配置文件的真实位置
spring.messages.basename=i18n.login
#时间日期格式化
spring.mvc.date-format=yyyy-MM-dd
七、整合JDBC
问题:springboot项目的jdbc配置中时区报错,解决方法:在url 的值中 "?"后面添加serverTimezone=UTC "&"连接后面的字符编码格式
八、DRUID
是数据库连接池实现,结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控。
HikariDataSource:当前Java WEB数度最快的数据源 ,相比于传统的C3P0、DBCP、Tomcat、jdbc等连接池更加优秀。
一、将自定义的datasource配置信息绑定到配置类上步骤:
- 1、使用yml编写druid配置信息。
- 2、使用@ConfigurationProperties(prefix=“xxx”)注解找到符合前缀是"xxx"的配置信息.yml的文件。
- 3、使用@Bean注解将适配到的了放到spring中进行管理
@Bean 将类放到sprin中进行管理
@ConfigurationProperties(prefix="xxx")
xxxConfig 配置类:
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix="spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
}
application.yml 配置类的配置信息
spring:
datasource:
password: root
username: root
url: jdbc:mysql://localhost:3306/cvs_db?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#初始化时池中建立的物理连接个数。
initialSize: 5
#最大的可活跃的连接池数量
maxActive: