1

ハードドライブから画像をアップロードし、アプリ内のフォルダーに保存します。
しかし、画像は JSP にすぐには表示されず、アプリを再起動した後にのみ表示されます。
アプリのリソースが読み込まれたときに、必要な画像ファイルが宛先フォルダーにまだ存在しないためだと思います。
したがって、画像ファイルを宛先フォルダーに保存した直後にプログラムでアプリのリソースを再読み込みすると問題が解決すると思いますが、その方法がわかりません。

更新 1: jsp の一部は、イメージが要求されました。

<img src="${pageContext.servletContext.contextPath}/img/${imageUrl}" />

ここで、imageUrlは拡張子付きの画像ファイル名です。 画像はMyProject/src/main/webapp/img/

に保存されます

誰でも私を助けることができますか?
前もって感謝します。

4

1 に答える 1

1

なるほど..ありがとう。

これが何が起こるかです(IMHO :)):

JSP の処理中に、変数は何らかの静的パスに解決され、ブラウザーに渡されます。

ブラウズはここで静的コンテンツをレンダリングします。パスを確認すると、サーバーに追加の http 要求を発行しますが、サーバーが画像を静的に見つけられないようです。これは、いったん配備されると、戦争の物理構造を変更できないという事実によるものです。展開されたディレクトリではなく、WAR のファイルベースの表現で作業するのと同じように考えてください。

今何ができる?

バイナリ イメージを取得する要求を受け取り、それを返すリソース サーブレットを作成してみてください。

このサーブレットを web.xml に /resource などのパスで登録し、get パラメータ imgName を取得します。

<img src="resource?imageName=${imageNameYouWant}" />

img src タグの静的コンテンツの代わりに jsp で、画像をパラメーターとして使用してサーブレットを呼び出します。ブラウザがこれを確認すると、以前と同様に通常のリクエストを発行しますが、今回はリソース サーブレットによって処理され、画像が表示されます。

私が試みるもう1つのことは、画像フォルダーをwebappディレクトリの外に移動することです。このディレクトリは Web コンテナーによって自動的に追跡されますが、そこに画像を保存する理由はありません。

あなたはこのようにします:

  1. 次のようなディレクトリを作成します: /myapp/images

  2. サーバー側でいくつかのコンポーネントを作成する必要があります。しかし今回は、Web サーバー側 (カスタム サーブレットなし) でいくつかの構成を作成することでおそらく実行できます。最初のアプローチを使用するときにこれが機能するかどうかはわかりません...

  3. 上で説明したように、サーバー上の JSP ポイント内。

それはエンタープライズ向けの重要なアプリケーションであり、データベースに画像を保存することと組み合わせて最初のアプローチをお勧めしますが、別の話です:)

お役に立てれば

于 2012-10-11T11:33:00.180 に答える