2016-05-26 2 views
0

私の理解しているところでは、JSPはクライアントに提供するものです。しかし、JSPを単にテンプレートとして使用してhtmlページを動的にアセンブルすることは可能ですか?それで私はクライアントに提供しますか?私は何を意味することは、サーブレットがある計算した後、ユーザー JSPをテンプレートとして使用せずにWebページとして提供する方法

  • から電話を受け、私のサーブレットが動的に
  • サーブレットがJSP「結果」を取得または変換htmlページを組み立てるためにJSPを呼び出して、この

    1. です(結果のhtmlページ)を文字列に変換する
    2. サーブレットは、その文字列で必要なものを実行できるようになりました。それはHTMLウェブページとして返すことも、データベースに保存することもできます。結局のところ、ここの文字列は適切なhtmlページ/テキストです。

    比較のため、PythonにはJinja2があります。これはまさに私が説明したものです。 JavaのJinja2に最も近いのはJSPのようです。

    htmlページを動的に組み立てるにはテンプレートが必要です。上記のようにJSPを使用することができれば、Javaで私の問題を解決できます。 JSP自体は気にしないことに注意してください。私はちょうどJinja2に似たテンプレートが必要です(App Engine上でJavaでJinja2を使うことができれば理想的です)。また、私はJSPについて非常に新しいです。だから回答があれば、例として書式を書いてください。それは本当に役に立つでしょう。

    ビジネス上の理由から、Python App-EngineからJava App Engineに移行しています。

  • +0

    メモとして。私はJinJava https://github.com/HubSpot/jinjavaを見てきましたが、何らかの理由でapp-engineで動作させることができません。その代わりに、App-Engineサーブレット内のJinja2の例があります。 –

    +0

    JSPは、クライアント側ではなくサーバー側のプログラミングに使用されます。 JSPはサーブレットに変換され、デプロイされるとサーブレットとして機能します。 – pahan

    +0

    あなたはフリーマーカテンプレートであなたのhtmlをレンダリングすることができます。 jsp..freemarkerはちょうど鋳造エンジンであるよりこれに適していると思う – steelshark

    答えて

    0

    これは可能ですが、詳細は特定のコンテナ(この場合はappengine)に依存するかなりの数のフープを飛び越す必要があります。

    簡単な要約:

    • あなたがレンダリング後にアクセス出力ストリームをラップ、偽のHttpServletResponseを作成します。あなたは、この環境では、すべての要求がマップ内の属性、あなたは彼らが渡して、
    • 使用requestdispatcher.includeを変異させてきた場合には、その後にこれらを復元しますストアうではない
    • スペックがそれを許可していても、HttpServletResponseWrapperを使用することはできません
    • 本当の要求や、あなたの合成応答要求は、たとえばわずか約制約がにgetWriterのいずれかを呼び出すことのOutputStream

    から

  • 読み取り文字列は、あなたの要求/応答による副作用の特に注意してください属性を復元またはgetoutpu (設定状態やコンテンツ長)

    ベロシティ、ハンドルバー、フリーメーカ、その他のさまざまなJavaテンプレート言語のいずれかを使用してください。彼らはずっと簡単です。

  • 関連する問題