页面通过表单向服务器发送数据常用两种方式
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。
文章不错非常喜欢