Spring Boot:请求的处理

一:SpringMVC工作流程

先来看一下流程图
在这里插入图片描述

SpringMVC的组件:
  1. Dispatch Servlet:前端控制器
  2. Handler Mapping:映射处理器
  3. Handler Adapter:适配处理器
  4. Controller:控制器
  5. View Resolver:视图解析器
SpringMVC的工作流程
  1. 请求先到达DispathcherServlet,DispathcherServlet会根据映射去Handler Mapping查询相应的Controller地址并将请求发送。
  2. Controller接受到请求后,经过一系列的逻辑处理,返回视图和模型给DispathcherServlet
  3. DispathcherServlet将视图交给视图解析器去渲染输出

二:简单的Demo

现在项目都是前后端分离,返回给前端的数据都是json格式。需要在类上添加@ResponseBody。

@ResponseBody:将方法的返回值以json或者文本格式写入Response的实体内容。
最简单的SpringMVC demo。访问路径为8080端口,url为"/"

@Controller        // 这里注解可以用@RestController注解替代
@ResponseBody	   // @RestController = @ResponseBody + @Controller
public class UserController {
    
    @RequestMapping
    public String  queryUserList(){
        return "哈哈";
    }
}

@Controller :将这个类标记,让Spring启动的时候注册为bean。这个注解和@component,@service,@Repository在本质上没有区别,但是在代表的功能不一样。

注解含义
@component最普通的组件,可以被注入到spring容器进行管理
@service作用于业务逻辑层
@Controller作用于表现层(spring-mvc的注解)
@Repository作用于持久层

@RequestMapping:标注类或者方法的请求路径。

三:请求的处理

请求的方式分为三种:假设接口为/user

  1. /user/参数,路径变量
  2. /user?name=18&age=10,查询参数
  3. /user,在请求的内容实体中,一般为json格式

pojo:

@Data
@AllArgsConstructor
public class User {
    private String name;
    private int age;
}

Controller:

@RestController
@RequestMapping("user")
public class UserController {

    @GetMapping
    public User  queryUserList1(@RequestParam String name,@RequestParam int age){
        User user = new User(name,age);
        return user;
    }
	
    @GetMapping("{name}")
    public User  queryUserList2(@PathVariable("name") String name){
        return new User(name,18);
    }

    @PostMapping
    public User  queryUserList3( @RequestBody User user){
        return user;
    }
}

  1. @RequestParam:将请求所携带的参数绑定到形式参数上
  2. @PathVariable:将路径中的参数绑定到形式参数上,通过占位符来锁定参数的位置
  3. @RequestBody:处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据,将请求绑定到实体上。

每个绑定注解还可以设置默认值,是否必须需要参数。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值