package org.springframework.samples.mvc.data.standard; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; import java.io.Writer; import java.security.Principal; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class StandardArgumentsController { // request related @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(); } @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); } @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)); } // response related @RequestMapping("/data/standard/response") public @ResponseBody String response(HttpServletResponse response) { return "response = " + response; } @RequestMapping("/data/standard/response/writer") public void availableStandardResponseArguments(Writer responseWriter) throws IOException { responseWriter.write("Wrote char response using Writer"); } @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(); } }