Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么ServletRequest getAttribute()与getAttributeNames()具有不同的属性?_Java_Servlets_Request - Fatal编程技术网

Java 为什么ServletRequest getAttribute()与getAttributeNames()具有不同的属性?

Java 为什么ServletRequest getAttribute()与getAttributeNames()具有不同的属性?,java,servlets,request,Java,Servlets,Request,我们在Tomcat的前面运行Apache并使用mod_jk。我们的单点登录Apache模块设置有关用户的信息,我们可以通过调用在Java中检索这些信息 这个很好用。现在我想检索所有属性,并查找前缀为“WEBAUTH_LDAP_”的属性。我用过这个 Enumeration<String> enumeration = request.getAttributeNames(); Enumeration枚举=request.getAttributeNames(); 获取属性名称。令我惊讶的

我们在Tomcat的前面运行Apache并使用mod_jk。我们的单点登录Apache模块设置有关用户的信息,我们可以通过调用在Java中检索这些信息

这个很好用。现在我想检索所有属性,并查找前缀为“WEBAUTH_LDAP_”的属性。我用过这个

Enumeration<String> enumeration = request.getAttributeNames();
Enumeration枚举=request.getAttributeNames();
获取属性名称。令我惊讶的是,没有名为“WEBAUTH\u LDAP\u MOBILE”的属性。 这是预期的吗?有没有办法获取所有属性?JavaDoc使它听起来像getAttribute()中的某些内容也应该在getAttributeNames()中


我们使用的是Tomcat 6.0.28。

这是因为使用mod_jk设置的任何属性都可以通过
getAttribute()
使用,但不能通过
getAttributeNames()
使用。根据

您可以通过以下方式检索Tomcat上的变量作为请求属性 获取属性(attributeName)。注意,变量通过 JKENVAR不会列在request.getAttributeNames()中

我调试了所有RequestWrappers(根据BalusC的建议),底层有一个内部属性映射,用于
getAttributeNames()
。但是,当内部映射的值为null时,
getAttribute()
会与另一个对象发生冲突。从javadoc和文档中可以看出,这是按设计工作的

此行为以前被报告为,但修复程序未通过TCK测试:

我只考虑了在返回中包含所有Tomcat内部属性 但这会导致Servlet 2.5 TCK出现问题 期望getAttributeNames()只返回那些 已通过setAttribute()设置


因此,简而言之,
getAttributeNames()
将返回使用
setAttribute()
设置的属性,而
getAttribute()
可以通过各种其他(内部)方式返回设置的属性。

这是因为使用mod_jk设置的任何属性都可以通过
getAttribute()
使用,但不能通过
getAttributeNames()使用
。根据

您可以通过以下方式检索Tomcat上的变量作为请求属性 获取属性(attributeName)。注意,变量通过 JKENVAR不会列在request.getAttributeNames()中

我调试了所有RequestWrappers(根据BalusC的建议),底层有一个内部属性映射,用于
getAttributeNames()
。但是,当内部映射的值为null时,
getAttribute()
会与另一个对象发生冲突。从javadoc和文档中可以看出,这是按设计工作的

此行为以前被报告为,但修复程序未通过TCK测试:

我只考虑了在返回中包含所有Tomcat内部属性 但这会导致Servlet 2.5 TCK出现问题 期望getAttributeNames()只返回那些 已通过setAttribute()设置

因此,简而言之,
getAttributeNames()
将返回使用
setAttribute()
设置的属性,而
getAttribute()
可以通过各种其他(内部)方式返回设置的属性

Enumeration<String> enumeration = request.getAttributeNames();