tomcat 为什么ServletContext的getAttributeName()返回不需要的属性?

lymnna71  于 2022-11-13  发布在  其他
关注(0)|答案(4)|浏览(114)

我正在处理一个项目,ServletContext类的getAttributeNames()返回的Enumeration引用出现问题。
getAttributeNames()返回的属性名从来没有被我添加过,那么为什么它会显示它们呢?
这些属性包括:

org.apache.tomcat.InstanceManager   
org.apache.catalina.jsp_classpath   
org.apache.tomcat.util.scan.MergedWebXml    
javax.servlet.context.tempdir   
org.apache.catalina.resources   
org.apache.tomcat.JarScanner    
org.apache.jasper.compiler.TldLocationsCache

谁能告诉我如何跳过它们,以便我可以检索我存储的属性?

xytpbqjk

xytpbqjk1#

它们是在服务器逻辑中使用的tomcat属性,你不必为它们操心。

t9aqgxwy

t9aqgxwy2#

每个容器都设置一些属性(取决于实现规范的Web服务器)。例如,Tomcat 5设置以下上下文属性:

  1. jsp_类路径
    1.欢迎您的到来!
  2. javax.servlet.context.tempdir
  3. org.apache.catalina.resources.
    因此它们会由方法传回。
    有关详细信息,请参阅This
f1tvaqid

f1tvaqid3#

这些是Servlet容器(在您的例子中是Tomcat)添加并在内部使用的属性。

mqxuamgl

mqxuamgl4#

您可能无法摆脱Servlet容器提供和设置的属性。
但是,您可以对属性使用推荐的全限定nomenclature1,以区分“标准”属性和自定义属性。
例如,您可以使用org.example.mohammadapp.loggingfolder而不是myAppLoggingFolder,然后您可以简单地通过类似于包的前缀来过滤属性:

if( currentAttributeName.startsWith( "org.example.mohammadapp." ) ) {
    // This is one of your custom attributes.
}

例如,请参阅ServletRequest Javadoc1:

属性名称应遵循与软件包名称相同的约定。以java.、javax. 和com.sun.* 开头的名称保留供Sun Microsystems使用。

相关问题