java基础对于框架很重要吗

java基础对于框架很重要吗2020 继续加油 java 基础对于框架很重要吗 学技术 我们是认真的 哈喽 大家好 今天又是技术的一课 如果说编程世界是五颜六色的 那么 java 绝对是其中的最灿烂的一抹红 从发展至今 java 便牢牢占据编程语言排行榜的第一位 除了它自身的优势特征 可移植 多线程 安全 扩展性强等之外 Java 语言之所以能够迅速在科技行业内普及

大家好,我是讯享网,很高兴认识大家。



2020

继续加油

java基础对于框架很重要吗

学技术 我们是认真的

哈喽,大家好,今天又是技术的一课!

如果说编程世界是五颜六色的,那么java绝对是其中的最灿烂的一抹红。

从发展至今,java便牢牢占据编程语言排行榜的第一位。除了它自身的优势特征:可移植、多线程、安全、扩展性强等之外,Java语言之所以能够迅速在科技行业内普及,一个重要的原因是Java语言的出现恰好契合了Web时代对于编程语言的要求,可以说Java语言的大流行是互联网时代发展的必然结果,它符合互联网发展的需要。

而Java开发者更应该知道,学java就更离不开Spring Boot,因为许多微服务都是使用Spring Boot构建的。

那么今天带来的技术主题是:

通用Sring Boot整合视图之Thymeleaf

Spring Boot视图介绍

虽然现在慢慢在流行前后端分离开发,但是还是有一些公司在做前后端不分的开发,而在前后端不分的开发中,我们就会需要后端页面模板(实际上,即使前后端分离,也会在一些场景下需要使用页面模板,例如邮件发送模板)。

早期的 Spring Boot 中还支持使用 Velocity 作为页面模板,现在的 Spring Boot 中已经不支持 Velocity 了,页面模板主要支持 Thymeleaf 和 Freemarker ,其中Thymeleaf是官方推荐的视图技术。当然,作为 Java 最基本的页面模板 Jsp ,Spring Boot 也是支持的,只是使用比较麻烦。下面针对这三种模板技术进行介绍。

整合Thymeleaf模板

Thymeleaf 是新一代 Java 模板引擎,它类似于 Velocity、FreeMarker 等传统 Java 模板引擎,但是与传统 Java 模板引擎不同的是,Thymeleaf 支持 HTML 原型。

它既可以让前端工程师在浏览器中直接打开查看样式,也可以让后端工程师结合真实数据查看显示效果,同时,SpringBoot 提供了 Thymeleaf 自动化配置解决方案,因此在 SpringBoot 中使用 Thymeleaf 非常方便。

事实上, Thymeleaf 除了展示基本的 HTML ,进行页面渲染之外,也可以作为一个 HTML 片段进行渲染,例如我们在做邮件发送时,可以使用 Thymeleaf 作为邮件发送模板。

另外,由于 Thymeleaf 模板后缀为 .html,可以直接被浏览器打开,因此,预览时非常方便。

实施步骤

创建工程,添加Thymeleaf依赖和web依赖。如下图所示:

0 1

pom.xml中添加依赖如下:



<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>



由于我们对于启动器的使用经验不足,带着大家看看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;
    private boolean cache;
    private Integer templateResolverOrder;
    private String[] viewNames;
    private String[] excludedViewNames;
    private boolean enableSpringElCompiler;
    private boolean renderHiddenMarkersBeforeCheckboxes;
    private boolean enabled;
    private final ThymeleafProperties.Servlet servlet;
    private final ThymeleafProperties.Reactive reactive;

    public ThymeleafProperties() {
        this.encoding = DEFAULT_ENCODING;
        this.cache = true;
        this.renderHiddenMarkersBeforeCheckboxes = false;
        this.enabled = true;
        this.servlet = new ThymeleafProperties.Servlet();
        this.reactive = new ThymeleafProperties.Reactive();
    }

    //剩余省略...

}



首先通过 @ConfigurationProperties 注解,将 application.properties 前为 spring.thymeleaf 的配置和这个类中的属性绑定。前三个 static 变量定义了默认的编码格式、视图解析器的前缀、后缀等。从前三行配置中,可以看出来,Thymeleaf 模板的默认位置在 resources/templates 目录下,默认的后缀是 html 。这些配置,如果开发者不自己提供,则使用 默认的,如果自己提供,则在 application.properties 中以 spring.thymeleaf开始相关的配置。


