我对servlet相当新,所以我希望这不是一个明显的问题。所以我有一个简单的Java servlet,我是在NetBeans中使用模板创建的。我在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>
当我只在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列确实指向&#34;版本&#34;我在上下文参数列表中包含的那个长URL的一部分。很明显&#34;版本&#34;是某种保留词。如果我删除&#34;版本&#34;来自此网址的参数&#34; request&#34;也是一个问题。
我可以通过仅使用http://opendap.co-ops.nos.noaa.gov/thredds/wms/
作为URL来解决这个问题(因为最终我想要一个主机列表而不是特定的URL),但我想知道如果要解决这个问题需要做些什么。 ..是否有办法包含具有此类&#34;保留字的网址&#34;在web.xml中?
谢谢!
答案 0 :(得分:4)
只需输入“&amp; amp;” (不带引号)而不是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&version=1.3.0&request=GetCapabilities
</param-value>
Edit2:PS这些东西在XML中被称为“实体” - 为Google提供更多信息