这几篇连续的博文其实是想让大家从几个实际例子中,逐渐理解spring3-mvc在controller层的知识,但并不是从架构角度理解spring-mvc.我觉得标题有误导性,所以换了个名字 |
前言
所谓标准参数,其实就是我们能够得到与request,response等相关标准实例。习惯了用servlet的人,或者对spring不熟悉,又或者spring不能够满足你过于复杂的需求时,这个例子会对你帮助很大。
实例:
项目:spring-mvc-showcase
包:org.springframework.samples.mvc.data.standard
类:StandardArgumentsController
例一:得到HttpServletRequest
- @RequestMapping(value="/data/standard/request", method=RequestMethod.GET)
- public @ResponseBody String standardRequestArgs(HttpServletRequest request, Principal user, Locale locale) {
- StringBuilder buffer = new StringBuilder();
- buffer.append("request = ").append(request).append(", ");
- buffer.append("userPrincipal = ").append(user).append(", ");
- buffer.append("requestLocale = ").append(locale);
- return buffer.toString();
- }
这里例子的参数分别为:
HttpServletRequest request 这个不需要解释
Principal user 认证用户
Locale locale 本地环境,一般指语言环境
例二:得到 HttpServletResponse
- @RequestMapping("/data/standard/response")
- public @ResponseBody String response(HttpServletResponse response) {
- return "response = " + response;
- }
例三:字符输入流 Reader
- @RequestMapping(value="/data/standard/request/reader", method=RequestMethod.POST)
- public @ResponseBody String requestReader(Reader requestBodyReader) throws IOException {
- return "Read char request body = " + FileCopyUtils.copyToString(requestBodyReader);
- }
例四:字符输出流 Writer
- @RequestMapping("/data/standard/response/writer")
- public void availableStandardResponseArguments(Writer responseWriter) throws IOException {
- responseWriter.write("Wrote char response using Writer");
- }
例五:标准字节输入流 InputStream
- @RequestMapping(value="/data/standard/request/is", method=RequestMethod.POST)
- public @ResponseBody String requestReader(InputStream requestBodyIs) throws IOException {
- return "Read binary request body = " + new String(FileCopyUtils.copyToByteArray(requestBodyIs));
- }
例六:标准字节输出流 OutputStream
- @RequestMapping("/data/standard/response/os")
- public void availableStandardResponseArguments(OutputStream os) throws IOException {
- os.write("Wrote binary response using OutputStream".getBytes());
- }
例七:HttpSession
- @RequestMapping("/data/standard/session")
- public @ResponseBody String session(HttpSession session) {
- StringBuilder buffer = new StringBuilder();
- buffer.append("session=").append(session);
- return buffer.toString();
- }
这个例子里没有新注解,需要说明。
本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/yjplxq/980216,如需转载请自行联系原作者