springbootweb请求响应

web三层架构流程:先是前端传送一个请求给后端,然后controller层接受数据进行处理,传给service层进行逻辑处理再交给dao层,dao层访问数据库,数据库再返回数据给dao层,然后再传给service层处理,最后回到controller层响应数据给前端。

举个例子(前端要输入用户名和密码进行登录(首先要判断用户名和密码是否正确),此时需要传给后端一个请求,先是controller层接收请求,然后到service层,再到dao层,dao层访问数据库,数据库把保存的用户名和密码返还给dao层,dao层传给service层,service层里面是业务逻辑,将前端传入的数据和数据库中的数据进行比较,相同或不同都返回一个结果给controller层,controller层再将结果响应回前端)

**结果相同就登录成功,结果不同就提示用户名或密码出现错误**

请求

1.简单参数

参数名不一致时(postman中写的参数和自己定义的参数不同),要使用@RequestParam完成映射。

@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam("username") String name , Integer age){
    System.out.println(name+"  :  "+age);
    return "OK";
}

2.实体参数

当参数比较多的时候,我们需要将参数封装到pojo对象中。

**pojo实体类就是按javabean类实体类定义就行,

**注意请求参数名与pojo的属性名要一致**

**复杂实体类其实就是一个实体类中定义的还有另一个实体类对象(相当于嵌套),用的时候直接用(类名.属性名)

3.数组参数

@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
    System.out.println(Arrays.toString(hobby));
    return "OK";
}

4.集合参数

和数组差不多,需要注意的一点是需要用@RequestParam绑定参数关系

@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
    System.out.println(hobby);
    return "OK";
}

5.日期参数

需要用@DateTimeFormat注解,还要用其pattern属性来定义日期的格式

**注意定义的日期格式要和前段传入的一致

6.json参数

前后端交互时前端传的通常是JSON格式的数据,后端需要将其转成pojo格式,需要用到@RequestBody注解

@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
    System.out.println(user);
    return "OK";
}

7.路径参数

路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数

@RequestMapping("/path/{id}")
public String pathParam(@PathVariable Integer id){
    System.out.println(id);
    return "OK";
}

@RequestMapping("/path/{id}/{name}")
public String pathParam2(@PathVariable Integer id, @PathVariable String name){
    System.out.println(id+ " : " +name);
    return "OK";
}

响应

我们响应回的数据都会以JSON的格式回到前端,原因是我们使用得@RestContorller注解,其底层包含了@ResponseBody注解的作用。

统一响应结果

//增删改 成功响应
    public static Result success(){
        return new Result(1,"success",null);
    }
    //查询 成功响应
    public static Result success(Object data){
        return new Result(1,"success",data);
    }
    //失败响应
    public static Result error(String msg){
        return new Result(0,msg,null);

分层解耦

  • Controller:接收前端发送的请求,对请求进行处理,并响应数据
  • Service:处理具体的业务逻辑
  • Dao:负责数据的访问操作,包含数据的增、删、改、查

内聚:软件中各个功能模块内部的功能联系。

耦合:衡量软件中各个层/模块之间的依赖、关联的程度。

软件设计原则:高内聚低耦合。

我们希望一个程序中各模块联系程度越高越好,同时我们有希望他们可以相互独立,依赖程度越低越好,这样就算某一部分出现错误也不会影响太多其他的代码部分。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值