目录
1. 注解 @PathVariable
1.1. 方式一
不推荐使用,仅在单个参数的时候选择使用
@GetMapping("/getId/{id}")
@ResponseBody
public String pathVariableTest(@PathVariable Integer id) {
return "id: " + id;
}
1.2. 方式二
推荐使用,适用于单个、多个参数的情况
1.2.1. 单个参数
@GetMapping("/getId/{id}")
@ResponseBody
public String pathVariableTest(@PathVariable("id") Integer id) {
return "id: " + id;
}
1.2.2. 多个参数
@GetMapping("/getIdAny/{id}/{name}")
@ResponseBody
public String pathVariableTestAny(@PathVariable("id") Integer id, @PathVariable("name") String name) {
return "id:" + id + "name:" + name;
}
1.3. 方式三
@GetMapping("/getId/{idValue}")
@ResponseBody
public String pathVariableTest(@PathVariable("idValue") Integer id) {
return "id: " + id;
}
以上三种方式的调用结果都是成功的
2. 注解 @RequestParam
@RequestParam
:将请求参数绑定到你控制器的方法参数上,是 SpringMVC
中接收普通参数的注解
@RequestParam(value = "参数名", required = "true", defaultValue= " ")
-
value
或name
:参数名 -
required
:是否包含该参数,默认为true
,表示该请求路径中必须包含该参数,如果不包含就报错 -
defaultValue
:默认参数值,如果设置了该值,required = true
将失效,自动为false
,如果没有传该参数,就使用默认值
2.1. 方式一
不推荐使用,仅在单个参数的时候选择使用
@GetMapping("/getId")
@ResponseBody
public String requestParamTest(Integer id) {
return "id:" + id;
}
2.2. 方式二
不推荐使用,仅在单个参数的时候选择使用
@GetMapping("/getId")
@ResponseBody
public String requestParamTest(@RequestParam Integer id) {
return "id:" + id;
}
2.3. 方式三
推荐使用,适用于单个、多个参数的情况
2.3.1. 单个参数
@GetMapping("/getId")
@ResponseBody
public String requestParamTest(@RequestParam("idValue") Integer id) {
return "id:" + id;
}
可以看到在 @RequestParam
里面给参数 id
取名为: idValue
,这时候传参时参数名称也需要写成 idValue
即可
2.3.2. 多个参数
@GetMapping("/getIdAny")
@ResponseBody
public String requestParamTestAny(@RequestParam("id") Integer id, @RequestParam("name") String name, @RequestParam Integer age) {
return "id:" + id +"name:" + name + "age:" + age;
}
2.4. 上传文件
使用 @RequestParam
上传文件的方式
@ResponseBody
@PostMapping("upload")
public String upload(@RequestParam("myFile") MultipartFile file) {
return "---file name:" + file.getOriginalFilename()+
"---file type:" + file.getContentType()+
"---file size:" + file.getSize();
}
3. 注解 @RequestBody
对应 @RequestBody
的使用,方式其实是比较多的,可以耐心看看,传参以 json
格式传递,接收方式较多(一定要记住 Content-Type
为 application/json
)
3.1. 实体类
public class UserOne {
private Integer id;
private String username;
private Integer age;
}
Get
方式 和 Post
方式其实都是可以使用 @requestBody
的,只不过一般来说 Post
用的较多
3.2. 传参与接参
@GetMapping("/getRequestBodyValue")
@ResponseBody
public String RequestBodyTest(@RequestBody UserOne userOne) {
return userOne.toString();
}
4. 实体类传参接参
4.1. 实体类
public class UserOne {
private Integer id;
private String username;
private Integer age;
}
4.2. 传参与接参
@GetMapping("/getValue")
@ResponseBody
public String entityValueTest(UserOne userOne) {
return userOne.toString();
}
5. 使用 JsonObject
接参
5.1. 依赖包
<!--添加fastjson依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency>
5.2. 传参与接参
@PostMapping("/getRequestBodyValue")
@ResponseBody
public String RequestBodyTest(@RequestBody JSONObject jsonObject) {
Integer id = jsonObject.getInteger("id");
String name = jsonObject.getString("name");
Integer age = jsonObject.getInteger("age");
return "---id:"+id+" ---name:"+name+" ---age:"+age;
}
6. 使用 String
接参数
这种情况是先使用 String
把 body
里面的数据获取出来,再转换成 JsonObject
再进行参数解析
@PostMapping("/getRequestBodyValue")
@ResponseBody
public String RequestBodyTest(@RequestBody String jsonStr) {
// 将 jsonStr 转化为 JSONObject,再进行取值
JSONObject jsonObject= JSON.parseObject(jsonStr);
Integer id = jsonObject.getInteger("id");
String name = jsonObject.getString("username");
Integer age = jsonObject.getInteger("age");
return "---id:"+id+" ---name:"+name+" ---age:"+age;
}
7. 使用 HttpServletRequest
7.1. 方式一
@GetMapping("/getHttpServletRequest")
@ResponseBody
public String httpServletRequestValueTest(HttpServletRequest request) {
String id = request.getParameter("id");
String name = request.getParameter("username");
String age = request.getParameter("age");
return "---id:"+id+" ---name:"+name+" ---age:"+age;
}
7.2. 方式二
@GetMapping("/getHttpServletRequest")
@ResponseBody
public String httpServletRequestValueTest(HttpServletRequest request) {
Map<String, String[]> parameterMap = request.getParameterMap();
String[] ids = parameterMap.get("id");
String[] names = parameterMap.get("username");
String[] ages = parameterMap.get("age");
String id = ids[0];
String name =names[0];
String age =ages[0];
return "---id:"+id+" ---name:"+name+" ---age:"+age;
}
以上两种方式调用结果