0
私はサーバー側のプログラミングには新しく、単純なサーブレット/ JSPプログラムを作成しています。 サーブレット部分は、URLからパラメータを取得してマップに保存する必要があり、jsp部分はマップを読み込んでその内容をHTMLテーブルに表示する必要があります。ここでサーブレットから動的なマップを使用してJSPを呼び出す
はサーブレットです:
@WebServlet("/RestaurantServlet86105511")
public class RestaurantServlet86105511 extends HttpServlet {
private static HashMap<String, String> map = new HashMap<>();
private String name;
private String price;
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
name = request.getParameter("name");
price = request.getParameter("price");
map.remove(name);
map.put(name, price);
RequestDispatcher rd = request
.getRequestDispatcher("/WEB-INF/RestaurantJSP86105511.jsp");
rd.forward(request, response);
}
public static HashMap<String, String> getMap() {
return map;
}
}
私は私が間違ってやっているのか分からないが、毎回のrd.forwardが呼び出された後、マップの内容があまりにも削除され、JSPが最後に印刷します私がURLに入力したパラメータ。 サーブレットからjspを呼び出す他の方法はありますか?または私はちょうど間違ったやり方ですか?あなたは何をすべき
「doGet()」が呼び出されるたびに、このキー 'name'に関連付けられた前の値を置き換える' name'をマップに追加しています。あなたの場合、 'remove()'は再定義されています。 – Zaki
サーブレットに本質的にスレッドセーフではないので、インスタンス変数(または静的変数)を持つことは悪い習慣です。あなたのアプリを構造化するためのMVCを学んでください。 – Zaki