学习视频链接:小狂神Springboot
志当存高远。——诸葛亮《诫外生书》
jar:webapp在哪里
最大特点:自动装配
SpringBoot帮我们配置了什么,能不能进行修改,能修改那些东西,能不能拓展
要解决的问题:
@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);
}
});
}
一个网站是和maven仓库类似的导入依赖的网站
导入的依赖结构是
我们的静态资源路径方法中
addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
就是去类路径下找到/META-INF/resources/webjars/下的文件,
例子:
访问http://localhost:8080/webjars/jquery/3.6.0/jquery.js
实测成功
总结:
在web配置类WebMvcAutoConfiguration中共有对首页的一系列处理
如何找得到资源下的index?
调用查找资源方法,找到index并且返回,没找到的话相对处理后返回空
@Controller
public class HelloController {
@RequestMapping("/a")
public String hello(){
return "index";
}
}
注意:
我们以前用jsp来展示数据,模版引擎的作用就是我们来写一个页面模版,比如一些值,表达式,tomcat支持jsp但是由于我们用的是嵌入式的tomcat,所以他现在默认是不支持jsp的
Thymeleaf 是适用于 Web 和独立环境的现代服务器端 java 模板引擎,能够处理 html、XML、javaScript、CSS 甚至纯文本。
Thymeleaf 的主要目标是提供一种优雅且高度可维护的模板创建方式。为了实现这一点,它建立在自然模板的概念之上,以不影响模板用作设计原型的方式将其逻辑注入模板文件。这改善了设计的沟通并弥合了设计和开发团队之间的差距。
Thymeleaf也已经从一开始就设计了Web标准记-尤其是html5 -允许您创建充分验证模板
Springboot推荐使用模版引擎来简化开发,
引入依赖:
<dependency>
<groupId>org.thymeleafgroupId>
<artifactId>thymeleaf-spring5artifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
使用只需要导入依赖,我们将html放到templeats下就可以跳转了
注意:如果导入jar失败尝试回退版本,即可
<div th:text="${msg}">div>
表达式:
${x}
将返回x
存储在 Thymeleaf 上下文中或作为请求属性的变量。${param.x}
将返回一个名为(可能是多值的)的请求参数x
。${session.x}
将返回一个会话属性叫x
。${application.x}
将返回一个名为的servlet 上下文属性x
。常用语法:
${...}
*{...}
#{...}
@{...}
~{...}
'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","hello SpringBoot");
model.addAttribute("users", Arrays.asList("hyc","lhy"));
return "index";
}
}
index.html
<div th:text="${msg}">div>
<div th:utext="${msg}">div>
<hr>
<h3 th:each="user:${users}" th:text="${user}">h3>
<h3 th:each="user:${users}" >[[${user}]]h3>
body>
小结: