Spring MVC接收multipart/form-data格式的数据

页面通过表单向服务器发送数据常用两种方式

application/x-www-form-urlencoded

窗体数据被编码为名称/值对。这是标准的编码格式。空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值。

body区
actionId=1&courseId=2&type=1&question=%E8%AF%BE%E7%A8%8B%E4%BA%8C%E7%9A%84%E9%97%AE%E9%A2%98&imgUrl=https%3A%2F%2Fmp.weixin.qq.com%2Fdebug%2Fwxadoc%2Fdev%2Fimage%2Fquickstart%2Fbasic%2Fregister.png%3Ft%3D2018327&popTime=60

multipart/form-data

窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。 不对字符进行编码,使用二进制数据传输,一般用于上传文件,非文本的数据传输。

body区
------WebKitFormBoundaryNJ0HZ7RuWVWK42Rr
Content-Disposition: form-data; name="actionId"

1
------WebKitFormBoundaryNJ0HZ7RuWVWK42Rr
Content-Disposition: form-data; name="courseId"

1
------WebKitFormBoundaryNJ0HZ7RuWVWK42Rr
Content-Disposition: form-data; name="question"

课程二的问题

Spring如果要接受这种数据,添加以下配置

<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">       
</bean>

SpringMVC的几种取值方式

  • 通过注解@PathVariable获取url中的值。
@RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET)
public String myController(@PathVariable String id,@PathVariable String name, ModelMap model) {
     ……
  }
  ```
- 通过注解RequestParam获取传递过来的值。
```java
@RequestMapping(value = "/test", method = RequestMethod.POST) 
public String myTest(@RequestParam(required=false,defaultValue=""),@RequestParam("phone") String phone, ModelMap model) { 
     ……
 }
  • 通过原生HttpServletRequest获取值。
@RequestMapping(value="/test" method = RequestMethod.POST) 
public String get(HttpServletRequest request, HttpServletResponse response) { 
     String name = request.getParameter("name")); 
     ……
 }
  • 通过注解ModelAttribute直接映射表单中的参数到POJO。

1 条评论

[/0o0] [..^v^..] [0_0] [T.T] [=3-❤] [❤.❤] [^v^] [-.0] [!- -] [=x=] [→_→] [><] 更多 »
昵称
  1. 新闻头条 Google Chrome 55 Google Chrome 55 Windows 7 Windows 7

    文章不错非常喜欢