Springboot学习(九)---内置对象,内置工具类,模板

内置对象

官方手册:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

内置对象可以在模板中直接使用

#request表示HttpServletRequest对象

#session表示HttpSession对象

session表HttpSession对象,是#session的简单表达方式

举例,创建一个新的Springboot项目,添加Thymeleaf和web依赖

在static下创建index页面




    
    内置对象,工具类


内置对象


在java目录下创建controller类

package com.ys.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

@Controller
public class ZController {
    @GetMapping("/UrlRequest")
    public String UrlRequest(HttpServletRequest request, HttpSession session){
        request.setAttribute("requestData","request作用域");
        request.getSession().setAttribute("sessionData","session作用域");
        //直接使用session
        session.setAttribute("s","直接使用session");
        return "UrlRequest";
    }
}

在templates下创建页面




    
    #request


#request表示HttpServletRequest对象

获取作用域中的数据

request内置方法演示

getRequestURL=
getRequestURI=
getQueryString=
getContextPath=
getServerName=
getServerPort=

session内置方法演示

getId=

查看结果

Springboot学习(九)---内置对象,内置工具类,模板_第1张图片

Thymeleaf中无智能提示解决办法

如果在编写页面时,没有智能提示语法和方法,可以按照以下步骤进行解决

 注意:使用此方法改变后,部分自定义的变量名可能会显示无法识别报错,但是不影响数据的输出和页面的显示

在插件中下载

Springboot学习(九)---内置对象,内置工具类,模板_第2张图片

右键点击编写的页面,点击红框选择的按钮

Springboot学习(九)---内置对象,内置工具类,模板_第3张图片

内置工具类

官方手册:Tutorial: Using Thymeleaf

#dates:java.util.Data对象的实用方法,

#set:set的实用方法

#maps:map的实用方法

#aggregates:对数组或集合创建聚合的实用方法

null处理

部分的内置工具类功能演示

创建实体类

package com.ys.pojo;

public class Dog {
    private String name;

    public Dog() {
    }

    public Dog(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
package com.ys.pojo;

public class Cat {
    private String name;

    public Cat(String name) {
        this.name = name;
    }

    public Cat() {
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
package com.ys.pojo;

public class Zoo {
    private  Cat cat;
    private Dog dog;

    @Override
    public String toString() {
        return "Zoo{" +
                "cat=" + cat +
                ", dog=" + dog +
                '}';
    }

    public Cat getCat() {
        return cat;
    }

    public void setCat(Cat cat) {
        this.cat = cat;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    public Zoo() {
    }

    public Zoo(Cat cat, Dog dog) {
        this.cat = cat;
        this.dog = dog;
    }
}

编写index页面




    
    内置对象,工具类


内置对象


内置工具类对象

编写controller

package com.ys.controller;

import com.ys.pojo.Cat;
import com.ys.pojo.Dog;
import com.ys.pojo.Zoo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

@Controller
public class ZooController {
//    内置的工具类对象
    @GetMapping("/Zoo")
    public String Zoo(Model model){
        model.addAttribute("date",new Date());
        model.addAttribute("number","84913.259");
        model.addAttribute("string","ysJavaHelloWorld");
//        使用Arrays工具类生成list
        List list= Arrays.asList("a","b","c");
        model.addAttribute("list",list);

        Zoo zoo=new Zoo();
        Cat cat=new Cat();
        cat.setName("短腿");
        Dog dog =new Dog();
        dog.setName("中华田园犬");
        zoo.setCat(cat);
        zoo.setDog(dog);
        model.addAttribute("zoo",zoo);
        return "Zoo";
    }
}

编写页面




    
    Title


操作日期类对象的工具类 #dates


操作数字的工具类 #numbers


操作字符串的工具类 #strings


操作list的工具类 #lists


空值 null

模板

模板的作用就是代码的复用,减少重复代码的工作量

定义模板的语法 :th:fragment="自定义模板名">

引用模板的语法:~{templatename : : selector} 或 templatename : : selector

                            templatename:模板所在的文件名称

                            selector:自定义的模板名称

对于使用模板:包含模板(th:include),插入模板(th:insert)

在index上添加链接




    
    内置对象,工具类


内置对象


内置工具类对象

自定义模板

编写自定义的模板页面




    
    模板


我的来自模板的类容

我存在于Fragment.html页面

编写controller

package com.ys.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

@Controller
public class ZController {
    @GetMapping("/Login")
    public  String Login(){
        return "Login";
    }
}

在页面使用模板内容




    
    自定义模板


th:include

第一种方式~{temPlateName::selector}

我是div,include模板Fragment

第二种方式temPlateName::selector

我是div,include模板Fragment

th:insert

第一种方式~{temPlateName::selector}

我是div,insert模板Fragment

第二种方式temPlateName::selector

我是div,insert模板Fragment

查看结果

Springboot学习(九)---内置对象,内置工具类,模板_第4张图片

 这几种不同方式的区别:在于使用模板后,页面的源代码不同

insert会将模板打包到一个div里再拼接到页面代码上

Springboot学习(九)---内置对象,内置工具类,模板_第5张图片

使用整个页面作为模板

第一种方式

第二种方式

使用不在同一个目录的模板页面(即模板页面和展示页面不在同一级)

 路径是指模板页面和展示页面的相对路径

你可能感兴趣的:(Java,学习,spring,boot,java)