上文讲解了SpringMVC中的注解RestControllerhe和ResponseMapping、如何传递参数对象、数组、JSON重点掌握······、传递参数为基本类型和包装类型的区别今天讲解的是如何获取url参数和如何上传文件。1.获取url中的参数PathVariable想要学习如何获取url中的参数首先要知道什么是url的参数。url中的参数分为路径参数和查询字符串前面介绍的传递参数中的参数就是在查询字符串中的参数接下来是要介绍如何获取路径参数举个例子 https://mp.csdn.net/mp_blog/creation/editor?spm1001.2014.3001.5352这是一个普通的url它的结构为请求类型://域名端口路径?参数。也就是说“”后面是字符串参数类型为keyvalue而路径就是我们要获取的路径参数接下来将用代码介绍如何获取url的参数RequestMapping(/r9/{articleId}) public String r9 (PathVariable int articleId){ return 参数articleId; }如果想要获取r9后面的一个路径参数只需要在requestMapping注解后面带的参数位置使用{参数名称}形式写入并在方法参数位置使用PathVariable注解拿到路径参数要注意的是方法参数名称要和{}中的名称一致否则会找不到该参数{articleId}是url占位符代表路径里这一段是动态参数PathVariable表示告诉SpringMVC从url路径取出articleId对应的值赋值给方法变量上图中articleId和articleId1两者对应不上再看idea的报错日志显示articleId1不存在。如果不想让方法参数和{}一致也可以进行修改RequestMapping(/r10/{articleId}) public String r10 (PathVariable(articleId) int articleId1){ return 参数articleId1; }如图所示这个表示SpringMVC从url路径中拿到articleId的值通过PathVariable将这个值赋值给方法参数articleId1。同时我们也可以获取多个参数SpringMVC会将对应名称的路径参数分别对应给方法参数只要名称相对应就不会出现多个参数而不知道哪个路径参数对应哪个方法参数这也是我们为什么需要保持名称的一致性。RequestMapping(/r10/{articleId}/{text}) public String r10 (PathVariable(articleId) int articleId1,PathVariable int text){ return 参数articleId1 text; }PathVariable和RequestParam的对比必传性参数位置url样式主要作用PathVariable必传在路径中/r10/456123从url路径{占位符}取值RequestParam必传可改成非必传后面/r10?id56123获取url后面的参数进行参数绑定2.上传文件在有一些时候我们也需要把文件上传到我们的硬盘中接下来将简单介绍一下如何上传文件。上传文件我们需要用到的注解为RequestPart文件对应的类是MultipartFile。MultipartFile类的几个常见方法multipartFile.getOriginalFilename()获取客户端上传文件的原始文件名严禁直接作为服务器保存文件名multipartFile.transferTo(目标文件)保存文件到磁盘multipartFile.getBytes()获取文件字节数组getSize()文件大小getContentType()文件MIME类型 image/png接下来以上传照片为例:RequestMapping(/r11) public String r11 (RequestPart MultipartFile file) throws IOException { String originalFilename file.getOriginalFilename(); System.out.printf(originalFilename); file.transferTo(new File(D://originalFilename)); return 上传成功; }代码写完之后就需要传递照片给multipartfile接收可以利用posterman来上传点击form-datakey格式选择File在value选择要上传的文件点击上传想要上传的文件点击Send上传成功注意事项参数名和方法参数名要保持一致性在posterman中我们传递的参数名为file那在idea方法接收的方法参数名也应该是file如果想要改方法参数名可以在RequestPart括号中填入原本的参数名方法参数即可不和传递的参数名一样(RequestPart(file) MultipartFile multipartfile)transferTo()中new File不能直接添加路径使用transferTo()方法要记得抛异常上传的文件如果过大会上传失败结束语上文所总结的知识点均为个人学习过程中总结出来的如有错误请批评指教