1

jspで以下のようにrequest.getAttributeを設定しています

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%


        request.setAttribute("name", "anita");


        %>
        <%=request.getAttribute("name") %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <form method="POST" action="QnAAuthServlet">

    <input type="hidden" name="orgName" value="SENDFORBOB"></input>
    <input type="submit"></input>
    </form>
    </body>
    </html>

JSPでも印刷できます

以下のように、サーブレットで request.getAttribute を試みています

    public class QnAAuthServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;

        public QnAAuthServlet() {
            super();

        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        enter code here
            String name = (String) request.getAttribute("name");
            System.out.println("name = " + name);

        }

    }

しかし、私のサーブレットでは name は常に null です。誰かがこれを解決するのを手伝ってください。

4

3 に答える 3

1

これは、サーブレットに新しいリクエストを送信しているためです。リクエスト パラメーターは、リクエストが完了するまで存続し、レスポンスが提供されたときには使用できません。

名前を渡したい場合は、次のようにする必要があります

<input type="hidden" name="name" value="someValue">

パラメータを複数のリクエストで使用できるようにする場合HttpSessionは、そのために使用できます。

session.setAttribute("name","prasad");
于 2013-07-18T14:13:05.487 に答える
1

リクエストは... HTTP リクエストを表します。サーバーがリクエストに対するレスポンスの生成を完了するとすぐに、リクエストは存在しなくなります。サーブレットが実行されると、新しい HttpServletRequest オブジェクトが取得されます。もちろん、以前のリクエストで JSP が保存した属性は長い間忘れられています。

HTML ページ (JSP によって生成された) からサーブレットにデータを渡す場合は、要求パラメーターとして渡すか、フォーム入力として送信する必要があります。

于 2013-07-18T14:11:51.220 に答える
0

私の理解が正しければ、あなたのサーブレットは新しいリクエストを受け取っています。リクエストでサーブレットに名前を渡す必要がある場合は、「name」という名前の入力要素を作成する必要があります。現在のページをレンダリングしているリクエストに投稿されるリクエストを設定することはできません。

于 2013-07-18T14:10:26.950 に答える