3

Java WebサーバーのCSS/JSファイル内からWebアプリケーションのコンテキストURLにアクセスするにはどうすればよいですか?

URL (背景画像など) をurl('../img/bg.gif')etc. と相対的にマッピングできますが、これは次のようなマッピングを持つ Web アプリケーションでは機能しません。

  • /店/
  • /ショップ/ショー/3/
  • /ショップ/支払い/

ブラウザは現在の「仮想」ディレクトリを基準にしてこのファイルを検索するためです。

また、 (not )のような最上位ディレクトリへの展開を強制するためurl('/images/bg.gif')、 のようにイメージ URL をグローバルに普遍的にマップすることはできません。example.com/example.com/myproject/

アプリケーションコンテキスト URL を変更するときに CSS/JS(ajax) URL を変更しないようにするにはどうすればよいですか? これらの静的ファイルを提供するデフォルトのサーブレットで contextPath にアクセスするような簡単な方法で、CSS ファイルのアプリケーション コンテキストにアクセスできますか?

4

1 に答える 1

1

次のようなことができます (Tomcat を使用していると仮定します。そうでない場合は、ドキュメントを調べて、マッピングを追加するための正しいサーブレット名を見つけてください)。

<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <init-param> 
        <param-name>fork</param-name> 
        <param-value>false</param-value> 
    </init-param> 
    <init-param> 
        <param-name>xpoweredBy</param-name> 
        <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>3</load-on-startup> 
</servlet> 

<servlet-mapping> 
  <servlet-name>jsp</servlet-name>
  <url-pattern>*.css</url-pattern>
</servlet-mapping>

次に、css に jsp el コードを追加できます。

url('${pageContext.request.contextPath}/images/bg.gif')

これにより、CSS ファイルの処理が大幅に遅くなるため、ルートで絶対パスを指定できるかどうかを考慮してください。カスタム配色を出力できるように、CSS のスキニングを許可するアプリでこのアプローチを使用しました。

于 2013-09-24T19:51:38.230 に答える