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()在同一个响应中是不能混合使用的,如果混合使用就会抛异常

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ProceedingJoinPoint是Spring AOP的一个关键对象,用于在切面获取方法的参数和执行方法。对于获取get请求post请求参数,可以通过以下方式使用ProceedingJoinPoint: 1. 获取get请求参数: - 在切面方法,通过ProceedingJoinPoint对象的getArgs()方法获取方法的参数数组。 - 对于get请求参数通常是通过URL的查询字符串传递的,可以通过解析URL的查询字符串来获取参数。 - 可以使用Spring的UriComponentsBuilder类来解析URL的查询字符串,例如: ```java public void beforeAdvice(ProceedingJoinPoint joinPoint) { // 获取方法参数 Object[] args = joinPoint.getArgs(); // 解析URL的查询字符串 String queryString = ServletRequestUtils.getQueryString(request); MultiValueMap<String, String> queryParams = UriComponentsBuilder.fromUriString(queryString).build().getQueryParams(); // 获取具体参数值 String param1 = queryParams.getFirst("param1"); String param2 = queryParams.getFirst("param2"); // 处理参数... } ``` 2. 获取post请求参数: - 在切面方法,通过ProceedingJoinPoint对象的getArgs()方法获取方法的参数数组。 - 对于post请求参数通常是通过请求的表单数据或JSON数据传递的。 - 可以根据具体的请求类型来获取参数,例如: - 对于表单数据,可以通过HttpServletRequest对象的getParameter()方法来获取参数值。 - 对于JSON数据,可以通过HttpServletRequest对象的getInputStream()方法获取请求体的输入流,然后使用相关的JSON库来解析JSON数据。 - 也可以使用Spring的RequestBody注解来获取请求参数,例如: ```java public void beforeAdvice(ProceedingJoinPoint joinPoint, @RequestBody MyRequestObject requestObject) { // 处理请求参数... } ``` 注意:以上示例代码仅为演示获取参数方式,具体实现可能需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值