SpringBootWeb请求响应

当前最为主流的开发模式:前后端分离

这样我们后端开发人员就用到了postman

postman
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
作用:常用于进行接口测试



1.简单参数
在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。

SpringBoot方式
简单参数:参数名与形参变量名相同,定义形参即可接收参数。
简单参数:如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 完成映射。
注意事项:
@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。 如果该参数是可选的,可以将required属性设置为false。

小结:
1.原始方式获取请求参数
Controller方法形参中声明HttpServletRequest对象
调用对象的getParameter(参数名)
2.SpringBoot中接收简单参数
请求参数名与方法形参变量名相同
会自动进行类型转换
3.@RequestParam注解
方法形参名称与请求参数名称不匹配,通过该注解完成映射
该注解的required属性默认是true,代表请求参数必须传递

2.实体参数
简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可

复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。



小结:
实体对象参数
规则:请求参数名与形参对象属性名相同,即可直接通过POJO接收

3.数组集合参数
数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

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


小结:
数组集合参数
数组:请求参数名与形参中数组变量名相同,可以直接使用数组封装
集合:请求参数名与形参中集合变量名相同,通过@RequestParam绑定参数关系

4.日期参数
日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换


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


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



总结:
1.简单参数
定义方法形参,请求参数名与形参变量名一致。
如果不一致,通过@RequestParam手动映射。
2.实体参数
请求参数名,与实体对象的属性名一致,会自动接收封装
3.数组集合参数
数组:请求参数名与数组名一致,直接封装
集合:请求参数名与集合名一致,@RequestParam绑定关系
4.日期参数
@DateTimeFormat
5.JSON参数
@RequestBody
6.路径参数
@PathVariable

响应数据

@ResponseBody




小结:
1.@ResponseBody
位置:Controller类上/方法上
作用:将方法返回值直接响应,若返回值类型是 实体对象/集合 ,转JSON格式响应
2.统一响应结果
Result(code、msg、data)

案例:获取员工数据,返回统一响应结果,在页面渲染展示
加载并解析emp.xml文件中的数据,完成数据处理,并在页面展示。


步骤:
在pom.xml文件中引入dom4j的依赖,用于解析XML文件
引入资料中提供的解析XML的工具类XMLParserUtils、对应的实体类Emp、XML文件 emp.xml
引入资料中提供的静态页面文件,放在resources下的static目录下
编写Controller程序,处理请求,响应数据
第一步:
第二步:

第三步:

第四步:
这种写法复用性差,难以维护

分层解耦
三层架构


controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
service:业务逻辑层,处理具体的业务逻辑。
dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查。

分层解耦
内聚:软件中各个功能模块内部的功能联系。
耦合:衡量软件中各个层/模块之间的依赖、关联的程度。
软件设计原则:高内聚低耦合。

控制反转: Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
依赖注入: Dependency Injection,简称DI。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
Bean对象:IOC容器中创建、管理的对象,称之为bean。

IOC & DI 入门
①. Service层 及 Dao层的实现类,交给IOC容器管理。


②. 为Controller及Service注入运行时,依赖的对象。


③. 运行测试。

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

注意事项:
声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。

Bean组件扫描
前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。
@ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中,默认扫描的范围是启动类所在包及其子包。

DI详解
Bean注入
@Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报错
通过以下几种方案来解决:
@Primary
@Qualifier
@Resource




小结:
1.依赖注入的注解:
@Autowired:默认按照类型自动装配。
如果同类型的bean存在多个:
@Primary
@Autowired + @Qualifier("bean的名称")
@Resource(name="bean的名称")
2. @Resource 与 @Autowired区别
@Autowired 是spring框架提供的注解,而@Resource是JDK提供的注解。
@Autowired 默认是按照类型注入,而@Resource默认是按照名称注入。