当前位置: 首页 > 面试题库 >

使用Java Servlet关联数组请求参数解析

罗均
2023-03-14
问题内容

是否可以使用Java Servlet API解析此类请求中的字符串键?

http://localhost:8080/?assocArray[key1]=value1&assocArray[key2]=value2&assocArray[key3]=value3

getParameterValues("assocArray") returns ["value3","value1","value1"]

返回数组中值的顺序不是键的顺序(无关紧要)

已解决:可能将键解释为简单的全局键字符串。Java无法将它们识别为数组。使用正则表达式


问题答案:

不直接。将[]在HTTP请求的参数没有特殊的含义,是由不被识别为数组键了Servlet
API(你或许这的确有这个专有解析器PHP程序员?)。你需要分析和收集它 自己 在一个循环。

例如,

Map<String, String> assocArray = new LinkedHashMap<String, String>();

for (Entry<String, String[]> entry : request.getParameterMap().entrySet()) {
    String name = entry.getKey();

    if (name.startsWith("assocArray[")) {
        String key = name.substring(name.indexOf('[') + 1, name.indexOf(']')); 
        assocArray.put(key, entry.getValue()[0]);
    }
}


 类似资料:
  • 可以在模板中直接使用$Request对象,直接输入它的属性或调用它的大部分方法,但只支持方法的第一个参数; // 调用Request对象的get方法 传入参数为id {$Request.get.id} // 调用Request对象的param方法 传入参数为name {$Request.param.name} // 调用Request对象的param方法 传入参数为post.post_title

  • 可以在模板中直接使用$Request对象,直接输入它的属性或调用它的大部分方法,但只支持方法的第一个参数; // 调用Request对象的get方法 传入参数为id {$Request.get.id} // 调用Request对象的param方法 传入参数为name {$Request.param.name} // 调用Request对象的param方法 传入参数为post.post_title

  • SystemTap支持关联数组。关联数组就像其它编程语言中的map/dict/hash,你可以把它看作由互不相同的键所组成的数组,每个键都有一个关联的值。 关联数组需要定义为全局变量。访问关联数组的值的语法跟awk类似,就是array_name[index_expression]。 这里的array_name指关联数组的名字,index_expression指数组中某个唯一的键。比如在下面的例子中

  • 我有一个数组 String[]strArray={牛奶,面包,鸡蛋}; 通常我们可以在一个循环中显示strArray[i]的值。。。但是,我从请求参数的值动态获取数组“StrArray”的名称 request.get参数("arrayName"); 请其中一位专家建议如何根据请求构造arrayname并使用它显示数组的值。

  • 我使用Jersey和嵌入式Tomcat开发了REST服务器。 当我的客户端使用Jersey向我的服务器发送请求并添加其值为UTF-8编码的请求参数时,我会收到服务器端解码的参数。 我的问题是,谁负责解码这个参数?是雄猫吗?球衣<我可以禁用此功能吗?

  • 问题内容: 我试图通过cURL从命令提示符向远程REST API发送“ GET”请求,如下所示: 但它不返回任何输出。我尝试直接从浏览器ping URL,我能够成功获得响应,但我不知道该命令出了什么问题。 基本上,我想为远程REST服务设置一个“ GET”请求,该请求通过curl向我提供json数据作为响应。谁能指导我我在做什么错?我尝试了各种帖子,但是所有人都在谈论POST请求而不是GET。 问