WEB开发

模板引擎

Spring Boot不建议我们使用jsp,建议使用模板引擎;同样也他给我们提供了模板引擎的自动配置。

提供了默认配置的模板引擎有以下几种:

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Groovy
  • Mustache

通过使用模板引擎来避免使用jsp。

使用Thymeleaf

首先第一步,引坐标

<!-- 模板引擎-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

默认情况下,Thymeleaf模板引擎的文件会放在templates文件夹下面,和静态资源一样,映射也已经配置好了。

默认的配置属性如下:

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

有需要的可以根据自己的实际情况去配置。

代码

将我们需要进行展示的网页放在templates文件夹下面,另外就是Thymeleaf的语法自己去网上看:传送门

下面这个是我的代码,然后作用就是,访问的时候,后端会传递一个值给前端,然后显示出来。

@Controller
public class WelcomeController {

    @RequestMapping("/")
    public String index(ModelMap modelMap) {
        
        modelMap.addAttribute("msg", "hello, how are you?");

        return "/index";
    }
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1 th:text="${msg}">123</h1>
</body>
</html>

启动

启动应用之后,直接访问127.0.0.1:8080就能够看到结果。

RESTful

啥是RESTful风格:我的理解就是,请求的地址比较简洁,使用GET、POST、PUT、DELETE这些不同的请求对应CRUD这些不同的方法

请求类型请求地址功能说明
GET/user查询所有的用户信息
GET/user/{id}查询单个用户信息
POST/user添加用户信息
PUT/user/{id}修改用户信息
DELETE/user/{id}删除用户信息

代码

下面的这个是一个Controller,然后进行各种操作之后的返回值为json数据

@RestController
@RequestMapping("/user")
public class UserController {
    /**
     * 使用Map模拟数据库
     */
    private static Map<Integer, User> userMap = new HashMap<>();

    static {
        userMap.put(0, new User(0, "张三", 22));
        userMap.put(1, new User(1, "李四", 32));
        userMap.put(2, new User(2, "王五", 43));
        userMap.put(3, new User(3, "刘六", 17));
    }
    /**
     * 获取用户列表,访问路径:/user/
     * @return 用户列表
     */
    @ApiOperation(value = "获取用户列表,访问路径")
    @GetMapping("")
    public List<User> getUserList() {
        ArrayList<User> users = new ArrayList<>(userMap.values());

        return users;
    }

    /**
     * 获取单个用户信息,访问路径:/user/{id}
     * @param id 用户Id
     * @return 用户信息
     */
    @ApiOperation("获取单个用户信息")
    @ApiImplicitParam(name = "id", value = "用户Id")
    @GetMapping("{id}")
    public User getUser(@PathVariable Integer id) {
        return userMap.get(id);
    }

    /**
     * 添加一个用户,访问路径:/user/
     * @param user 要增加的用户信息
     * @return 结果
     */
    @PostMapping("")
    public String addUser(User user) {
        userMap.put(user.getId(), user);
        System.out.println(user);
        return "success";
    }

    /**
     * 通过id更新用户信息,访问路径:/user/{id}
     * @param id 用户id
     * @param user 用户信息
     * @return 结果
     */
    @PutMapping("{id}")
    public String updateUser(@PathVariable Integer id, User user) {
        userMap.put(id, user);
        System.out.println(userMap);
        return "success";
    }

    /**
     * 删除一个用户,访问路径:/user/{id}
     * @param id 删除的用户的id
     * @return 结果
     */
    @DeleteMapping("{id}")
    public String deleteUser(@PathVariable Integer id) {
        userMap.remove(id);
        System.out.println(userMap);
        return "success";
    }
}

测试

省事没有写视图,直接使用了Spring Boot集成的测试

@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void getUserList() throws Exception {
        mockMvc.perform(get("/user"))
                .andDo(print())
                .andExpect(status().isOk());
    }

    @Test
    public void getUser() throws Exception {
        mockMvc.perform(get("/user/0"))
                .andDo(print())
                .andExpect(status().isOk());
    }

    @Test
    public void addUser() throws Exception {
        RequestBuilder requestBuilder = post("/user").param("id", "4")
                .param("name", "xiaoming")
                .param("age", "23");

        mockMvc.perform(requestBuilder)
                .andDo(print())
                .andExpect(status().isOk());
    }

    @Test
    public void updateUser() throws Exception {
        RequestBuilder requestBuilder = put("/user/0").param("id", "0")
                .param("name", "xiaoming")
                .param("age", "23");

        mockMvc.perform(requestBuilder)
                .andDo(print())
                .andExpect(status().isOk());

    }java

    @Test
    public void deleteUser() throws Exception {

        mockMvc.perform(delete("/user/1"))
                .andDo(print())
                .andExpect(status().isOk());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值