一、SpringBoot 入门程序编写及启动
成功启动:
代码:
二、简单参数的接收
#在postman中可以选择POST和GET两种请求方式,后面写上请求地址,GET请求中是在Params中写请求参数,POST是在请求体Body的x-www-form-urlencoded中写请求参数。
#原始方法接收请求参数
1.Controller方法形参中声明HttpServletRequest对象
2.使用getParameter调用对象
package com.wust.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
public class RequestController {
// 原始方法
@RequestMapping("/simpleParam")
public String simpleParam(HttpServletRequest request){
// 获取请求参数
String name = request.getParameter("name");
String ageStr = request.getParameter("age");
int age = Integer.parseInt(ageStr);
System.out.println(name+":"+age);
return "OK";
}
}
#springboot方法接收简单参数
1.需要保证请求参数名和controller形参名保持一致;
2.注解@RequestParam 在形参名称和请求参数名称不匹配时也可以完成映射,其默认属性required为true,请求参数必须传递,否则将报错;
package com.wust.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
public class RequestController {
// springboot方法
@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name")String username, Integer age){
System.out.println(username+":"+age);
return "OK";
}
}
三、实体参数的请求接收
- 简单实体封装,请求参数名与形参对象的属性名相同
- 运行结果及代码
package com.wust.controller;
import com.wust.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
public class RequestController {
//2.实体参数
@RequestMapping("/simplePojo")
public String simplePojo(User user){
System.out.println(user);
return "OK OK";
}
}
- 复杂实体封装
四、数组集合参数
- 数组:请求参数名与形参中的数组变量名相同,可直接使用数组封装
- 集合:请求参数名与形参中的数组变量名相同,通过@RequestParam绑定参数关系
五、日期时间参数
- 使用@DateTimeFormat注解完成日期参数格式转换
六、json参数
- json数据键名与形式对象属性名相同,需使用@RequestBoody标识
七、路径参数
- 通过URL直接传递参数,使用{。。}来标识该路径参数,使用@PathVariable获取参数路径
八、请求响应
package com.wust.controller;
import com.wust.pojo.Address;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class ResponseController {
// 这里要注意前面已经用过hello的路径,不能再次使用,否则会报错,要与前面的有区别
@RequestMapping("/Hello")
public String hello(){
System.out.println("Hello World!");
return "用户客户端显示 Hello World!";
}
@RequestMapping("/getAddr")
public Address getAddr(){
Address address = new Address();
address.setProvince("湖北");
address.setCity("武汉");
return address;
}
@RequestMapping("/listAddress")
public List<Address> listAddress(){
List<Address> list = new ArrayList<>();
Address address1 = new Address();
address1.setProvince("湖北");
address1.setCity("武汉");
Address address2 = new Address();
address2.setProvince("湖北");
address2.setCity("十堰");
list.add(address1);
list.add(address2);
return list;
}
}
- 使用Result的统一响应结果
Result类和Controlller代码
package com.wust.pojo;
public class Result {
private Integer code; //1表示成功,0表示失败
private String mag; // 提示信息
private Object data; // 数据data
public Result(Integer code, String mag, Object data){
this.code=code;
this.mag=mag;
this.data=data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMag() {
return mag;
}
public void setMag(String mag) {
this.mag = mag;
}
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 mag){
return new Result(0,"mag",null);
}
@Override
public String toString() {
return "Result{" +
"code=" + code +
", mag='" + mag + '\'' +
", data=" + data +
'}';
}
}
@RequestMapping("/Hello")
public Result hello(){
System.out.println("Hello World!");
// return new Result(1,"success","Hello World!") ;
return Result.success("Hello World!!!");
}
@RequestMapping("/getAddr")
public Result getAddr(){
Address address = new Address();
address.setProvince("湖北");
address.setCity("武汉");
return Result.success(address);
}
@RequestMapping("/listAddress")
public Result listAddress(){
List<Address> list = new ArrayList<>();
Address address1 = new Address();
address1.setProvince("湖北");
address1.setCity("武汉");
Address address2 = new Address();
address2.setProvince("湖北");
address2.setCity("十堰");
list.add(address1);
list.add(address2);
return Result.success(list);
}
}
九、请求响应的案例
十、由前端页面向后端发送数据
前端页面成功发送请求
后端显示前端输入信息
表单前端发送请求后端显示
- 在浏览器打开前端html文件,在前端中填写相关信息并提交,form表单提交后跳转到@RequeatMapping指定的页面,并在后端接收到相应的信息在控制台输出,跳转的页面的名称需要与form表单中action属性值保持一致,后端的形参名称也要和前端中保持一致。
package com.wust.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
@RestController
public class MyTestController {
@RequestMapping("myTest")
public String myTest(String name,String sex,String emil,String [] hobby) {
System.out.println(name+"\n"+sex+"\n"+emil+"\n"+ Arrays.toString(hobby));
return "OK";
}
}