本文采用知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
访问 https://creativecommons.org/licenses/by-sa/4.0/ 查看该许可协议。
本文参考官方文档节选翻译, 对开发中对SpringMVC常用类, 做一个简单的整理, 勉强充当一个参考文档
关于更详细的文档请参考: https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html
1) 方法参数
本节介绍SpringMVC, Controller中方法的参数用法
类型 | desc |
---|---|
可注入类型 | |
WebRequest, NativeWebRequest | MVC的请求参数包装, 用于手动获取请求参数 |
javax.servlet.ServletRequest, javax.servlet.ServletResponse | Servlet原生请求响应, 可继承项目的BaseController, 调用getXXX获取 |
javax.servlet.http.HttpSession | Servlet原生Session, 可继承项目的BaseController, 调用getXXX获取 |
java.util.Map,org.springframework.ui.Model,org.springframework.ui.ModelMap | 通常用于节约需要传给模板的Model的构建代码, 如new HashMap() |
注解 | |
@PathVariable | 获取URI中变量, 项目规范必须写上value对应请求参数名, 如@PathVariable("name") |
@MatrixVariable | 获取URI中为key-value格式的数据, 参考文档 |
@RequestParam | 获取query或form类型请求参数, 详见@RequestParam |
@RequestHeader | 获取请求头中的参数, 可不设置value映射Map, 支持将逗号分隔的字符串转换成列表或List |
@CookieValue | 获取Cookie中的参数 |
@RequestBody | 读取请求体并转换为一个Object, 通常用于转换JSON, 支持的转换类型参考HttpMessageConverter接口的实现 |
@RequestPart | 主要用于文件上传型接口, 用法通常为如下获取文件元数据和文件: @RequestPart("meta-data") MetaData metadata,@RequestPart("file-data") MultipartFile file |
@RequestParam
将query(?name=a&age=1)或form(表单提交)类型请求参数绑定到方法参数
简单参数例子
@Controller
@RequestMapping("/pets")
public class EditPetForm {
@GetMapping
public String setupForm(
@RequestParam("petId") int petId // 获取GET请求中的URI中petId参数或, form表单提交中的petId参数
) {}
}
文件上传获取MultipartFile例子
@Controller
public class FileUpload {
@PostMapping("/upload")
public UploadImageResult upload(
@RequestParam("file") MultipartFile multipartFile
, @RequestParam String fileTag
, @RequestParam String businessKey
, @RequestParam(required = false) String metadata
) {
return service.upload(multipartFile, fileTag, businessKey, metadata);
}
}
- 获取query/form参数时, 此注解是可选的, 除非你的param名和请求参数名不对应, 可用注解中的value标注绑定参数
- 如将参数类型声明为数组或List,可以为同一参数名称解析多个参数值。
- 如果将@RequestParam注释声明为Map<String, String>或MultiValueMap<String, String>,而在注释中未指定参数名称, 则会把请求中的所有query/form参数填充进Map中
2) 方法返回值
本节介绍SpringMVC, Controller中方法的返回值类型用法
类型 | desc |
---|---|
@ResponseBody | 将响应的Object转换为一个消息, 通常用于转换对象为JSON, 支持的转换类型参考HttpMessageConverter接口的实现, 此注解也支持标注类, 但是如需要标注类, 更推荐另一个注解@RestController, @RestController = @Controller + @ResponseBody |
String | 指定需要渲染的模板/视图名称,通常返回一个Freemarker模板结合Model渲染页面 |
View | 指定需要渲染的视图, 功能如String, 通常用于返回此接口的实现类, 扩展同时使用多个模板引擎 |
java.util.Map, org.springframework.ui.Model | 交给模板引擎的数据, 通常用于一个Method给另一个Method传数据 |
ModelAndView | 指定要渲染的视图和视图需要的数据 |
void | 通常用于手动使用ServletResponse/OutputStream响应数据的情况 |