zoukankan      html  css  js  c++  java
  • Springmvc参数获取总结

    分析参数获取,首先要了解http请求时,参数如何存放,否则没有所谓的获取

    主要有下几种情况:
    1.GET

    GET比较简单,没有body,所以获取url上的参数(key=value)。
    2.POST

    POST不仅可以在url上放,参数还可以放在body

    body根据contentType分为三大类

    2.1 application/x-www-form-urlencoded

    POST http://127.0.0.1:8888/demo HTTP/1.1
    Content-Type: application/x-www-form-urlencoded;charset=utf-8
    
    title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
    

      

    2.2 multipart/form-data(一般为传输文件时候用)

    body数据以boundary分隔,如

    POST http://127.0.0.1 HTTP/1.1
    Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
    
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA
    Content-Disposition: form-data; name="text"
    
    title
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA
    Content-Disposition: form-data; name="file"; filename="chrome.png"
    Content-Type: image/png
    
    PNG ... content of chrome.png ...
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
    

      

    2.3 text/plain application/json text/html等等(统称为raw)

    {"value":"money"}
    

     

    我们平时写接口一般用application/json

    表单默认是application/x-www-form-urlencoded,也可以设置为multipart/form-data

    那么,如何用springmvc来获取参数

    GET请求获取参数有如下方法

    方法1  request.getPrameter("xxx")

    方法2  @RequestParam String xxx

    注意:

    request.getPrameter("xxx") == request.getPrameterValues("xxx")[0]

    @RequestParam String xxx  == request.getPrameterValues("xxx") 循环并逗号分开

    一般一个参数名对应一个值,request.getPrameter("xxx")获取的值和@RequestParam String xxx是一样的。当有多个值就有所区别

    eg:http://127.0.0.1:8888/demo?xxx=a&xxx=b

    request.getPrameter("xxx") = a

    @RequestParam String xxx = a,b

    request.getPrameterValues("xxx")=[a,b]

    POST url参数获取方式和GET一样

    POST application/x-www-form-urlencoded获取方式和GET一样

    POST multipart/form-data获取方式 @RequestParam MultipartFile file

    注意:写form表单要记得修改enctype=multipart/form-data

    POST application/json获取body json @RequestBody Object xxx

    @RequestBody String xxx会获取body的String值,无论是什么contentType

    一般这种情况,传输的是一个json对象,利用Springmvc,直接声明对象,可以帮你转换成你想要的对象。

    基本覆盖常用获取参数的情况。后续有时间分析一下springmvc解析参数这块源码



    ps:

    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

    而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

  • 相关阅读:
    陶瓷电容的结构、工艺、失效模式
    Vue.js最佳实践
    Vue 超快速学习
    CSS 小技巧
    HTML5 Canvas
    webkit下面的CSS设置滚动条
    Some untracked working tree files would be overwritten by checkout. Please move or remove them before you can checkout. View them
    JSCS: Please specify path to 'JSCS' package
    React中ref的使用方法
    React 60S倒计时
  • 原文地址:https://www.cnblogs.com/turn2i/p/10480028.html
Copyright © 2011-2022 走看看