0

私の問題は単純ですが、これと混同しています。助けてください。

JSP で、Servlet1 から Attribute(idsList) を受け取っています。この Attribute(idsList) を別のサーブレットである Servlet2 に送信したいのですが、session.setAttribute() を使用してこれを行うことができます。問題は、JSP 自体で Servlet2 に送信するにはどうすればよいかということです。

これが私のコードですが、設定と取得に同じリクエストが使用されているため、機能していません。よろしくお願いします。

Servlet1 では:

request.setAttribute("idsList",idsList);---is null

JSPで

List<Integer> idsList =(List<Integer>)request.getAttribute("idsList");
System.out.println("size of ids list :"+idsList.size());
request.setAttribute("idsList",idsList);

Servlet2 で:

request.getAttribute("idsList");---is null
4

3 に答える 3

7

RequestDispatcher以下に示すように、リクエストを転送します。

request.setAttribute("idsList",idsList);
RequestDispatcher rd = getServletContext().getRequestDispatcher("servlet2");
rd.forward(request, response);

request.getAttribute("idsList")servlet2 で使用できます。

オブジェクトresponse.sendRedirect()の送信には使用しないでください。request

編集 :

あなたの質問の下にコメントを見つけました:

setAttributeを使用してJSPで値を取得していますか? はい

通常、JSP はVIEWパースペクティブとして使用されるため、

ビジネスロジックを含めないでください

于 2012-11-15T09:05:41.003 に答える
1

属性を設定しているリクエスト オブジェクト、リクエストは終了し、JSP を送信すると新しいリクエスト オブジェクトが作成されます。

セッションを使用して属性を設定するか、フォームに隠しフィールドを作成して、サーブレットに送信することができます。

Munesh が示唆しているように、コントロールを JSP に転送した方法を再確認する必要があります 1) SendRedirect 2) Request Dispatcher

于 2012-11-15T09:00:24.863 に答える
1

リクエストの転送に RequestDispatcher を使用する場合、リクエスト オブジェクトは同じです。

しかし、response.sendRedirect() を使用すると、新しいリクエスト オブジェクトが作成され、以前のリクエスト オブジェクトで設定された属性を取得できなくなります。

于 2012-11-15T08:58:35.763 に答える