zoukankan      html  css  js  c++  java
  • 三、thymeleaf模板引擎构建前台html, 后台使用 ModelAndView 和 Model 模型

    项目源码:https://github.com/y369q369/springBoot.git      ->     thymeleaf

     私聊QQ: 1486866853

    1.pom.xml中依赖jar包(注意加红字段)

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.3.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>MVC</groupId>
        <artifactId>springbootMVC</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springbootMVC</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>

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

            <!-- thymeleaf模板依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            
            <!-- web依赖 :包含内置tomcat和spring的web依赖  -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    2.在 src/main/resources 新建 templates 目录  和 application.yml(替代application.properties, 在springBoot项目中如果两者都有会先加载application.yml, 然后再加载 application.properties 覆盖yml文件, 建议只留 yml文件)

     application.yml 的配置内容(注意:spring.thymeleaf.mode: LEGACYHTML5,解除html的书写规范)

    server:
      #springBoot内置tomact的端口号
      port: 8086
      servlet:
        #springBoot项目的前缀名
        context-path: /thymeleaf
    
    spring:
      # thymeleaf 模板引擎配置
      thymeleaf:
       # 不设置缓存 cache: false # thymeleaf模板 解除严格约束(对html5没有结束符的标签解决) mode: LEGACYHTML5 # thymeleaf修饰的动态页面 自定义根目录(springBoot默认的动态页面存放文件夹就是templates) prefix: classpath:/templates/

    3. ModelAndView的数据模型 : 在 src/main/java 新建 controller 文件夹,在新建 ModelAndViewController.java 类,  在templates目录下新建对应的 modelAndView.html 

    3.1   ModelAndViewController.java

    package demo.controller;
    
    import java.util.Map;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    /**
      * @author GrassPrince
      * @time   2019年3月23日 -下午9:01:57
      * @description:测试ModelAndView的模型
      */
    @RequestMapping("/ModelAndView")
    @Controller
    public class ModelAndViewController {
    	
    	//测试new ModelAndView(String viewName)构造方法
    	@GetMapping("/modelAndView1")
    	public ModelAndView modelAndView1() {
    		//new ModelAndView("/modelAndView")和new ModelAndView("modelAndView")都可以
    //		return new ModelAndView("/modelAndView");
    		return new ModelAndView("modelAndView");
    		//重定向的地址注意,完全地址且前面需要加/
    //		return new ModelAndView("redirect:/ModelAndView/modelAndView2");
    	}
    	
    	//测试ModelAndView(String viewName, String modelName, Object modelObject)构造方法
    	@GetMapping("/modelAndView2")
    	public ModelAndView modelAndView2() {
    		return new ModelAndView("/modelAndView", "model2", "modelObject  2");
    	} 
    	
    	//测试ModelAndView(String viewName, @Nullable Map<String, ?> model)构造方法
    	@GetMapping("/modelAndView3")
    	public ModelAndView modelAndView3(Map<String, Object> map) {
    		map.put("map1", "obj 1");
    		map.put("map2", "obj 2");
    		return new ModelAndView("modelAndView", map);
    	}
    	
    	//测试addObject(String attributeName, @Nullable Object attributeValue)
    	//	  addObject(Object attributeValue)方法
    	@GetMapping("/modelAndView4")
    	public ModelAndView modelAndView4() {
    		ModelAndView mav = new ModelAndView();
    		//设置返回的url
    		mav.setViewName("modelAndView");
    		//变量名, 变量值
    		mav.addObject("obj1", "modelObject  4");
    		// 变量值(变量名为变量值的所属类的类名)
    		mav.addObject("modelObject  5");
    		return mav;
    	}
    }
    

     3.2  modelAndView.html   

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org" >
    	<head>
    		<title>测试ModelAndView</title>
    		<meta name="keywords" content="keyword1,keyword2,keyword3"/>
    	    <meta name="description" content="this is my page"/>
    	    <meta name="content-type" content="text/html; charset=UTF-8"/>
    	</head>
    	<body>
    		<div style="padding-top : 100px; text-align: center;">
    			<p>Hello ModelAndView</p>
    			
    			<!-- 接收model2 -->
    			<p th:text="${model2}"></p>
    			
    			<!-- 接收map,拼接的字符串用' -->
    			<p th:text="${map1 +', '+ map2}"></p>
    			
    			<!-- 接收obj,拼接的字符串用' -->
    			<p th:text="${obj1 +', '+ string}"></p>
    		</div>
    		
    	</body>
    </html>
    

    3.3  启动项目下的 DemoApplication.java (myeclipse2018右击,Run As / Debug As   ->  Spring Boot App)

    浏览器地址栏输入 : http://localhost:8086/thymeleaf/ModelAndView/modelAndView2 , 页面显示如下 

     4.Model数据模型  ,在 controller 文件夹下新建 ModelController.java 类,  在 templates 目录下新建  model.html

    4.1  ModelController.java

    package demo.controller;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
      * @author GrassPrince
      * @time   2019年3月24日 -上午12:15:05
      * @description:Model的使用,Model必须在方法参数中定义
      */
    @RequestMapping("/Model")
    @Controller
    public class ModelController {
    	
    	//测试重定向
    	@GetMapping("/model4")
    	public String model4(Model model) {
    		return "redirect:https://www.baidu.com";
    	}
    	
    	//测试addAttribute(Object attributeValue)方法
    	@GetMapping("/model1")
    	public String model1(Model model) {
    		// 对象值, 对象名为对象值所属类型
    		model.addAttribute("addAttribute(Object attributeValue)");
    		return "model";
    	}
    	
    	//测试addAttribute(String attributeName, @Nullable Object attributeValue)方法
    	@GetMapping("/model2")
    	public String model2(Model model) {
    		//  对象名,对象值
    		model.addAttribute("content", "addAttribute(String attributeName, @Nullable Object attributeValue)");
    		return "model";
    	}
    	
    	//测试addAllAttributes(Map<String, ?> attributes)方法
    	@GetMapping("/model3")
    	public String model3(Model model) {
    		Map<String, Object> map = new HashMap<String, Object>();
    		map.put("map", "addAllAttributes(Map<String, ?> attributes)");
    		model.addAllAttributes(map);
    		return "model";
    	}
    
    }
    

     4.2  model.html

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org" >
    	<head>
    		<title>测试Model</title>
    		<meta name="keywords" content="keyword1,keyword2,keyword3"/>
    	    <meta name="description" content="this is my page"/>
    	    <meta name="content-type" content="text/html; charset=UTF-8"/>
    	</head>
    	<body>
    		<div style="padding-top : 100px; text-align: center;">
    			<p>Hello Model</p>
    			
    			<!-- 测试model的addAttribute(Object attributeValue)方法 -->
    			<p th:text="${string}"></p>
    			
    			<!-- 测试model的addAttribute(String attributeName, @Nullable Object attributeValue)方法 -->
    			<p th:text="${content}"></p>
    			
    			<!-- 测试model的addAllAttributes(Map<String, ?> attributes)方法 -->
    			<p th:text="${map}"></p>
    		</div>
    		
    		
    	</body>
    </html>
    

    4.3  启动项目下的 DemoApplication.java (myeclipse2018右击,Run As / Debug As   ->  Spring Boot App)

    浏览器地址栏输入 : http://localhost:8086/thymeleaf/Model/model1, 页面显示如下 

  • 相关阅读:
    发现另一种简便的完全居中css写法 element.style { width: 500px; height: 200px; background: #eee; position: absolute; margin: auto; top: 0; left: 0; bottom: 0; right: 0; }
    子网掩码随笔
    C# MVC网站自动由HTTP转为HTTPS
    c++中的void*
    权利的游戏
    字符串
    字符串
    权利的游戏 S0803
    加权有向图
    加权无向图
  • 原文地址:https://www.cnblogs.com/y369/p/10645425.html
Copyright © 2011-2022 走看看