最終更新日:190422原本2019-03-03 

java – サーブレットからパラメータを送信する方法

サーブレットからパラメータを送信するためにRequestDispatcherを使用しようとしています。

これが私のサーブレットコードです。

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

 String station = request.getParameter("station");
 String insDate = request.getParameter("insDate");

 //test line
 String test = "/response2.jsp?myStation=5";

 RequestDispatcher rd;
 if (station.isEmpty()) {
     rd = getServletContext().getRequestDispatcher("/response1.jsp");

 } else {
     rd = getServletContext().getRequestDispatcher(test);
 }

 rd.forward(request, response);

} 

ここに私のjspがあります、値を読むためのコードで – しかしそれはnullを示します。

    <h1>response 2</h1>
    <p>
        <%=request.getAttribute("myStation")  %>
    </p>

何か提案をありがとう。
より環境に優しい

ベストアンサー
サーブレットでは、次のようにrequest.setAttributeを使用してください。

request.setAttribute("myStation", value);

valueは、後で読みたいオブジェクトです。

そして、request.getAttributeを別のサーブレット/ JSPに後で抽出します。

String value = (String)request.getAttribute("myStation")

または

<%= request.getAttribute("myStation")>

get / setAttributeの使用範囲は本質的に制限されていることに注意してください – 属性はリクエスト間でリセットされます。もっと長く値を保存したい場合は、セッションまたはアプリケーションのコンテキストを使用するか、データベースを使用してください。

クライアントが属性を設定しないという点で、属性はパラメータとは異なります。属性は、開発者があるサーブレット/ JSPから別のサーブレット/ JSPに状態を転送するために多かれ少なかれ使用します。そのため、要求からデータを抽出し、必要に応じてsetAttributeを使用して属性を設定し、RequestDispatcherを使用して要求を内部的に転送し、getAttributeを使用して属性を抽出するにはgetParameter(setParameterはありません)を使用します。

転載記事の出典を記入してください: java – サーブレットからパラメータを送信する方法 - コードログ