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(返回数据)

  • 相关阅读:
    HTML5新增
    【目录】洛谷|CODEVS题解汇总
    【搜索】kkksc03考前临时抱佛脚
    【模拟】压缩技术
    【模拟】爱与愁的一千个伤心的理由
    【搜索】棋盘
    【模拟】图书管理员
    【递归】对称二叉树
    【题单】挖坑大行动
    【模拟】弹珠游戏
  • 原文地址:https://www.cnblogs.com/turn2i/p/10480028.html
Copyright © 2011-2022 走看看