首先,感谢您阅读我的问题。我是 servlet 编程的新手,我遇到了这个问题:在我的 webApplication 中,不同的用户可以访问相同的变量,这是我不想发生的事情。我有一种感觉,我没有很好地构建我的 webApplication,所以我将介绍它。在我的 JSP 页面中,当我想调用 servlet 进行某些处理时,我总是用这种方式调用它:
<a href="MyServlet?check">Some Html Code</a>
<a href="MyServlet?show">Some Html Code</a>
我选择这种方式是因为我想从 jsp 向 servlet 传递一个参数(在这种情况下是“检查”,以便通知 servlet“嘿,你,用户单击了按钮检查”) - (我可以这样做吗?另一种方式?)无论如何!所以,在 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...
我试图将变量的定义放在方法 processRequest 中,但是我必须首先初始化变量,因为我使用的 IDE 环境提醒我,在我使用这些变量的行中,变量可能尚未初始化。但是我不想初始化变量,因为每次我调用 servlet 时,所有变量都会初始化并且我会丢失之前的值。
我应该怎么办?多谢!