SpringBootWeb请求与响应

Postman

  • 学习请求前,我们先下载并了解Postman,Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
  • 作用:常用于进行接口测试
  • 特征
  • 简单
  • 实用
  • 美观
  • 大方

1. 请求(7种)

1.1 简单参数

1.1.1 原始方式

通过Servlet中提供的API HttpServletRequest 可以获取请求的相关信息

这里要注意 Controller 底层是 DispatcherServlet

Controller中,我们要想获取Request对象,可以直接在方法的形参中声明 HttpServletRequest 对象。然后就可以通过该对象来获取请求信息

1.1.2 SpringBoot方式

如果是简单参数,参数名与形参变量名相同,定义同名的形参即可接收参数

1.1.3 参数名不一致

如果方法形参名称与请求参数名称不一致,可以使用 @RequestParam 完成映射。

1.2 实体参数

1.2.1 简单实体对象

定义POJO实体类完成

需要遵守如下规则:请求参数名与POJO的属性名相同

1.2.2 复杂实体对象

复杂实体对象指的是,在实体类中有一个或多个属性,也是实体类型的

复杂实体对象的封装,需要遵守如下规则:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数

1.3 数组集合参数

  • 1.3.1 数组

  • 数组参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型形参即可接收参数

 

  • 1.3.2 集合

  • 集合参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam 绑定参数关系

 

1.4 日期参数

需要通过 @DateTimeFormat注解,以及其中的pattern属性来设置日期的格式。

1.5 JSON参数

JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数。需要使用 @RequestBody 标识。

1.6 路径参数

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

2. 响应

2.1 @ResponseBody

类型:方法注解、类注解

作用:将当前方法返回值直接返回,如果是 实体/集合 转换为JSON返回

@RestController注解封装了@ResponseBody注解 无需额外添加

3. 分层解耦

3.1 三层架构

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

3.2 分层解耦

了解软件开发领导涉及到的两个概念:

内聚和耦合

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

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

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

3.3 IOC&DI

控制反转:

  • Service层 及 Dao层的实现类,交给IOC容器管理。

在类上加上 @Component 注解,就是将该类声明为IOC容器中的bean。

依赖注入:

  • 为Controller及Service注入运行时依赖的对象。

在成员变量上加上 @Autowired 注解,表示在程序运行时,Springboot会自动的从IOC容器中找到UserService类型的bean对象,然后赋值给该变量。

3.3.1 bean的声明

要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一:

注解

说明

位置

@Component 

声明bean的基础注解

不属于以下三类时,用此注解

@Controller 

@Component的衍生注解

标注在控制器类上

@Service 

@Component的衍生注解

标注在业务类上

@Repository 

@Component的衍生注解

标注在数据访问类上(由于与mybatis整合,用的少)

注意:

  • 声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
  • 目前来说,我们使用以上四个注解都可以声明bean,但是在集成后端web开发之后,声明控制器bean只能用@Controller,这里我们一般用@RestController,@RestController内包含@Controller

3.3.2 组件扫描

前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。

引导类声明注解 @SpringBootApplication包含@ComponentScan注解

默认扫描的范围是引导类所在包及其子包。

3.3.3 依赖注入

1). @Primary 注解

当存在多个相同类型的Bean注入时,加上@Primary注解,来确定默认的实现。

2). @Qualifier 注解

可以通过@Autowired ,配合@Qualifier 来指定我们当前要注入哪一个bean对象。 在@Qualifier的value属性中,指定注入的bean的名称。

3). @Resource注解

通过@Resource注解,并指定其name属性,通过name指定要注入的bean的名称。这种方式呢,是按照bean的名称进行注入。

@Autowird 与 @Resource的区别:

  • @Autowird 属于spring框架,默认按照bean的类型注入。 可以配合 @Qualifier注解,实现按照名称注入。
  • @Resource是JavaEE自带的注解,根据bean的名称进行注入的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值