Springboot中的web以及模板引擎

06-01 1266阅读

一.简介

使用SpringBoot;

1.   创建SpringBoot应用,选中我们需要的模块;

2.   SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来

3.   自己编写业务代码;

自动配置原理?

这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxx        

Springboot中的web以及模板引擎

二.SpringBoot对静态资源的映射规则

@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)
public class ResourceProperties implements ResourceLoaderAware {
//可以设置和静态资源有关的参数,缓存时间等

WebMvcAuotConfiguration:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
     if (!this.resourceProperties.isAddMappings()) {
           logger.debug("Default resource handling disabled");
           return;

      }

Integer cachePeriod = this.resourceProperties.getCachePeriod();
if (!registry.hasMappingForPattern("/webjars/**")) {
     customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META‐INF/resources/webjars/").setCachePeriod(cachePeriod));

}

String staticPathPattern = this.mvcProperties.getStaticPathPattern();
//静态资源文件夹映射
if (!registry.hasMappingForPattern(staticPathPattern)) {
      customizeResourceHandlerRegistration(registry.

addResourceHandler(staticPathPattern).addResourceLocations(this.resourceProperties.getStaticLocations()).setCachePeriod(cachePeriod));

}

} /

/配置欢迎页映射
@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(
       ResourceProperties resourceProperties) {
       return new WelcomePageHandlerMapping(resourceProperties.getWelcomePage(),

this.mvcProperties.getStaticPathPattern());

}
//配置喜欢的图标
@Configuration

@ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)
public static class FaviconConfiguration {
       private final ResourceProperties resourceProperties;
       public FaviconConfiguration(ResourceProperties resourceProperties) {
            this.resourceProperties = resourceProperties;

}

 @Bean
public SimpleUrlHandlerMapping faviconHandlerMapping() {
       SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
       mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
       //所有 **/favicon.ico
            mapping.setUrlMap(Collections.singletonMap("**/favicon.ico",

faviconRequestHandler());
return mapping;

}

@Bean
public ResourceHttpRequestHandler faviconRequestHandler() {
       ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler();
       requestHandler.setLocations(this.resourceProperties.getFaviconLocations());
       return requestHandler;

 }

}

1.   所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;

webjars:以jar包的方式引入静态资源;WebJars - Web Libraries in Jars

Springboot中的web以及模板引擎

localhost:8080/webjars/jquery/3.3.1/jquery.js

在访问的时候只需要写webjars下面资源的名称即可

    org.webjars

    jquery

    3.3.1

2.   "/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射

"classpath:/META‐INF/resources/",

"classpath:/resources/",

"classpath:/static/",

"classpath:/public/"

"/":当前项目的根路径

localhost:8080/abc ===》 去静态资源文件夹里面找abc

3.   欢迎页,静态资源文件夹下的所有index.html页面;被"/**"映射;

localhost:8080/ 找index页面

三.模板引擎

一些常见的模板引擎:

JSP、Velocity、Freemarker、Thymeleaf

Springboot中的web以及模板引擎

SpringBoot推荐的Thymeleaf;

语法更简单,功能更强大;

1.引入thymeleaf

在pom.xml中引入


    org.springframework.boot
    spring-boot-starter-thymeleaf

从spring父文件中能看到Springboot2.0.1所使用的thymeleaf版本是3.0.9

springBoot启动的时候会自动配置

org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration

从ThymeleafAutoConfiguration的源代码中我们可以得知ThymeleafProperties

中配置了Thymeleaf的规则

Springboot中的web以及模板引擎

Springboot中的web以及模板引擎

Springboot中的web以及模板引擎

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;

    private boolean cache;

我们使用html作为模板,而且默认的前缀是放在classpath:/templates/下,后缀是.html

当然这些属性我们都可以通过application.properties来修改。我们采用默认即可。

示例:

1.在templates下创建一个success.html

2.创建一个TestController提供一个访问的方法

@Controller
@RequestMapping("/TestController")
public class TestController {
    @RequestMapping("/success")
    public String hello(Model model){
        model.addAttribute("hello","zhangsan");
        return "success";
    }
}

3.在thymeleaf模板中取值(success.html中)



    Title




4.在application配置文件中添加端口号

server:
  port: 8085

Springboot中的web以及模板引擎

2.Thymeleaf语法

Thymeleaf 教程中文文档链接   Thymeleaf 教程 

2.1标准表达式语法

     (1)变量表达式

变量表达式即OGNL表达式或Spring EL表达式(在Spring术语中也叫model attributes)。如下所示: ${session.user.name}

它们将以HTML标签的一个属性来表示:

th:text="${book.author.name}">

(2)选择(星号)表达式

择表达式很像变量表达式,不过它们用一个预先选择的对象来代替上下文变量容器(map)来执行,如下: *{customer.name}

被指定的object由th:object属性定义:

th:object="${book}">

 ...

  th:text="*{title}">...

 ...

  (3)文字国际化表达式

文字国际化表达式允许我们从一个外部文件获取区域文字信息(.properties),用Key索引Value,还可以提供一组参数(可选)

#{main.title}

    (4)URL表达式

URL表达式指的是把一个有用的上下文或回话信息添加到URL,这个过程经常被叫做URL重写。不需要指定项目名字
@{/order/list} 

URL还可以设置参数: 

@{/order/details(id=${orderId})} 

让我们看这些表达式:

href="main.html" rel="external nofollow" th:href="@{/main}" rel="external n

2.2表达式支持的语法

字面(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): >, =,
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码