这几篇连续的博文其实是想让大家从几个实际例子中,逐渐理解spring3-mvc在controller层的知识,但并不是从架构角度理解spring-mvc.我觉得标题有误导性,所以换了个名字

前言

所谓标准参数,其实就是我们能够得到与request,response等相关标准实例。习惯了用servlet的人,或者对spring不熟悉,又或者spring不能够满足你过于复杂的需求时,这个例子会对你帮助很大。 

实例:

项目:spring-mvc-showcase

包:org.springframework.samples.mvc.data.standard

类:StandardArgumentsController 

例一:得到HttpServletRequest

  1. @RequestMapping(value="/data/standard/request"method=RequestMethod.GET)   
  2.     public @ResponseBody String standardRequestArgs(HttpServletRequest request, Principal user, Locale locale) {   
  3.         StringBuilder buffer = new StringBuilder();   
  4.         buffer.append("request = ").append(request).append(", ");   
  5.         buffer.append("userPrincipal = ").append(user).append(", ");   
  6.         buffer.append("requestLocale = ").append(locale);   
  7.         return buffer.toString();   
  8.     } 

 这里例子的参数分别为:

HttpServletRequest  request 这个不需要解释

Principal user 认证用户

Locale locale  本地环境,一般指语言环境  

例二:得到 HttpServletResponse

  1. @RequestMapping("/data/standard/response")   
  2.     public @ResponseBody String response(HttpServletResponse response) {   
  3.         return "response = " + response;   
  4.     } 

 例三:字符输入流 Reader

  1. @RequestMapping(value="/data/standard/request/reader"method=RequestMethod.POST)   
  2.     public @ResponseBody String requestReader(Reader requestBodyReader) throws IOException {   
  3.         return "Read char request body = " + FileCopyUtils.copyToString(requestBodyReader);   
  4.     } 

例四:字符输出流 Writer

  1. @RequestMapping("/data/standard/response/writer")   
  2.     public void availableStandardResponseArguments(Writer responseWriter) throws IOException {   
  3.         responseWriter.write("Wrote char response using Writer");   
  4.     } 

例五:标准字节输入流 InputStream

  1. @RequestMapping(value="/data/standard/request/is"method=RequestMethod.POST)   
  2. public @ResponseBody String requestReader(InputStream requestBodyIs) throws IOException {   
  3.     return "Read binary request body = " + new String(FileCopyUtils.copyToByteArray(requestBodyIs));   

 例六:标准字节输出流 OutputStream

  1. @RequestMapping("/data/standard/response/os")   
  2.     public void availableStandardResponseArguments(OutputStream os) throws IOException {   
  3.         os.write("Wrote binary response using OutputStream".getBytes());   
  4.     } 

 例七:HttpSession

  1. @RequestMapping("/data/standard/session")   
  2. public @ResponseBody String session(HttpSession session) {   
  3.     StringBuilder buffer = new StringBuilder();   
  4.     buffer.append("session=").append(session);   
  5.     return buffer.toString();   
  6. }  

 

这个例子里没有新注解,需要说明。