学习笔记:SpringBoot中的WEB开发

使用SpringBoot开发web应用的步骤:
1. 创建SpringBoot应用,选择需要的starter(启动器)
2. 在SpringBoot中,可以直接写业务逻辑代码,只有很小的配置在配置文件

web开发的自动配置类:WebMvcAutoConfiguration。自动配置类,会在项目启动的时候直接配置到容器中。

一、关于静态资源的映射 :

1. 静态资源的默认位置

查看源码::WebMvcAutoConfiguration(自动配置类)->addResourceHandlers(ResourceHandlerRegistry registry)->getStaticLocations()->
staticLocations(这是一个字符串数组,指向一个不可变的数组常量)->CLASSPATH_RESOURCE_LOCATIONS.

		private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
    "classpath:/META-INF/resources/",
				"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
  • “classpath:/META-INF/resources/”;
  • “classpath:/resources/”,
  • “classpath:/static/”,
  • “classpath:/public/”
  • “classpath:/” (这个在springboot2.0中已经被删除)

当访问静态资源时,会到所有资源静态文件夹去查找,当然,也可在配置文件中去设置静态资源文件夹目录,具体代码如下:

spring.web.resources.static-locations=classpath:/static,classpath:/public

2. 欢迎页:

WebMvcAutoConfiguration中的内部类:->welcomePageHandlerMapping() 方法->getWelcomePage()->getIndexHtml(String location)
getIndexHtml(String location)的具体示例代码如下:

private Resource getIndexHtml(Resource location) {
   
			try {
   
				Resource resource = location.createRelative("index.html");
				if (resource.exists() && (resource.getURL() != null)) {
   
					return resource;
				}
			}
			catch (Exception ex) {
   
			}
			return null;
		}

将index.html页面放到任意一个静态资源文件夹中,就可以访问欢迎页面!

提醒:欢迎页面和静态资源所在的文件夹中的位置,都必须放在系统指定的四个路径下面,但欢迎页面必须以index.html来命名!

3. IOC图标

WebMvcAutoConfiguration中自动配置类的内部类:->FaviconConfiguration->faviconHandlerMapping()方法,将名为:favicon.ico的图标放到类路径下四个静态资源位置,就可以在客户端浏览器的ico处显示图标。


二、模板引擎(Thymeleaf)

1.简介

目前java web开发推荐使用模板引擎,不建议使用jsp页面

  • jsp缺点:本质上就是servlet,需要后台进行编译,这个过程需要花时间,效率低;
  • 模板引擎:不需要编译,速度较快;

常用的模板引擎有哪些:

  • Freemarker
  • Velocity,
  • hymelear

SpringBoot推荐使用Thymeleaf模板引擎,SpringBoot不支持jsp页面,因为Jsp必须打成war包
补充:目前主流的WEB开发,他更推荐前后端分离,前端会使用一些MVVM框架:Vue.js,Angular,React等

2.Thymeleaf使用步骤

步骤:

  1. 添加相应的依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.5.2</version>
        </dependency>
  1. 将HTML页面放到templates目录中
  • templates目录下的html页面不能够直接访问,需要在Controller层Bean来通过Request中的URL映射到html页面。
    如何映射:找到期前缀、后缀
  • ThymeleafAutoConfiguration类是一个自动配置类,他提供了视图解析、渲染的功能!
  • 查找ThymeleafAutoConfiguration自动配置类->从注解@EnableConfiguratinProperties()中找到ThymeleafProperties属性配置类->从参数中找到前缀、后缀标识。
	private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;

	public static final String DEFAULT_PREFIX = "classpath:/templates/";

	public static final String DEFAULT_SUFFIX = ".html";
  • 可以通过配置文件application.properties文件来修改存放的目录
  1. 使用thymeleaf模板引擎
  1. 修改页面后,如何让页面实时生效?
  • 由于thymeleaf默认使用了缓存,在这里,只要禁用thymeleaf的缓存就可以
https://www.thymeleaf.org/index.html
  • 补充:还需要开启IDEA中的自动编译。IDEA自动保存时不会自动编译的!同时,运行中的项目是不会自动编译的,所以在需要修改两个地方。具体操作如下:
  • 在这里插入图片描述
    在这里插入图片描述

3.常用属性及语法规则

thymeleaf模板引擎,都是做为html标签的属性来使用,具体用法:th:语法内容

  1. 常用的属性:
th:text
th:utext

设置元素中的文本内容(th:text对特殊字符进行转义,而th:utext不对特殊字符中行转义)

使用内联方式,可以在元素中添加内容,就不会覆盖了
1. th:text 等价内联方式:[[${text}]] 可以转义
2. th:utext 等价内联方式: [(${text})] 不能转义

- th:html原生属性,所表达的意思是:html标签中所有的属性th:都有,主要目的是替换html原有的值,例如:

 <div id="mynewid" title="hello this is good!" th:id="${id}" th:title="${title}">hello java</div>
th:if 条件判断

他是一个判断语句,用于html模板中,从Request中得到数据,判断条件是否成立,如果成立的话,就输出标签体中的内容
在springboot中的内容

modelMap.addAttribute("age",18);

在html中的内容

<div th:if="${age>17}">hello</div>

主要意思是指:当if条件满足时,输出内容,不满足的时候,不显示内容

h:switch th:case

th:switch 和 th:case作用:和java中的switch:case语句的用法一样,他是在html模板中使用的

 modelMap.addAttribute("shenfeng","teacher");

在html中的内容

<p th:switch="${shenfeng}">
    <span th:case="admin">管理员</span>
    <span th:case="teacher">教师</span>
    <span th:case="student">学生</span>
</p>
th:each

th:each主要做用是对Request中的某个属性进行循环,将循环结果传递给迭代变量,这个迭代变量也是存储到Request中的属性,然后再从标签体中,用th:text来读取迭代变更的值。
在springboot中的内容

modelMap.addAttribute("ulist", Arrays.asList("tom","good","hello"));

在html中的内容

<ul>
    <li th:each="name:${ulist}" th:text="${name}"></li>
</ul>
th:object

主要用来对数据进行绑定,与th:field结合进行使用,用于表单数据对象的绑定,将表单绑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值