目录
1.获取请求参数
1.获取普通参数请求
2.获取json请求参数
2.响应视图和数据
1.响应文本数据
2.响应json数据
3.REST风格
1.获取请求参数
1.获取普通参数请求
直接在方法上定义参数接收,方法形参名称要和请求参数名称保持一致
@Controller
public class Controller01 {
@RequestMapping("/params01")
public String getParams(String name, int age) {
System.out.println("获取get方式请求普通参数");
System.out.println("name=" + name);
System.out.println("age=" + age);
return "success";
}
}
注意:
1.如果参数名称和形参名称不一致则不能获取到请求参数;
2.因为请求参数传递过来的都是String类型,需要Springmvc将其转为具体的形参类型,如果形参类型不是String,则可能导致报错,类型转换异常。
3.当请求参数名称和方法形参变量名不一致的时候,可以通过@RequestParam注解进行设置,解决参数传递问题
2.获取POJO参数请求(定义一个类,方法形参设置为对象参数,请求参数名称要和对象的属性名称保持一致才能传递进来封装到对象中,不一致则为null)
@RequestMapping("/params03")
public String getParams03(Student student) {
System.out.println("获取POJO参数请求");
System.out.println(student);
return "success";
}
3.获取嵌套POJO参数请求(定义一个类,方法形参设置为对象参数,请求参数名称要和对象的属性名称保持一致,对象中的对象属性,此时参数名称需要设置为对象属性.属性名称)
@RequestMapping("/params04")
public String getParams04(Student01 student) {
System.out.println("获取嵌套POJO参数请求");
System.out.println(student);
return "success";
}
4.获取数组类型参数请求(方法形参定义为数组类型,请求参数传递是一个参数名称对应多个值)
@RequestMapping("/params05")
public String getParams05(String[] hobby) {
System.out.println("获取数组类型参数请求");
System.out.println(Arrays.toString(hobby));
return "success";
}
5.获取list集合参数请求(方法形参定义为集合,请求参数传递是一个参数名称对应多个值,在list集合前加上@RequestParam注解)
@RequestMapping("/params06")
public String getParams06(@RequestParam List<String> hobby) {
System.out.println("获取list集合参数请求");
System.out.println(hobby);
return "success";
}
2.获取json请求参数
1.在pom.xml中添加jackson-databind依赖;
2.在springmvc.xml中开启mvc注解驱动;
3.在方法参数前打上@RequestBody注解 springMVC会自动将json格式参数转换为对象
@RequestMapping("/jsonparams01")
public String getJsonParams01(@RequestBody List<String> hobby) {
System.out.println("获取json普通数组参数请求");
System.out.println(hobby);
return "success";
}
2.响应视图和数据
响应页面---springmvc中页面跳转默认采用转发的方式;
物理视图会受视图解析的影响,要消除这个影响,可以使用带有前缀forward(转发)/redirect(重定向)的物理视图,但要写完整路径。
1.响应文本数据
方法上使用@ResponseBody注解,springmvc就会把方法的返回值当成字符串来看待,不会再识别成页面的地址路径
@RequestMapping("/demo01")
@ResponseBody
public String demo01(){
System.out.println("调用了demo01的方法...");
return "成功显示demo01....";
}
2.响应json数据
两种方式:
1.手动将JavaBean对象转换成json格式的字符串,响应给客户端;
2.方法返回JavaBean对象,使用 @ResponseBody注解Springmvc帮我们转换成json格式。
步骤:
1.在pom.xml中添加jackson-databind依赖;
2.在springmvc.xml中开启mvc注解驱动;
3.方法直接返回java对象,在方法上面打上@ResponseBody注解
@RequestMapping("/toJson01")
@ResponseBody
public Student toJson01() {
System.out.println("对象转json");
Student student = new Student();
student.setName("json");
student.setId(1);
return student;
}
3.REST风格
rest风格简介:
http://localhost/students --- 查询全部学生信息 --- (GET 查询)
http://localhost/students/1 --- 查询指定学生信息 --- (GET 查询)
http://localhost/students --- 添加学生信息 --- (POST 新增)
http://localhost/students --- 修改学生信息 --- (PUT 修改)
http://localhost/students/1 --- 删除学生信息 --- (DELETE 删除)
@RestController
public class StudentController {
//增加
@PostMapping("/students")
public String add(@RequestBody Studnet student) {
System.out.println("add student:" + student);
return "add success";
}
//删除
@DeleteMapping("/students/{id}")
public String delete(@PathVariable int id) {
System.out.println("delete id:" + id);
return "delete success";
}
//更新
@PutMapping("/students")
public String update(@RequestBody Studnet student) {
System.out.println("update student:" + student);
return "update success";
}
//根据id查询
@GetMapping("/students/{id}")
public User findById(@PathVariable int id) {
Studnet student = new Studnet ();
user.setId(1);
user.setName("nana");
user.setAge(20);
return student;
}
//查询所有
@GetMapping("/students")
public List<Student> findAll() {
Student student1= new Student();
student1.setId(1);
student1.setName("nana");
student1.setAge(20);
Student student1= new Student();
student2.setId(1);
student2.setName("huahua");
student2.setAge(20);
List<Student > list = new ArrayList<>();
list.add(student1);
list.add(student2);
return list;
}
}
@PostMapping:等价于@RequestMapping+post
@DeleteMapping:等价于@RequestMapping+delete
@PutMapping:等价于@RequestMapping+put
@GetMapping:等价于@RequestMapping+get