看代码,一看就明白:
package com.wondersgroup.hs.test.controller; import java.io.IOException; import java.io.OutputStream; import java.security.Principal; import java.util.Locale; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.stereotype.Controller; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.context.request.WebRequest; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.util.WebUtils; import com.wondersgroup.hs.test.model.User; @Controller @RequestMapping("/methodSignature") public class ProcessingMethodSignatureController { //1.使用@RequestParam绑定请求参数值 @RequestMapping(value="/method1") public String method1( @RequestParam(value="userName",required = false) String userName, @RequestParam("pwd") String pwd){ return "methodSignature"; } //2.使用@CookieValue绑定请求中的Cookie值 @RequestMapping(value="/method2") public String method2( @CookieValue(value="sessionId",required=false)String sessionId, @RequestParam("count") int count){ return "methodSignature"; } //3.使用@RequestHeader绑定请求报文头的属性值 @RequestMapping(value="/method3") public String method3( @RequestHeader("Accept-Encoding") String encoding, @RequestHeader("Keep-Alive") long keepAlive){ return "methodSignature"; } //4.使用命令/表单对象绑定请求参数值 @RequestMapping(value="/method4") public String method4(User user){ return "methodSignature"; } //5.使用Servlet API对象作为入参 //(1)同时使用HttpServletRequest/HttpServletResponse @RequestMapping(value="method5") public void method5(HttpServletRequest request,HttpServletResponse response){ String userName = WebUtils.findParameterValue(request, "userName"); response.addCookie(new Cookie("userName",userName)); } //(2)仅使用HttpServletRequest作为入参 @RequestMapping(value="method6") public ModelAndView method6(HttpServletRequest request){ String userName = WebUtils.findParameterValue(request, "userName"); ModelAndView mav = new ModelAndView(); mav.setViewName("success"); mav.addObject("userName", userName); return mav; } //(3)使用HttpSession作为入参 @RequestMapping(value="method7") public String method7(HttpSession session){ session.setAttribute("sessionId", 1234); return "success"; } //(4)既使用HttpServletRequest同时使用基本类型的入参 @RequestMapping(value="method8") public String method8(HttpServletRequest request, @RequestParam("userName") String userName){ return "methodSignature"; } //(5)若干Servlet原生API接口,如WebRequest和NativeWebRequest等 @RequestMapping(value="method9") public String method9(WebRequest request){ String userName = request.getParameter("userName"); return "methodSignature"; } //5.使用IO对象作为入参 //使用java.io.InputStream/java.io.Reader 及java.io.OutputStream/java.io.Writer @RequestMapping(value="method10") public void method10(OutputStream os) throws IOException{ Resource res = new ClassPathResource("/image.jpg");//读取类路径下的图片文件 FileCopyUtils.copy(res.getInputStream(), os); } //6.使用其他类型的参数 //java.util.Locale/java.security.Principal //也可以通过Servlet的HttpServletRequest的getLocale()及getUserPrincipal() public String method11(Locale locale,Principal principal){ return "methodSignature"; } }