转载:http://blog.csdn.net/yaerfeng/article/details/18942739

在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getParameterMap()方法遍历得到,不论GET或POST都可以通过getRequestURL+getParameterMap()来得到请求完整路径

  1. package com.zuidaima
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.util.Map;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. public class GetParams extends HttpServlet {
  10. private static final long serialVersionUID = 1L;
  11. public GetParams() {
  12. super();
  13. }
  14. protected void doGet(HttpServletRequest request,
  15. HttpServletResponse response) throws ServletException, IOException {
  16. PrintWriter writer = response.getWriter();
  17. writer.println("GET " + request.getRequestURL() + " "
  18. + request.getQueryString());
  19. Map<String, String[]> params = request.getParameterMap();
  20. String queryString = "";
  21. for (String key : params.keySet()) {
  22. String[] values = params.get(key);
  23. for (int i = 0; i < values.length; i++) {
  24. String value = values[i];
  25. queryString += key + "=" + value + "&";
  26. }
  27. }
  28. // 去掉最后一个空格
  29. queryString = queryString.substring(0, queryString.length() - 1);
  30. writer.println("GET " + request.getRequestURL() + " " + queryString);
  31. }
  32. protected void doPost(HttpServletRequest request,
  33. HttpServletResponse response) throws ServletException, IOException {
  34. PrintWriter writer = response.getWriter();
  35. Map<String, String[]> params = request.getParameterMap();
  36. String queryString = "";
  37. for (String key : params.keySet()) {
  38. String[] values = params.get(key);
  39. for (int i = 0; i < values.length; i++) {
  40. String value = values[i];
  41. queryString += key + "=" + value + "&";
  42. }
  43. }
  44. // 去掉最后一个空格
  45. queryString = queryString.substring(0, queryString.length() - 1);
  46. writer.println("POST " + request.getRequestURL() + " " + queryString);
  47. }
  48. }

PUT 请求获取不到参数,是因为 PUT 请求的参数不是存放在 HTTP Header 中的,而是在 HTTP Body 中,所以无法通过 request.getParameter() 方法来获取参数。

如果想要获取 PUT 请求的参数,可以参考如下这段代码:

1
2
3
4
5
6
String queryString = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
    queryString += line;
}

拿到了 queryString,它是一个“a=1&b=2”格式的字符串,然后可以轻松的转换成一个 Map,最后通过 map.get() 方法获取指定的参数。

java如何得到GET和POST请求URL和参数列表的更多相关文章

  1. java如何得到GET和POST请求URL和参数列表(转)

    在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getPa ...

  2. Java得到GET和POST请求URL和参数列表

    一 获取URL:getRequestURL() 二 获取参数列表: 1.getQueryString() 只适用于GET,比如客户端发送http://localhost/testServlet?a=b ...

  3. Java_得到GET和POST请求URL和参数列表

    一. 获取URL: getRequestURL()(还有个getRequestURI(),只取后面部分) 二. 获取参数列表: 1.getQueryString() 只适用于GET,比如客户端发送ht ...

  4. java拦截器与过滤器打印请求url与参数

    HttpServletRequest httpServletRequest = (HttpServletRequest) request; HttpServletResponse httpServle ...

  5. 在SSH框架中,如何得到POST请求的URL和参数列表

    在做项目的API通知接口的时候,发现在SSH框架中无法获取到对方服务器发来的异步通知信息.最后排查到的原因可能是struts2对HttpServletRequest进行了二次处理,那么该如何拿到pos ...

  6. http请求 url 传递参数(特殊字符)解决方法

    有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.下表中列出了一些URL特殊符号及编码       十六进制值 1. + URL 中+号表示空格 %2B ...

  7. Django之get请求url的参数

    当get网址是127.0.0.1:8000/mysite10这种类型的网址时 有两种方法: 1,在urls的路由的urlpatterns里面这样定义路由 re_path('^mysite(\d+)$' ...

  8. [工具类]获取url中参数列表

    写在前面 在项目中经常用到解析url中参数的逻辑,今天先下载就自己封装了一个方法,方便以后使用的时候,信手拈来.当然这里给出的方法是针对常见的url参数类型的,对于重写url,或者路由格式的不考虑. ...

  9. javascript:将URL的参数列表解析为一个对象

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. Translation002—Package Index(Android包索引)

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 看本翻译前请您注意: 本人初学android,可能有的翻译不是非常准确,但本人尽最大努力,不清楚处会做标记,并附 ...

  2. 每日一“酷”之copy

    Copy – 复制对象 作用:提供一些函数,可以使用浅副本或深副本语义复制对象. copy模块包括两个函数copy()和deepcopy(),用于复制现有的对象 1.  浅副本 copy()创建的浅副 ...

  3. 【笔记】WPF之模板控件应用

    最近在捣鼓WPF的动画,想自定义一个控件模型来实现动画. 目标功能是这样:在WPF项目文件中创建一个自定义用户控件模型,该模型最外层是一个Grid,Grid布局为3行1列,第一列是一个图片按钮,第二列 ...

  4. 驱动makefile

    1 ifeq ($(KERNELRELEASE),)  2 CURRENT_PATH=$(shell pwd)  3 #KERNEL_DIR:=/lib/modules/$(shell uname - ...

  5. 如何调优JVM - 优化Java虚拟机(大全+实例)

    堆设置 -Xmx3550m:设置JVM最大堆内存 为3550M. -Xms3550m:设置JVM初始堆内存 为3550M.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存. -X ...

  6. sql2008还原问题

    2003的服务器系统不知是因为对SSD的支持不好还是别的原因,系统使用有很多奇怪的问题,所以就升级一下系统,在备份数据库的时候出现了各种问题 源数据库与现数据库都为sqlserver2008,并都安装 ...

  7. WPF 多线程处理(5)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 项目的目录: 以下是FileStroage的 ...

  8. android聊天,存储聊天记录sqlite

    项目中有聊天模块,需要用到打开activity的时候初始化聊天记录的情况.大致情况如下: 辅助类:ChatSQLiteHelper   在第一次时会调用oncreate方法(判断的标准是schedul ...

  9. Wireshark - ICMP 报文分析

    1. 测试机器,源 IP 地址为 10.21.28.110,目的 IP 地址为 10.6.0.24. 2. 使用 "ip.addr == 10.6.0.24 and icmp" 过 ...

  10. Matlab中min/max函数的误解

    1.C= min(a):返回最小值:我原来以为如果a是行向量,min(a)返回a本身,因为我记得min(a,1)是按列找最小,这是默认的.doc min发现,只要a是向量,那么返回最小值. 2.C= ...