使用SpringBoot方式完成请求响应:

传递简单参数:

复杂实体对象:

数组集合参数:
使用数组进行封装:

使用集合进行封装:

日期参数:

JSON参数:

路径参数:

java
package com.sayonara.controller;
import com.sayonara.User;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
//请求处理类
@RestController
public class RequestController {
//简单参数
@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name", required = false) String username, String age) {
System.out.println(username + age);
return "ojbk";
}
//实体参数
@RequestMapping("/simplePojo")
public String simplePojo(User user) {
System.out.println(user);
return "ojbk2";
}
//数组接受参数
@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby) {
System.out.println(Arrays.toString(hobby));
return "ojbk3";
}
//集合接收参数
@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby) {
System.out.println(hobby);
return "ojbk4";
}
//日期参数
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime) {
System.out.println(updateTime);
return "ojbk5";
}
//JSON参数
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user) {
System.out.println(user);
return "ojbk7";
}
//路径参数
@RequestMapping("path/{id}/{name}")
public String pathParam(@PathVariable Integer id,@PathVariable String name){
System.out.println(id + ":" + name);
return "ojbk8";
}
}
响应数据:

统一响应结果:

java
package com.itheima.pojo;
/**
* 统一响应结果封装类
*/
public class Result {
private Integer code ;//1 成功 , 0 失败
private String msg; //提示信息
private Object data; //数据 date
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 +
'}';
}
}
例:
java
@RequestMapping("/simpleParam")
public Result result(@RequestParam(name = "name", required = false) String username, String age) {
System.out.println(username + age);
//return new Result(1,"success","ojbk");
//由于Result有静态方法,所以也可以这么做
return Result.success();
}
Result的静态方法:
java
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);
}
分层解耦:
三层架构:

控制反转:简称IOC,对象的控制权由程序自身转移到外部(容器),这种思想称为控制反转
依赖注入:简称DI,容器为应用程序提供运行时,所依赖的资源,称之为依赖注入
Bean对象:IOC容器中创建,管理的对象,称之为Bean
java
@Component //将当前类交给IOC容器管理,成为IOC容器中的Bean
java
@Autowired //运行时,IOC容器会提供该类型的Bean对象,并赋值给该变量 - 依赖注入

*当有两个类同时实现了一个接口时,需要哪个类的对象直接将 @Component注解放在它上面就行
Bean的声明:
要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一:

@Component下的三个注解分别对应Controller,Service,Dao三层的bean对象
在SpringBoot集成Web开发中,声明控制器bean只能用@Controller
Bean的名字默认是类名的首字母小写
如果需要自定义Bean名称,可以:
java
@Respository(value = "daoA")
或者:
java
@Respository("daoA")
前面声明Bean的四大注解,要想生效,还要被组件扫描注解 @ComponentScan扫描
@ConponentScan 注解虽然没有显示配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描范围是启动类所在包及其子包
@Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报错
可以通过以下几种方案解决:
@Primary:
直接在类上加上此注解,即可让此类型生效
@Qualifier:
通过与@Autowired 注解配合使用来指定当前Bean
java
@RestController
public class Empcontroller{
@Autowired
@Qualifier("empService_A")
private EmpService empservice;
}
@Resource:
由JDK提供,按照名称来进行注入,在注解后指定类型名即可
java
@RestController
public class Empcontroller{
@Resource(name = "empService_A")
private EmpService empservice;
}
@Resource与@Autowired区别:
1.@Autowired是spring框架提供的注解,而@Resource是JDK提供的注解
2.@Autowired默认是按照类型注入,而@Resource默认是按照名称注入