0 2

创建包entity,编写Book类

创建包entity,编写Book类



package com.java.chapter02.entity;

public class Book {
    private Integer id;
    private String name;
    private String author;

    public Book() {
    }

    public Book(Integer id, String name, String author) {
        this.id = id;
        this.name = name;
        this.author = author;
    }

//getter和setter省略...
}



0 3

编写IndexController

编写IndexController



package com.java.chapter02.controller;

import com.java.chapter02.entity.Book;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.ArrayList;
import java.util.List;

@Controller
public class IndexController {
    @GetMapping("/index")
    public String index(Model model){
        List<Book> list=new ArrayList<>();
        Book book1=new Book(1,"罗贯中","三国演义");
        Book book2=new Book(2,"曹雪芹","红楼梦");
        Book book3=new Book(3,"吴承恩","西游记");
        Book book4=new Book(4,"施耐庵","水浒传");

        list.add(book1);
        list.add(book2);
        list.add(book3);
        list.add(book4);
        model.addAttribute("list",list);
        return "index";
    }
}



0 4

在templates文件夹下面,编写页面index.html,实现隔行变色。

在templates文件夹下面,编写页面index.html,实现隔行变色。



<!DOCTYPE html >
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>书籍列表展示</title>
    <style type="text/css">
        .odd{
            background-color: royalblue;
        }
    </style>
</head>
<body>
    <table border="1" cellpadding="1" cellspacing="1" width="400" th:if="${list!=null&& list.size()>0}">
        <tr th:each="book,index : ${list}" th:class="${index.odd}?'odd'">
            <td th:text="${book.id}"></td>
            <td th:text="${book.name}"></td>
            <td th:text="${book.author}"></td>
        </tr>
    </table>
</body>
</html>



这里要注意的是要导入thymeleaf命名空间,里面的循环标签和jsp的JSTL有所区别,请大家注意。在 Thymeleaf 中,通过 th:each 指令来遍历一个集合,数据的展示通过 th:text 指令来实现。index是迭代本行的索引。Th:class是设置样式,index.odd是索引是偶数行的。如果是偶数行那么就使用样式odd。Book就是每次迭代的变量。其他的和jsp中用法差不多,不多解释。


0 5

测试

在浏览器中输入:http://localhost:8080/index,最后的结果如下,大家可以测试一下。

当然,如果大家对thymeleaf语法感兴趣,其实非常简单,还要部分没有讲解到的地方可以参考下面的链接进行学习:

https://www.cnblogs.com/msi-chen/p/10974009.html#_label1_9。

那么今天的峰哥说技术—技术贴就分享到这!如果你在学习的过程中还有什么问题可在后台留言,小课会及时反馈给技术大佬—峰哥,实时为你解答你的疑惑。

学技术,我们是认真的。峰哥说技术是特地为对java感兴趣或者想进入互联网的小伙伴开设的技术专栏,每日一更。纯技术分享, 除了在公众号分享,还会分享在峰哥的博客中:https://www.cnblogs.com/027kgc/,欢迎各位小伙伴前往交流探讨。


在前两天我们的技术大咖讲述了:

条件注解Spring Boot自动配置的基石

手撸Spring Boot自定义启动器,解密Spring Boot自动化配置原理

如果需要查看,后台留言回复“1”即可获取代码详情。


今日份赠送资源
课本名称
移动UI界面设计

领取资源:

链接:https://pan.baidu.com/s/1nZxpEQYzqKVcJs5X14oiSA&shfl=sharepset

提取码:heeu

课本名称
移动UI商业项目设计实战

领取资源

链接:https://pan.baidu.com/s/1ykvtax9ONfLfAVBwhloSrg&shfl=sharepset

提取码:2ms5

想获取更多请加小课领取哟!




确认过眼神
你是我爱的人
学习课程 从加小课开始
领取资源

=END=

小讯
上一篇 2024-12-25 11:21
下一篇 2024-12-24 17:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/10288.html