SpirngMVC的创建
SpringMVC的创建很容易。
步骤:创建SpringBoot项目,并在添加依赖时,添加Spring Web。
SpringMVC的创建就完成了。
创建SpringBoot项目详情:SpringBoot项目创建和使用_追梦不止~的博客-CSDN博客
SpirngMVC的使用
1. 实现连接
1.1 @RequstMapping注解方式
@RestController
public class TestController {
@RequestMapping("/sayHi")
public String sayHi() {
return "hello world";
}
}
页面输出:
@RequstMapping注解如果不加其他的属性,它可以支持所有的方法(GET、POST、PUT....),这一点可以使用postman来验证,此处就不演示了。
如果想限制该类/方法只支持某一个方法,此时需要在@RequstMapping里加上method属性,并输入方法名。
注意:如果@RequstMapping中有多个属性,路径前要加上value = 。
如下:
@RestController
public class TestController {
@RequestMapping(value = "/sayHi",method = RequestMethod.GET)
public String sayHi() {
return "hello world";
}
}
上面的方法此时只支持GET方法,如果是POST就修改一下method后面的内容即可。
1.2 @xxxMapping注解方式
在@RequstMapping中我们可以使用method属性来指定方法,除此之外,我们还可以通过@xxxMapping(xxx是方法名,首字母大写)的方式来指定方法。
如下:
@RestController
public class TestController {
@GetMapping("sayHi1")
public String sayHi1() {
return "hello world1";
}
@PostMapping("sayHi2")
public String sayHi2() {
return "hello world2";
}
}
这里建议使用postman来测试,因为页面的请求时get,post请求不好测。
这里就不演示了。
2. 获取参数
2.1 获取单个参数
如下:
@RestController
public class TestController {
@RequestMapping("sayHi")
public String sayHi(String name) {
return "hello world -> " + name;
}
}
在传递参数的时候要注意,key和参数名一定要完全相同(不同的情况后面再提),这样才能接收到,并且建议在使用参数接受的时候,不要使用基本类型,而是使用包装类来接受 (Integer、Character....),因为参数在传递中,如果某一个参数没有传递,基本类型会直接报错,而包装类则会为null。
2.2 获取多个参数
多个参数有两种方式:
1. 和获取单个参数相同,参入多个参数即可(不演示啦)
2. 使用对象来获取
3. HttpServletRequest 和 HttpServletResponse
对象获取方式:
首先先创建一个类,里面添加一些属性(属性名和key一定要相同),并且要添加setter方法,这里我使用了lombok自动生成。
@Data
public class UserInfo {
private Integer id;
private String name;
private String password;
private Integer age;
}
然后我们获取参数(我使用了lombok自动实现了toString方法),key value的顺序不必和参数的顺序相同。
@RestController
public class TestController {
@RequestMapping("sayHi")
public String sayHi(UserInfo userInfo) {
return "hello world -> " + userInfo;
}
}
HttpServletRequest 和 HttpServletResponse方式:
和使用servlet时一样,HttpServletRequest 有获取数据等功能,HttpServletResponse 返回数据等功能。
@RestController
public class TestController {
@RequestMapping("sayHi")
public String sayHi(HttpServletRequest req, HttpServletResponse resp) {
String name = req.getParameter("name");
return "hello world -> " + name;
}
}
2.3 使用@RequestParam注解实现参数重命名
此时有一个场景:前端要求传入的名字使用username传,后端要传入的名字使用name接受,此时就可以使用@RequestParam注解来进行重命名。
注意:重命名后,再传递原有的名字是传不进去的,并且如果只设置name属性,它的required属性默认是true,此时如果该参数没有被传递会报错(就是要求必须传递该参数),如果想取消就将其设置为false即可
@RestController
public class TestController {
@RequestMapping("sayHi")
public String sayHi(@RequestParam(name = "username", required = false) String name, String password) {
return "hello world -> " + name + " : " + password;
}
}