后端获取URL和参数

一:获取URL

1.Request.getRequestURL

    返回的是请求的全部,包括http协议、端口号、servlet名字和映射路径,但不包含请求参数。

     结果:http://localhost:8080/jqueryWeb/resources/request.html

 

2.Request.getRequestURI

    返回的是url的部分,即相对路径。

     结果/jqueryWeb/resources/request.html

 

二: 获取参数列表

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请求要根据<form>表单提交数据的编码方式来确定能否使用。
当编码方式是(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()在同一个响应中是不能混合使用的,如果混合使用就会抛异常。

 

上述部分来源于:https://www.cnblogs.com/xiancheng/p/5524338.html

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值