java springmvc接收请求参数的方法

控制器的请求处理方法的签名可以将任何事物作为参数,我们可以将HttpServletRequest、HttpServletResponse、 String或者数字参数传递进来,这些参数可以对应请求中的查询参数、cookie值、HTTP请求头的值或其他一些可能的选项。

下面一些例子来说明

  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){  
    
            return "methodSignature";  
        }
  3. 使用@RequestHeader绑定请求报文头的属性值
    @RequestMapping(value="/method3")  
        public String method3(  
                @RequestHeader("Accept-Encoding") String encoding,  
                @RequestHeader("Keep-Alive") long keepAlive){  
            return "methodSignature";  
        }
  4. 使用@PathVariabl获取路径中传递参数
    public ModelAndView helloWorld(
                  @PathVariable String id, 
                  @PathVariable String str) {  
            System.out.println(id);  
            System.out.println(str);  
            return new ModelAndView( " /helloWorld " );  
    }
  5. 使用表单对象绑定请求参数值
    @RequestMapping(value="/method4")  
        public String method4(User user){  
            return "methodSignature";  
        }
  6. 使用Servlet API对象作为入参
    • 同时使用HttpServletRequest、HttpServletResponse、HttpSession
      @RequestMapping(value="method5")  
          public void method5(
                    HttpServletRequest request,
                    HttpServletResponse response,
                    HttpSession session){  
              String userName = WebUtils.findParameterValue(request, "userName");  
              response.addCookie(new Cookie("userName",userName));  
          }
    • 使用Servlet原生API接口,如WebRequest和NativeWebRequest等
      @RequestMapping(value="method6")  
          public String method6(WebRequest request){  
              String userName = request.getParameter("userName");  
              return "methodSignature";  
          }
    • 使用IO对象作为入参
      如java.io.InputStream/java.io.Reader 及java.io.OutputStream/java.io.Writer

      @RequestMapping(value="method7")  
          public void method7(OutputStream os) throws IOException{  
              Resource res = new ClassPathResource("/image.jpg");//读取类路径下的图片文件  
              FileCopyUtils.copy(res.getInputStream(), os);  
          }
    • 使用其他类型的参数
      java.util.Locale/java.security.Principal
      也可以通过Servlet的HttpServletRequest的getLocale()及getUserPrincipal()

      @RequestMapping(value="method8")
      public String method8(Locale locale,Principal principal){  
              return "methodSignature";  
          }

      以上转自 :http://blog.csdn.net/jingyuan_/article/details/9465415
      http://blog.csdn.net/yaerfeng/article/details/23658391

Tagged: ,

Comments are closed.