- @RequestMapping
Spring MVC 通过 @RequestMapping 注解将请求与业务方法进行映射,在方法定义处,在类定义都可以添加该注解。
常用参数:
1、value:指定请求的实际地址,@RequestMapping的默认值;
2、method:指定请求的类型,GET、POST、PUT、DELETE等;
3、params:指定请求必须包含的参数;
- @RequestMapping
参数绑定:
1、在业务方法定义时声明参数列表;
2、给参数添加@RequestParam注解;
传统风格
http://localhost:7777/hello/index?id=10&name=a
@RequestMapping(value = "/index",method = RequestMethod.GET,params = {"id=10","name"}) public String index(@RequestParam("id") int num,@RequestParam("name") String gender){ System.out.println(num); System.out.println(gender); return "index"; }
params = {"id=10","name"}
指定参数值,参数id必须传10;
@RequestParam("id") int num,@RequestParam("name") String gender
传递的参数名与接收参数名不同时,使用@RequestParam绑定;
- @PathVariable
RESTful风格
http://localhost:7777/hello/rest/10/a
@RequestMapping("/rest/{id}/{name}") public String rest(@PathVariable("id") int id,@PathVariable("name") String name){ System.out.println("rest"); System.out.println(id); System.out.println(name); return "index"; }
使用@PathVariable("id") int id, @PathVariable("name") String name绑定参数
- @CookieValue
映射Cookie
@RequestMapping("/cookie") public String cookie(@CookieValue("JSESSIONID") String sessionId){ System.out.println(sessionId); return "index"; }
- 使用POJO绑定参数
package com.sunjian.entity; /** * @author sunjian * @date 2020/3/17 14:25 */ public class User { private Integer id; private String name; private Integer age; private Address address; @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", address=" + address + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
package com.sunjian.entity; /** * @author sunjian * @date 2020/3/17 14:26 */ public class Address { private Integer id; private String name; @Override public String toString() { return "Address{" + "id=" + id + ", name='" + name + '\'' + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.sunjian.controller; import com.sunjian.entity.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * @author sunjian * @date 2020/3/17 14:28 */ @Controller @RequestMapping(value = "/user") public class UserHandler { @RequestMapping(value = "/add") public String add(User user){ System.out.println(user); return "index"; } }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <form action="/user/add" method="post"> ID:<input type="text" name="id"/><br/> 姓名:<input type="text" name="name"/><br/> 年龄:<input type="text" name="age"/><br/> 地址ID:<input type="text" name="address.id"/><br/> 地址名:<input type="text" name="address.name"/><br/> <input type="submit" value="提交"/> </form> </body> </html>
访问http://localhost:7777/add.jsp,输入人员信息后,点击提交按钮,打印结果
User{id=123, name='张三', age=31, address=Address{id=1234, name='12345'}}
OK.