SpringBoot
学习视频链接:小狂神Springboot
每日格言:
志当存高远。——诸葛亮《诫外生书》
SpringBoot web开发
jar:webapp在哪里
最大特点:自动装配
SpringBoot帮我们配置了什么,能不能进行修改,能修改那些东西,能不能拓展
- xxxxAutoConfiguration…向容器中自动配置组件
- XXXXProperties:实现自动配置类装配配置文件中自定义的内容!
要解决的问题:
- 导入静态资源,如何导入!
- 首页问题
- 模版引擎,thymeleaf
- 装配扩展SpringMvc
- 剩下的就只有增删改了
- 拦截器
- 扩展国际化
静态资源
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
return;
}
addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (this.servletContext != null) {
ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION);
registration.addResourceLocations(resource);
}
});
}
什么是webjars
一个网站是和maven仓库类似的导入依赖的网站
导入的依赖结构是

我们的静态资源路径方法中
addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
就是去类路径下找到/META-INF/resources/webjars/下的文件,
例子:
访问http://localhost:8080/webjars/jquery/3.6.0/jquery.js
实测成功
总结:
- SpringBoot处理静态资源的方式
- webjars:http://localhost:8080/webjars/jquery/3.6.0/jquery.js
- pubilc:按优先级排序:resources,static,public,如何访问:/**:
- http://localhost:8080/1.js
- 优先级:resources>static(默认)》public
首页如何定制
在web配置类WebMvcAutoConfiguration中共有对首页的一系列处理

如何找得到资源下的index?

调用查找资源方法,找到index并且返回,没找到的话相对处理后返回空

SpringBoot页面跳转:
@Controller
public class HelloController {
@RequestMapping("/a")
public String hello(){
return "index";
}
}
注意:
- 在template目录下的所有页面,只能通过controller来跳转
- 需要模版引擎的支持
模版引擎:Thymeleaf
我们以前用jsp来展示数据,模版引擎的作用就是我们来写一个页面模版,比如一些值,表达式,tomcat支持jsp但是由于我们用的是嵌入式的tomcat,所以他现在默认是不支持jsp的
thymeleaf:
Thymeleaf 是适用于 Web 和独立环境的现代服务器端 java 模板引擎,能够处理 html、XML、javaScript、CSS 甚至纯文本。
Thymeleaf 的主要目标是提供一种优雅且高度可维护的模板创建方式。为了实现这一点,它建立在自然模板的概念之上,以不影响模板用作设计原型的方式将其逻辑注入模板文件。这改善了设计的沟通并弥合了设计和开发团队之间的差距。
Thymeleaf也已经从一开始就设计了Web标准记-尤其是html5 -允许您创建充分验证模板
Springboot推荐使用模版引擎来简化开发,

引入依赖:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
使用只需要导入依赖,我们将html放到templeats下就可以跳转了
注意:如果导入jar失败尝试回退版本,即可
thymeleaf基础语法:
<!--所有的html元素都可以被thymeleaf接管,如何接管? th:元素-->
<div th:text="${msg}"></div>
表达式:
${x}将返回x存储在 Thymeleaf 上下文中或作为请求属性的变量。${param.x}将返回一个名为(可能是多值的)的请求参数x。${session.x}将返回一个会话属性叫x。${application.x}将返回一个名为的servlet 上下文属性x。
常用语法:
- 简单的表达:
- 变量表达式:
${...} - 选择变量表达式:
*{...} - 消息表达:
#{...} - 链接 URL 表达式:
@{...} - 片段表达式:
~{...}
- 变量表达式:
- 文字
- 文本字面量:
'one text','Another one!',… - 数字字面量:
0,34,3.0,12.3,… - 布尔文字:
true,false - 空字面量:
null - 文字标记:
one,sometext,main,…
- 文本字面量:
- 文字操作:
- 字符串连接:
+ - 字面替换:
|The name is ${name}|
- 字符串连接:
- 算术运算:
- 二元运算符:
+,-,*,/,% - 减号(一元运算符):
-
- 二元运算符:
- 布尔运算:
- 二元运算符:
and,or - 布尔否定(一元运算符):
!,not
- 二元运算符:
- 比较与相等:
- 比较器:
>,<,>=,<=(gt,lt,ge,le) - 等式运算符:
==,!=(eq,ne)
- 比较器:
- 条件运算符:
- 如果-那么:
(if) ? (then) - 如果-然后-其他:
(if) ? (then) : (else) - 默认:
(value) ?: (defaultvalue)
- 如果-那么:
常用代码示例:
controller:index
@Controller
public class HelloController {
@RequestMapping("/index")
public String hello(Model model){
model.addAttribute("msg","<h1>hello SpringBoot</h1>");
model.addAttribute("users", Arrays.asList("hyc","lhy"));
return "index";
}
}
index.html
<!--所有的html元素都可以被thymeleaf接管,如何接管? th:元素-->
<!--不转义-->
<div th:text="${msg}"></div>
<!--转义-->
<div th:utext="${msg}"></div>
<hr>
<!--th:text显式数据-->
<h3 th:each="user:${users}" th:text="${user}"></h3>
<!--行内显式数据-->
<h3 th:each="user:${users}" >[[${user}]]</h3>
</body>
小结:
- 看了一下Springboot的WebMvcAutoConfiguration的设置首页的方法,发现和我们之前SpringMVC的视图解析器十分相似,对比学习,更加提高
- 模版引擎可以方便我们把数据放到前端页面,简化我们的开发前端需要传值的操作,提升开发效率,
SpringBoot与Thymeleaf:静态资源、首页定制与模板引擎

本文介绍了SpringBoot中处理静态资源的方法,包括webjars和public目录的优先级,以及如何自定义首页。讲解了Thymeleaf模板引擎的引入和基础语法,展示了如何在Controller中返回数据并在Thymeleaf页面上显示。通过实例代码演示了Thymeleaf表达式的使用,强调了其简化前端开发和提高效率的优势。
1198

被折叠的 条评论
为什么被折叠?



