1.关于后端响应前端和后端响应前端

流程浏览器输入网址发起请求-->spring Boot-->html-->前端浏览器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Page2</title>
</head>
<body>
<h1>Page2 页面</h1>
<p>欢迎访问 Page2!</p>
</body>
</html>
                                             ```html
											 

package cn.wolfcode.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Controller
public class PageController {
@RequestMapping("/page2")
public String page2(Model model){
System.out.println("page2");
return "page2";
}
} ```

把xmlns:th="http://www.thymeleaf.org"加入到

里就可以将静态变成动态 ``` 在controller中定义集合通过往集合添加东西通过${属性值}给page2.html传值 ``` @Controller public class PageController { @RequestMapping("/page2") public String page2(Map map){ System.out.println("page2"); map.put("name", "张三"); return "page2"; ```

page2 通过th:text来读取字段

<div th:text="${name}"></div>

条件语句

 controller里的
 map.put("sex",true);
 page2里的
 <div th:if ="${sex}">男<div/>
<div th:unless ="${sex}">女</div>
如果是true则输出男
     false则输出女
	 

利用list进行数据传递读取

 //利用list存储
        List<String> nameList=List.of("mao1","mao2","mao3");
        map.put("nameList", nameList);
		```java
//page2中的数据需要用each遍历list
  <div th:each="str:${nameList}">
        <span th:text="${str}"></span>
    </div>

apifox使用的一些事
输入要跳转的网址选择对应的请求方式
image

接口文档-->有利于前后端分离开发互不干涉<--接口文档由apifox生成
通过要规定多个请求方式需要定义一个集合集合里的请求方式都可以被使用

  @RequestMapping(value = "/page2" ,method = {RequestMethod.GET,RequestMethod.POST})

在类上定义一个请求方式可以更好的分类搜索地址就是双层

@Controller
@RequestMapping("/page")
public class PageController {
...
}

有responsebody的是后端响应前端

2. 关于@ResponseBody存在与否的区别

package cn.wolfcode.controller;

import cn.wolfcode.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@ResponseBody
@Controller
public class PageController {

    @RequestMapping(value = "/page2",method = {RequestMethod.GET,RequestMethod.POST})
    public   Map<String,String> page2(@RequestBody User user,Map<String,Object> map){
        System.out.println("page2");
        map.put("name", "张三");
        map.put("age", 17);
        map.put("sex", true);
        
        List<String> nameList = List.of("mao1", "mao2", "mao3");
        map.put("nameList", nameList);
        
        Map<String,String> dataMap = new ConcurrentHashMap<>();
        dataMap.put("username", user.getUsername());
        dataMap.put("password", user.getPassword());
        map.put("dataMap", dataMap);
        
       return dataMap;
     //   return "page2";
    }
}

在apifix中显示我在json中大括号自己写的类型和根据类型写入的值

显示结果:
image

如果将类外@ResponseBody注释掉如果将类外@ResponseBody注释掉 将Map<String,String>换成原本page2对应的String类型返回值从map该为page2

则在apifox中显示传递的值没有属性

如果将@RequestBody User user删掉还有和user有关的就可以在网页上显示

image