1

私はサーブレットにかなり慣れていないので、これが明白な質問でないことを願っています。したがって、テンプレートを使用して NetBeans で作成した単純な Java サーブレットがあります。許可されたホストをリストする web.xml で作成したコンテキスト パラメータがあります (リクエスト パラメータの 1 つは、このリストと比較する 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 だけを入れると、これは完全に機能します。ただし、最初の 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 から「バージョン」パラメータを削除すると、「リクエスト」も問題になります。

URLと同じように行うことでこれを回避できhttp://opendap.co-ops.nos.noaa.gov/thredds/wms/ます(最終的には特定のURLではなくホストのリストが必要なため)が、そうでなければこれを回避するために何をしなければならないのか疑問に思っていました...含める方法はありますかweb.xml にそのような「予約語」を含む URL はありますか?

ありがとう!

4

1 に答える 1

4

「&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&amp;version=1.3.0&amp;request=GetCapabilities
</param-value>

Edit2:PSこれらはXMLでは「エンティティ」と呼ばれます-詳細についてはGoogleを参照してください

于 2012-06-15T14:03:34.983 に答える