0

着信 HttpRequest を Java で記述されたコントローラー サーブレットにルーティングし、サーブレットが終了したら、.jsp ファイルを使用してビューをレンダリングすることにより、Web アプリを構築するモデル/ビュー/コントローラー スタイルを使用しています。(これは非常にRailsスタイルです。)

これを行うには、Controller Servlet の最後に次のような行が必要です。

getServletContext().getRequestDispatcher("/Bar.jsp").include(req, res);

主な問題は、呼び出している関数であるかのように Bar.jsp に引数を渡したいことです。これが不可能な場合、Bar.jsp がそれ自体をレンダリングするために必要なすべてのものを見つけるために、Bar.jsp の先頭に多数の Java を配置することになりますが、これはかなり見苦しいことです。

他の Web フレームワークではこれを行う方法が提供されているため、サーブレットで行う方法が必要であると思われます。特に、Java Google App Engine で作業しています。

4

3 に答える 3

1

このページでは、パラメーターと属性の違いについても説明しています

リクエスト属性 (より正確には「リクエスト スコープの変数」と呼ばれます) は、 setAttribute() メソッドの呼び出しを介してリクエスト オブジェクトに明示的に配置される任意の型のオブジェクトです。これらは、getAttribute() メソッドを介して Java コードで取得され、式言語の参照を含む JSP ページで取得されます。サーバー側のリクエスト スコープに追加されたオブジェクトを取得するには、常に request.getAttribute() を使用します。つまり、request.setAttribute() を使用します。

属性はオブジェクトであり、リクエスト、セッション、またはコンテキスト オブジェクトに配置できます。これらは文字列だけでなく、任意のオブジェクトにすることができるため、はるかに柔軟です。プログラムで属性を設定し、後で取得することもできます。これは、MVC パターンで非常に役立ちます。たとえば、ある jsp/サーブレットでデータベースから値を取得し、別の jsp で表示したいとします。サーブレットで準備ができたデータで満たされた結果セットができたら、setAttribute メソッドを使用して、この結果セットを別の jsp に送信し、getAttribute メソッドを使用して抽出できます。

サーブレットがリクエストを受け取ると、追加の属性を追加し、そのリクエストを処理のために別のサーブレットに転送できます。属性により、サーブレットは相互に通信できます。

于 2012-04-14T00:18:22.083 に答える
1

あなたが使用することができます

request.setAttribute("attributeName",attributeValue);

他のjspファイルでは、getAttribute()このような方法を使用できます

request.getAttributeNames();
request.getAttribute("attributeName");
于 2012-04-13T08:04:34.020 に答える