まず、私の質問を読んでくれてありがとう.. 私はサーブレットのプログラミングの初心者で、この問題を思いつきました: 私の webApplication では、異なるユーザーが同じ変数にアクセスできます。My webApplication をうまく構築できていない気がするので、紹介します。私のJSPページでは、サーブレットを呼び出して何らかのプロセスを実行したい場合、常に次の方法で呼び出します。
<a href="MyServlet?check">Some Html Code</a>
<a href="MyServlet?show">Some Html Code</a>
私がこの方法を選んだのは、JSP からサーブレットにパラメーターを渡したかったからです (この場合は「チェック」、サーブレットに「やあ、ユーザーがチェック ボタンをクリックしました」と通知するため) - (この方法を使用できますか別の方法?)とにかく!だから、MyServlet で私はこれを書いています:
MyServlet
import javax.servlet.http.HttpServlet
//i import and many others..
public class MyServlet extends HttpServlet{
private int count1; //these are the variables that see all the users
private String Title;
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)throws ServletException, IOException {
if(request.getQueryString().equals("check")){
//do some stuff and then put a value (its not random) in the count1
count1 = 10; //lets say this value its 10 for a user1.
request.setAttribute("count", count1);
RequestDispatcher disp = getServletContext().getRequestDispatcher("/page1.jsp");
disp.forward(request, response);
}
else if (request.getQueryString().equals("show")){
//do some stuff and then put a value in the count1
title = "title"; //same here
request.setAttribute("title", title);
RequestDispatcher disp = getServletContext().getRequestDispatcher("/page2.jsp");
disp.forward(request, response);
}
}
そのため、MyServlet では、jsp 内のすべてのリンクに対して if-else ステートメントをネストしました。冒頭で述べたように、アプリケーション内のすべてのユーザーは同じ変数にアクセスできます。したがって、user1 がボタンをクリックした後に変数 count1 が値 10 を取得し、別の user2 が同じボタンをクリックして変数が別の値 (たとえば 20) を取得した場合、user1 の値も 20 になります...
IメソッドprocessRequest内に変数の定義を入れようとしましたが、最初に変数を初期化する必要があります。使用するIDE環境として、これらの変数を使用する行で変数が初期化されていない可能性があることを警告します.しかし、私は変数を初期化したくありません。なぜなら、サーブレットを呼び出すたびにすべての変数が初期化され、以前の値が失われるからです..
私は何をすべきか?どうもありがとう!