0x02 MVC架构学习记录

发布时间 2023-08-11 20:51:44作者: Icfh

MVC架构

MVC架构的全称为

M:model 模型 用于存储数据

V:view 视图 用于展示数据

C:controller 控制器 用于协调上述二者

我们一般发送HTTP请求都是由Controller进行拦截,然后Controller中有相应的处理逻辑。

向Model获取数据,将数据转交给View进行数据展示处理

image-20230807234843126

注解@Controller和@RestController

@Controller:请求页面和数据(数据在后端时还需要使用Thymeleaf模板,使得前后端不分离)

@RestController:请求数据(前后端分离的形式,@RestController注解会将返回的对象数据转换为JSON格式)

当然,当@Controller@ResponseBody联合使用时,效果形同@RestController

路由映射@RequestMapping

@RestController
public class HelloController {

    // 路由映射
    @RequestMapping(value="/hello")
    public User hello(){
        String name = "icfh";
        String password = "123456";
        User user = new User(name, password);
        return user;
        // return "Hello,SpringBoot!";
    }
}
  • value

value属性用于匹配URL映射,支持简单正则表达式

@RestController
public class HelloController {

    // 路由映射
    // 可以匹配 /hello/a.json,/hello/b.json
    @RequestMapping("/hello/*.json")
    public User hello(){
        String name = "icfh";
        String password = "123456";
        User user = new User(name, password);
        return user;
    }
}
  • Method

HTTP请求Method有GET, POST, PUT, DELETE等方法。

@RestController
public class HelloController {

    // 路由映射
    // 可以匹配 /hello/a.json,/hello/b.json
    @RequestMapping(value="/hello/*.json",method=RequesMethod.GET)
    public User hello(){
        String name = "icfh";
        String password = "123456";
        User user = new User(name, password);
        return user;
    }
}
  • 参数映射

如下例子,nickname => name

@RestController
public class HelloController {
    @RequestMapping(value="/hello2")
    public String hello2(@RequestParam("nickname") String name){
        return "Hello "+ name;
    }	
}