1

XML/XSLT ベースの開発を長年行った後、私は Java の世界に来ましたが、次第に疑わしくなってきました。Java Web アプリケーション構築のイデオロギーにおいて本当に重要な何かが欠けているようです。

これは、xslt の考え方でレイアウトを構築する方法です。必要なすべてのデータを 1 つの XML ファイルに集約し、それを html レイアウトに変換できます。

実例となる疑似 XML ベースの言語では、次のようになります。

   <data xmlns:x="..." xmlns:xi="..."> 
      <x:get url="http://ourrestapi.net/rrrrrest" xpath="/rest/rest/rest[2]">
        <x:param name="sortBy" value="desc" />
      </x:get>
      <x:get url="http://ourrestapi.net/userdata">
        <x:guard test="authorized">
         <x:param name="login" value="john" />
        </x:guard>
      </x:get>
      <xi:include href="common.xml" />
  </data>

アイデアを説明するのに十分だと思います。それが、私がサーブレット/jsp の世界で常に実装しようとしてきたアプローチでした。驚くことではありませんが、この問題は、「jsp ページにサーブレット出力を含めるにはどうすればよいですか?」という古典的な jsp 初心者の質問に要約されると思います。

正解は (間違っていたら訂正してください) - そうすべきではありません。リクエストチェーンを使用する必要があります。私が理解している限り (もう一度、事実を混同している場合は訂正してください)、それは servletA を呼び出す必要があることを意味します。これは、適切なデータを現在の要求に入れ、それを servletB などに転送します。最後に、すべての属性が入力されたページにリダイレクトされます。

私としては、このアプローチの主な問題点を少なくとも 2 つ挙げることができます。

  • リダイレクトの順序をどこかに保つ必要があります。servletA が servletB にリダイレクトする必要があるかどうか、監視オブジェクトがジョブを実行する必要があるかどうかはわかりません。
  • リクエスト属性にすべてを文字列として保存している場合、servletA で取得したデータに関して servletB 呼び出しをパラメータ化する必要がある場合、退屈なシリアライズ/デシリアライズ作業を提供する必要があります。

だから、私の質問は -いくつかの異なるソースから JSP ページにデータを追加するための最良の方法は何ですか.

これらの質問が経験豊富な JSP 開発者にとってばかげているように聞こえる場合は、すみません。実際、Java の世界は非常に巨大で成熟しているため、真実を見つけるのは必ずしも容易ではありません。

4

2 に答える 2

0

サーブレットチェーンは、特にリダイレクトを使用してリクエストデータを入力するための非常に一般的な方法ではないと思います。これは、リクエストが空になるためです。

一般に、使用されているバックエンドフレームワーク(通常はサーブレットでもない)は、1つ以上のサービスからのデータを公開します。

リクエスト属性は文字列である必要があると思う理由は何ですか?それらはあなたが望むどんなタイプでもありえます。JSPからのデータであるリクエストパラメータは文字列になり、リクエストパラメータからドメインオブジェクトを作成するには、何らかの形式の型変換を使用する必要があります。ほとんどのフレームワークには、この機能が何らかの形で組み込まれています。

于 2011-12-19T21:25:42.267 に答える
0

これは、xslt [.....] で考えているときにレイアウトを構築する方法です。つまり、これが私がサーブレット/jsp の世界で常に実装しようとしてきたアプローチでした。

なんで?Java と XSLT は別物です。あなたのアプリケーションが XML 中心であり、XSLT がそれを処理する力を与えてくれるからですか、それともあなたの脳が XSLT の考え方に固執しているからですか?

アプリケーションのコアに XML があり、そのアプローチが正当である場合は、XML パイプラインを処理できるはずのApache Cocoonを検討してください。コメントで言及された他のフレームワークもいくつかあったので、Springの 1 つの側面を指摘します。つまり、 XSLT ビューがあります。

データを XML に変換するのは簡単ではないが、XSLT は JSP よりも使い慣れているという理由だけで、XSLT で処理できるように変換しているのであれば、それは間違っています。

複数のソースからデータを収集することに関しては、サーブレット/JSP チェーンはそれほど優れたアイデアではありません。これらは低レベルのコンポーネントであり、(お気づきのように) アプリケーション ワークフローを作成するには外部調整が必要です。通常、サーブレット/JSP は、それらの上に構築された Web フレームワークによって調整されます。

Java Web フレームワークはほとんどが MVC であるため、MVC ではモデルでデータ収集を行い (モデルにはデータに似たビジネス ロジックと調整が含まれます)、データをレンダリングするための適切なビューを選択するコントローラーに送信します。 . データが実際に XML である (または XML に簡単に変換できる) 場合、この時点で XSLT ビューが役立ちます (JSP は実際には XML を処理するように設計されていません)。

あなたが自分で言ったように、Java の世界は「本当に、本当に巨大で成熟している」ので、この問題にはさまざまな方法で取り組むことができます (つまり、猫の皮を剥ぐ方法はたくさんあります)。最終的に JSP フラグメントをマージする必要がありますか? Sitemesh 、Apache Tiles、カスタムJSP タグ、さらにはPortlets ....多くのフレームワーク、ライブラリなどを使用できます。

ただし、最終的にどのソリューションを選択する場合でも、Java の考え方を使用して実装するようにしてください。

于 2012-03-09T20:57:07.123 に答える