目录
浏览器(带参数数据)请求web服务器,web服务器通过匹配请求路径,获得数据,并做出响应。该响应在浏览器中展示
问题一:数据如何从浏览器到服务器(请求:实体/简单/路径/数组/JSON/时间参数)
问题二:数据如何从服务器到浏览器(响应)---统一响应结果格式---实现接口(功能)
接口:****请求路径,响应数据,接收参数


下面这些都是注解:
(注解与反射机制:springboot核心)
@RequestMapping("/complex-para")
@RequestParam(name ="name")
@RestController
一:请求

(一)postman(接口测试工具)

直接下载安装



(二)简单参数
1.get方式
(1)原始方式



(2)springboot方式
public class ControlRequest {
@RequestMapping("/simplepara")
public String simplepara(String name,Integer age){
System.out.println(name+":"+age);
return "OK";
}
}

注意浏览器传递的参数名必须与方法里的形参名一致(name age)
如果不一致,需要注解:


2.post方式


(三)实体参数---(对象属性)
1.简单实体参数
@RestController
public class ControlRequest {
/*@RequestMapping("/simple-para")
public String simplepara(@RequestParam(name ="name") String username, Integer age){
System.out.println(username+":"+age);
return "OK";
}*/
@RequestMapping("/complex-para")
public String simplepara(User user){
System.out.println(user);
return "OK";
}
}


2.复杂实体参数----对象的属性还是一个对象

(四)数组集合参数

1.作用
(表单,一个属性有多个值)



(五)日期参数
日期形式


(六)JSON参数
json参数数据由对象接收,json数据的键必须和对象的属性名相同
注意:json数据的格式,大括号,键需要双引号包裹,如果键又对应一个对象,需要用花括号包裹(花括号对应对象数据)


(七)路径参数
作用:传参??传一个参数值给后台
1.单个路径参数
2.多个路径参数

二:响应

接口;请求路径,响应数据,接收参数

(一)ResponseBody



(二).响应规范化-----统一响应结果(数据+响应状态)


Result类
package com.ithema;
/**
* 统一响应结果封装类
*/
public class Result {
private Integer code ;//1 成功 , 0 失败
private String msg; //提示信息
private Object data; //数据 data
public Result() {
}
public Result(Integer code, String msg, Object data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public static Result success(Object data){
return new Result(1, "success", data);
}
public static Result success(){
return new Result(1, "success", null);
}
public static Result error(String msg){
return new Result(0, msg, null);
}
@Override
public String toString() {
return "Result{" +
"code=" + code +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
举例:
统一响应数据



对比未统一的

(三)案例
1.需求:

2.步骤


注意controller文件与其它文件必须都在com.ithema下,或者会找不到路径

3.编写Controller文件,处理请求,响应数据
重点: 请求路径 接收参数 响应数据
(1)请求路径 接收参数
axios没有要求参数,所以在Controller文件中也不需要参数

(2)响应数据
public Result list(){
// 1. 加载并解析emp.xml
String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();
//获取根目录下emp.xml文件的动态路径
System.out.println(file);
List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
//parse(x1,x2)第一个参数,要解析的文件,第二个参加,解析的格式
//调用XmlParserUtils工具包,解析file文件为Emp类,返回值为Emp类的列表
// 2. 对数据进行转换处理(1返回男,2返回女)
empList.stream().forEach(emp -> {
//对empList遍历
//处理<!-- 1: 男, 2: 女 -->
String gender= emp.getGender();
if (gender.equals("1")){
emp.setGender("男");
} else if (gender.equals("2")) {
emp.setGender("女");
}
//处理<!-- 1: 讲师, 2: 班主任 , 3: 就业指导 -->
String job= emp.getJob();
if (job.equals("1")){
emp.setJob("讲师");
} else if (job.equals("2")) {
emp.setJob("班主任");
} else if (job.equals("3")) {
emp.setJob("就业指导");
}
});
// 3. 响应数据
return Result.success(empList);
}

三:分层解耦
一个接口实现一个功能,尽可能降低接口的复杂性

(一):三层架构
上个例子,只用了一个接口就实现了


1.数据访问层--Dao
注意:不同数据的获取数据方法不同,因此我们设定一个Dao接口,再由一个接口类去实现Dao接口的方法(仅一个方法:获取数据)
Dao接口类的子类去具体实现获取数据的方法

// 1. 加载并解析emp.xml
String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();
//获取根目录下emp.xml文件的动态路径
System.out.println(file);
List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
//parse(x1,x2)第一个参数,要解析的文件,第二个参加,解析的格式
//调用XmlParserUtils工具包,解析file文件为Emp类,返回值为Emp类的列表
2.逻辑处理--Service
同Dao层,Service接口类+Service接口实现类(在实现类实现具体的逻辑推理,因为不同功能的逻辑推理不同,不能放在一个Service类里)

下面这样用

3.接收请求,响应数据--Controller

刷新,依旧展示,转换成功

拆分前后代码比较:

(二):分层解耦
1.耦合问题


2.解耦
在代码中就是删去new对象的过程

IOC容器中创建bean对象
ID过程将bean对象注入给下一层

(三):IOC&DI入门




注意:是对三层架构中层与层之间进行解耦
如果:某一层有多个实现类,用那个实现类,就对那个实现类进行@Component

(四):IOC详解
1.@Component衍生注解

2.bean的声明


3.组件扫描

因为只扫描启动类(Spring...Application)所在目录下的文件


(五):DI详解
依赖注入,是指IOC容器要为应用程序去提供运行时所依赖的资源,而资源指的就是对象
1.问题--多个bean对象,如何自动装配

2.解决方法
(1)@Primary

(2)@Qualifier

(3)@Resource


版权归原作者 leeyayai_xixihah 所有, 如有侵权,请联系我们删除。


