SpringBoot:Web(附带示例代码)

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

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

实测成功

总结:

  1. SpringBoot处理静态资源的方式
    • webjars:http://localhost:8080/webjars/jquery/3.6.0/jquery.js
    • pubilc:按优先级排序:resources,static,public,如何访问:/**:
    • http://localhost:8080/1.js
  2. 优先级: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的视图解析器十分相似,对比学习,更加提高
  • 模版引擎可以方便我们把数据放到前端页面,简化我们的开发前端需要传值的操作,提升开发效率,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷环渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值