1

我对 servlet 还很陌生,所以我希望这不是一个明显的问题。因此,我有一个使用模板在 NetBeans 中创建的简单 Java servlet。我在 web.xml 中创建了一个上下文参数,其中列出了允许的主机(我的请求参数之一是一个 URL,我将与此列表进行比较):

<context-param>
    <param-name>allowedHosts</param-name>
    <param-value>
        http://opendap.co-ops.nos.noaa.gov/thredds/wms/NOAA/CBOFS/MODELS/201206/nos.cbofs.fields.nowcast.20120612.t00z.nc?service=WMS&version=1.3.0&request=GetCapabilities
        http://www.google.com
        http://www.facebook.com
    </param-value>
</context-param>

当我只将虚拟 URL 放入 Google 和 Facebook 时,这非常有效。但是,当我添加第一个 URL 时,Tomcat 服务器甚至无法部署。查看我的日志,我在一个很长的堆栈跟踪的顶部看到了这一点:

SEVERE: Parse Fatal Error at line 19 column 146: The reference to entity "version" must end with the ';' delimiter.
org.xml.sax.SAXParseException: The reference to entity "version" must end with the ';' delimiter.

第 19 行第 146 列确实指向我在上下文参数列表中拥有的那个长 URL 的“版本”部分。所以显然“版本”是某种保留词。如果我从这个 URL 中删除“版本”参数,“请求”也是一个问题。

我可以通过http://opendap.co-ops.nos.noaa.gov/thredds/wms/像 URL 一样来解决这个问题(因为最终我想要一个主机列表而不是特定的 URL),但我想知道要不然怎么做才能解决这个问题......有没有办法包括在 web.xml 中有这样的“保留词”的 URL?

谢谢!

4

1 回答 1

4

只需输入“&” (不带引号)而不是 URL 中的 & 符号。

希望这会有所帮助 - DF

编辑:试试这个:

<context-param>
<param-name>allowedHosts</param-name>
<param-value>
    http://opendap.co-ops.nos.noaa.gov/thredds/wms/NOAA/CBOFS/MODELS/201206/nos.cbofs.fields.nowcast.20120612.t00z.nc?service=WMS&amp;version=1.3.0&amp;request=GetCapabilities
</param-value>

Edit2:PS 这些东西在 XML 中被称为“实体”——谷歌了解更多信息

于 2012-06-15T14:03:34.983 回答