2

グラフィック2Dオブジェクトを作成し、それをパネルに貼り付けて描画するデスクトップアプリがあります。サーブレットとjspsを使用して、このアプリをWebページに変換しようとしています。私は2日間オンラインで読んでいて、これを行う方法に頭を悩ませることはできません。私が見つけたそれぞれの例は、重要な部分を省略しているようです。各ユーザーが新しい/異なる画像を取得するため、画像をファイルに保存したくありません。

サーブレットで他の応答変数と一緒に画像を作成し、それらを同時にjspに渡すことはできますか?次に、$ {response.image}のようなものを使用して画像を呼び出します。これは望ましいようですが、機能しないようです。

または、イメージ専用の別のサーブレットが必要ですか(これは難しいようです)?また、HTMLで画像として使用するGraphics2Dオブジェクトを準備するにはどうすればよいですか?

4

2 に答える 2

3

<img>取得したHTMLコードで見つかった要素のURLに基​​づいて個々の画像をダウンロードする必要があるのはウェブブラウザであり、生成されたHTMLコードで画像の生のコンテンツをインライン化する必要があるのはウェブサーバーではないことを理解する必要があります。 。

<img>要素の特定のURLをリッスンするスタンドアロンのイメージサーブレットを作成する必要があります。HTMLコードの生成中に、リクエストクエリ文字列またはリクエストパス情報で一意の画像識別子を提供することで、サーブレットを再利用可能にすることができます。

例えば

<img src="imageServlet?param1=value1&param2=value2" />

とともに

@WebServlet("/imageServlet")
public class ImageServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Create image based on request.getParameter() information.
        // Set proper content type by response.setContentType().
        // Write image to response.getOutputStream().
    }

}

参照:

于 2012-05-12T14:36:53.627 に答える
0

質問の最初の部分に答えます。HTMLページに画像を埋め込むには、最初に次のマークアップを含むHTMLページを生成する必要があります。

<img src="somePath" />

このHTMLマークアップはリクエストへの応答で送信され、ブラウザがそれを解析します。somePath次に、画像のバイトをダウンロードするために、に2番目のHTTPリクエストを送信します。

したがって、生成された画像を何らかの方法でメモリに保存し、2番目のリクエストを待ってから、バイトを応答に送信するか、2番目のリクエストが届くまで画像の生成を遅らせる必要があります。2番目のソリューションの方がはるかに好きです。したがって、最初のリクエストを処理するコードの目標はimg、適切なURLを指すタグを含むマークアップを生成することです。このURLには、実際に画像を生成するために必要なすべてのパラメータが含まれている必要があります。

2番目の部分では、BufferedImageインスタンスを作成し、そのGraphics2Dオブジェクトに描画し、ImageIOを使用してこのBufferedImageを応答出力ストリームに書き込む必要があります。

于 2012-05-12T14:37:58.133 に答える