SpringBoot的web开发

Posted 杨治中

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot的web开发相关的知识,希望对你有一定的参考价值。


简介
Web开发的核心内容主要包括内嵌的Servlet容器和SpringMVC。

SpringBoot使用起来非常简洁,大部分配置都有SpringBoot自动装配。

SpringBoot的web支持
SpringBoot提供了spring-boot-starter-web为web开发予以支持,而这个启动器内嵌了Tomcat以及SpringMVC依赖。而web相关的自动配置存储在spring-boot-autoconfigure.jar的org.springframework.boot.autoconfigure.web包下。
其中如图:

 


从这些文件名就可以看出:

ServletWebServerFactoryAutoConfiguration和ServerProperties自动配置内嵌的Servlet容器
HttpEncodingAutoConfiguration和ServerProperties自动配置http编码
MultipartAutoConfiguration和MultipartProperties自动配置上传文件属性
WebMvcAutoConfiguration和WebMvcProperties配置Spring MVC


Thymeleaf,模板引擎
SpringBoot中推荐使用Thymeleaf,是因为Thymeleaf提供了完美的SpringMVC支持。

基础
Thymeleaf是一个Java类库,让是一个xml/xhtml/html5的模板引擎,可以作为MVC的View层。

Thymeleaf还提供了额外的模块与SpringMVC集成。

Thymeleaf 官网

Thymeleaf 在Github 的主页

Thymeleaf的自动配置规则:ThymeleafProperties

@ConfigurationProperties(prefix = "spring.thymeleaf")
public class ThymeleafProperties
    private static final Charset DEFAULT_ENCODING;
    public static final String DEFAULT_PREFIX = "classpath:/templates/";
    public static final String DEFAULT_SUFFIX = ".html";
    private boolean checkTemplate = true;
    private boolean checkTemplateLocation = true;
    private String prefix = "classpath:/templates/";
    private String suffix = ".html";
    private String mode = "HTML";
    private Charset encoding;


可以看到其中默认的前缀和后缀,所以只需要把html页面放在templates下,thymeleaf就会自动渲染。

模板引擎的作用
        做好一个前端页面模板,其中包含一些动态的值,我们写一些表达式代替。而这些值,是从后台获取的已经封装好的数据。然后把这个页面模板和数据交给模板引擎,模板引擎按照数据帮我们解析表达式、并把结果填充到指定的位置,然后把这个数据最终生成一个想要的内容输出到前端页面,这就是我们这个模板引擎,不管是jsp还是其他模板引擎,都是这个思想。只不过,不同模板引擎之间,语法不同。

Thymeleaf模板引擎,是一个高级语言的模板引擎,语法更简单,功能更强大。

使用Thymeleaf模板引擎
引入Thymeleaf并在html页面添加命名空间约束
<!--thymeleaf-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

 xmlns:th="http://www.thymeleaf.org"

Thymeleaf语法
参考Thymeleaf 官网

我们可以使用任意的th:xxx来替代html中原生属性的值

 


常见的表达式语法

Simple expressions:(表达式语法)
  Variable Expressions: $...:获取变量值
  Selection Variable Expressions: *...:选择表达式:和$在功能上是一样;
  Message Expressions: #...:获取国际化内容
  Link URL Expressions: @...:定义URL;
  Fragment Expressions: ~...:片段引用表达式

Literals(字面量)
      Text literals: 'one text' , 'Another one!' ,…
      Number literals: 0 , 34 , 3.0 , 12.3 ,…
      Boolean literals: true , false
      Null literal: null
      Literal tokens: one , sometext , main ,…
      
Text operations:(文本操作)
    String concatenation: +
    Literal substitutions: |The name is $name|
    
Arithmetic operations:(数学运算)
    Binary operators: + , - , * , / , %
    Minus sign (unary operator): -
    
Boolean operations:(布尔运算)
    Binary operators: and , or
    Boolean negation (unary operator): ! , not
    
Comparisons and equality:(比较运算)
    Comparators: > , < , >= , <= ( gt , lt , ge , le )
    Equality operators: == , != ( eq , ne )
    
Conditional operators:条件运算(三元运算符)
    If-then: (if) ? (then)
    If-then-else: (if) ? (then) : (else)
    Default: (value) ?: (defaultvalue)
    
Special tokens:
    No-Operation: _



使用SpringBoot的步骤
创建一个SpringBoot项目,选择需要的模块,SpringBoot默认将选择的模块自动配置。
手动配置文件中的配置部分。
更加专注编写业务代码,不需要考虑之前的一大堆配置。
静态资源的自动配置
在自动配置类WebMvcAutoConfigurationAdapter的addResourceHandlers方法中 定义了以下静态资源的自动配置。

1. 类文件路径
把类路径向下的/META-INF/resources,/resources,/static和/public文件夹下的静态文件直接映射为/**,可以通过http://localhost:8080/**来访问

2. webjar
何谓webjar,webjar就是将我们常用的脚本框架封装在jar包中的jar包

webjar官网

把webjar的/META-INF/resources/webjars/下的静态资源文件映射成/webjar/**,可以通过http://localhost:8080/webjar/**来访问

"classpath:/META-INF/resources/"   localhost:8080/webjars/
"classpath:/resources/"  //优先级最高   localhost:8080/
"classpath:/static/"   //优先级其次,默认     localhost:8080/
"classpath:/public/"    //优先级最低    localhost:8080/

 

阅读世界,共赴山海 423全民读书节,邀你共读

以上是关于SpringBoot的web开发的主要内容,如果未能解决你的问题,请参考以下文章

0.SpringBoot学习内容

八SpringBoot2核心技术——web开发(静态资源访问)

八SpringBoot2核心技术——web开发(静态资源访问)

九SpringBoot2核心技术——web开发(静态资源配置原理)

九SpringBoot2核心技术——web开发(静态资源配置原理)

SpringBoot技术专题「开发实战系列」全面梳理和分析一下相关的Web核心配置