传参方式
方式1 使用request的getParameter()
方法参数中使用request,通过request.getParameter(“参数名”),再封装到bean中
/**
* @description: 方式1 request的getParameter()方法获取参数
@return:
* @return:
*/
@RequestMapping("/req")
public JsonResult req(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
return JsonResult.ok(username+","+password);
}
方式2 简单类型参数和@RequestParam
如果请求参数和Controller方法的形参同名,可以直接接收
如果请求参数和Controller方法的形参不同名,可以使用@RequestParam注解贴在形参前,设置对应的参数名称
/**
* @description: 方式2 简单参数
@return:
* @return:
*/
//1 参数名一致,字段
@RequestMapping("/simple1")
public JsonResult simple1(String username,String password){
System.out.println(username);
System.out.println(password);
return JsonResult.ok(username+","+password);
}
//2 参数名不一致,字段
@RequestMapping("/simple2")
public JsonResult simple2(@RequestParam("username") String name, @RequestParam(value = "password",defaultValue = "1234987") String pwd){
//使用了@RequestParam的参数不能传空值
// required:表示是否必须要传值
// defaultValue:当没有该请求参数时,SpringMVC给请求参数的默认值
return JsonResult.ok(name+","+pwd);
}
//3 参数名一致,实体
@RequestMapping("/simple3Add")
public JsonResult simple3Add(TbTest vo) {
System.out.println(vo);
tbTestMapper.insert(vo);
return JsonResult.ok("添加成功");
}
方式3 实体接收 @RequestBody
/**
* @description: @RequestBody 接收
@return:
* @return:
*/
@RequestMapping("/pojo")
public JsonResult pojo(@RequestBody TbTest vo) {
System.out.println(vo);
int insert = tbTestMapper.insert(vo);
return JsonResult.ok("添加成功");
}
方式3 map接收 (不推荐使用)
/**
* @description: map传参,不推荐使用,维护困难
@return:
* @return:
*/
@RequestMapping("/map")
public JsonResult map(Map <String,String> map) {
System.out.println(map);
return JsonResult.ok(map);
}
@RequestMapping("/map2")
public JsonResult map2(@RequestBody Map <String,String> map) {
System.out.println(map);
return JsonResult.ok(map);
}
@RequestMapping("/map3")
public JsonResult map3(@RequestParam Map <String,String> map) {
System.out.println(map);
return JsonResult.ok(map);
}
- 1 无注解,接收不到数据
- 2 @RequestBody 放在请求体中
- 3 @RequestParam 参数在params和form和body都可以
方式4 restful风格
特点:
- 方法类型,get,post,put,del
- 参数写在路径上,使用@PathVariable(“id”)接收
@RequestMapping(value = "/getrestful/{id}", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResult getrestful(@PathVariable("id") String id) {
TbTest tbTest = tbTestMapper.selectById(id);
return JsonResult.ok(tbTest);
}
方式5 cookie @CookieValue
@RequestMapping("/getCookie")
public JsonResult cookie(@CookieValue("JSESSIONID") String jsessinbId) {
System.out.println(jsessinbId);
return JsonResult.ok(jsessinbId);
}
方式6 Header @RequestHeader
@RequestMapping("/getHeader")
public JsonResult getHeader(@RequestHeader("Accept-Encoding") String host) {
System.out.println(host);
return JsonResult.ok(host);
}
方式7 表单传文件
@RequestMapping("upload")
public String upload(@RequestParam MultipartFile file) throws IOException {
System.out.println("1 file: "+file);
System.out.println("--------");
//获取源文件名
String originalFilename = file.getOriginalFilename();
System.out.println("2 originalFilename: "+originalFilename);
System.out.println("--------");
//获取字节输入流
InputStream inputStream = file.getInputStream();
System.out.println("3 inputStream: "+inputStream);
System.out.println("--------");
//文件转移至
//必须有文件夹
file.transferTo(new File("D:/zzyupload/aaa.txt"));
file.transferTo(new File("D:/zzyupload/"+originalFilename));
//获取字节数组
byte[] bytes = file.getBytes();
String s = bytes.toString();
System.out.println("4 字节数组: "+bytes);
System.out.println("--------");
String contentType = file.getContentType();
System.out.println("--------");
System.out.println("5 contentType: "+contentType);
String name = file.getName();
System.out.println("--------");
System.out.println("6 文件名: "+name);
Resource resource = file.getResource();
System.out.println("--------");
System.out.println("7 resource: "+resource);
long size = file.getSize();
System.out.println("--------");
System.out.println("8 size: "+size);
return "上传成功";
}