#RequestMapping
@RequestMapping 是 Spring Web 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路 由映射的。
路由映射:所谓的路由映射指的是,当⽤户访问⼀个 url 时,将⽤户的请求对应到程序中某个类 的某个⽅法的过程就叫路由映射。
@RequestMapping 基础使⽤:
1.修饰类和方法
@RequestMapping 即可修饰类,也可以修饰⽅法,当修饰类和⽅法时,访问的地址是类 + ⽅ 法。
@Controller
@RequestMapping("/test")
public class Test {
@RequestMapping("/hello")
public String hello(){
return "/LoginSuccess.html";
}
}
此时访问的url为127.0.0.1:8080/test/hello
2.修饰方法
当只修饰 方法时:
@Controller
public class Test {
@RequestMapping("/hello")
public String hello(){
return "/LoginSuccess.html";
}
}
此时访问的url为127.0.0.1:8080/hello
3.RequestMapping支持的方法
对于Http的请求方法,我们常见的有get和post 同时我们的RequestMapping标签默认是两种方法都支持的。但是同样的我们也可以将其设置为只允许get或post方法。
只要在标签后面添加method属性就可以对其进行设置。
但是除了RequestMapping外,我们也还有其他更直观的标签来接收post与get方法的请求。
1.PostMapping
2.GetMapping
4.RequestMapp中添加变量参数
@Controller
public class Test {
@PostMapping("/hello")
@ResponseBody
public String hello(String username, String password){
return username + " " + password;
}
}
此时我们在浏览器中输入对应的url信息,
就可以给我们返回对应的信息,但是要注意变量中的参数名要和发送url的key相对应。
如果我们觉得前端起的名字不太贴切那么我们可以使用RequestParam标签,其可以对应前端的key,但是我们可以在参数列表中自己起名。
@Controller
public class Test {
@PostMapping("/hello")
@ResponseBody
public String hello(@RequestParam("username") String name, String password){
return name + " " + password;
}
}
可以看到我们在key中使用的是username,但在参数列表中使用了name,结果依然正确。
5.RequestMapping中添加对象参数
首先我们根据对应的前端key可以创建好与其相对应的类,比如我们想要传输用户名和密码,那么我们可以创建该用户类,注意类中的变量名要和key相对应。
@Data
public class User {
private String password;
private String username;
}
其中Data标签用于给类中的数据赋值,它包含getter,setter,toString等方法,来自于lombok框架。
之后我们就可以将方法中的变量改为对象了,
@Controller
public class Test {
@PostMapping("/hello")
@ResponseBody
public String hello(User user){
return user.getUsername() + " " + user.getPassword();
}
}
#ResponseBody
在上面的代码演示中,我们使用路由映射连接客户端的时候默认返回的是视图,而我们ResponseBody标签那么其返回的就是数据。
@Controller
public class Test {
@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "/LoginSuccess.html";
}
}
如上演示,我们可以看到在加了该标签后其返回的就直接是一串数据而不再是一个页面。
#RequestBody
在上述的代码中我们都只是在发送普通的数据变量,那么如果我们想要发送并接收Json格式的对象那么我们就需要使用该标签
@Controller
public class Test {
@PostMapping("/hello")
@ResponseBody
public String hello(@RequestBody User user){
return user.getUsername() + " " + user.getPassword();
}
}
此时我们可以接收Json格式的数据。
可以看到结果是正常的,相反的如果我们去掉该标签
可以看到,我们并没有接收到任何数据,他们的值为默认的空值。