• java从request中获取GET和POST请求参数


    URL和参数列表

    一 获取请求方式

    request.getMethod(); get和post都可用,

    二 获取请求类型

    request.getContentType(); get和post都可用,示例值:application/json ,multipart/form-data, application/xml等

    三 获取所有参数key

    request.getParameterNames(); get和post都可用,注:不适用contentType为multipart/form-data

    四 获取参数值value

    request.getParameter("test"); get和post都可用,注:不适用contentType为multipart/form-data

    五 获取取参数请求集合

    request.getParameterMap(); get和post都可用,注: 不适用contentType为multipart/form-data

    六 获取文本流

    request.getInputStream() 适用于如:application/json,xml,multipart/form-data文本流或者大文件形式提交的请求或者xml等形式的报文

    七 获取URL

    getRequestURL()

    八 获取参数列表:

    1.getQueryString()

    只适用于GET,比如客户端发送http://localhost/testServlet?a=b&c=d&e=f,通过request.getQueryString()得到的是a=b&c=d&e=f.

    2.getParameter()

    GET和POST都可以使用

    但如果是POST请求要根据

    表单提交数据的编码方式来确定能否使用.当编码方式是(application/x- www-form-urlencoded)时才能使用.

    这种编码方式(application/x-www-form-urlencoded)虽然简单,但对于传输大块的二进制数据显得力不从心.

    对于传输大块的二进制数这类数据,浏览器采用了另一种编码方式("multipart/form-data"),这时就需要使用下面的两种方法.

    3.getInputStream()

    4.getReader()

    上面两种方法获取的是Http请求包的包体,因为GET方式请求一般不包含包体.所以上面两种方法一般用于POST请求获取参数.

    需要注意的是:

    request.getParameter()、 request.getInputStream()、request.getReader()这三种方法是有冲突的,因为流只能被读一次。

    比如:

    当form表单内容采用 enctype=application/x-www-form-urlencoded编码时,先通过调用request.getParameter()方法得到参数后,

    再调用request.getInputStream()或request.getReader()已经得不到流中的内容,

    因为在调用 request.getParameter()时系统可能对表单中提交的数据以流的形式读了一次,反之亦然。

    当form表单内容采用 enctype=multipart/form-data编码时,即使先调用request.getParameter()也得不到数据,

    所以这时调用request.getParameter()方法对 request.getInputStream()或request.getReader()没有冲突,

    即使已经调用了 request.getParameter()方法也可以通过调用request.getInputStream()或request.getReader()得到表单中的数据,

    而request.getInputStream()和request.getReader()在同一个响应中是不能混合使用的,如果混合使用就会抛异常

    get请求内调用post请求减少冗余代码

    正是由于有了统一的获取参数的方式,即get请求和post请求可以通用的方式来获取请求参数,所以在servlet内部,可以在get方式请求内部调用post方式的方法,通过通用的方式获取参数,并在post内部完成业务逻辑,减少代码的冗余。
    例如使用request.getParameterNames(); get和post都可用,这种方式

    post请求乱码的原因和处理方式

    艾欧尼亚,昂扬不灭,为了更美好的明天而战(#^.^#)
  • 相关阅读:
    zTree的学习
    spring第9天(事务)
    spring学习第8天(advisor)
    spring学习第7天(PCD以及切点表达式)
    学习spring第6天(aop获取目标方法参数)
    学习spring第五天 mybatis+spring的整合(maven多模块数据查询使用了分页和连接池),以及aop
    学习spring的第4天
    Arcgis for Js之GeometryService实现测量距离和面积
    Arcgis for Js实现graphiclayer的空间查询(续)
    Arcgis for Js实现graphiclayer的空间查询
  • 原文地址:https://www.cnblogs.com/lovelywcc/p/14394752.html
Copyright © 2020-2023  润新知