Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 不同的用户可以访问我的servlet中的相同变量_Jsp_Variables_Servlets - Fatal编程技术网

Jsp 不同的用户可以访问我的servlet中的相同变量

Jsp 不同的用户可以访问我的servlet中的相同变量,jsp,variables,servlets,Jsp,Variables,Servlets,首先,谢谢你阅读我的问题。。我是servlet编程的新手,我遇到了这个问题:在我的Web应用程序中,不同的用户可以访问相同的变量,这是我不想发生的事情。我有一种感觉,我没有很好地构建我的Web应用程序,所以我将展示它。在我的JSP页面中,当我想调用servlet来执行某些流程时,我总是这样调用它: <a href="MyServlet?check">Some Html Code</a> <a href="MyServlet?show">Some Html Co

首先,谢谢你阅读我的问题。。我是servlet编程的新手,我遇到了这个问题:在我的Web应用程序中,不同的用户可以访问相同的变量,这是我不想发生的事情。我有一种感觉,我没有很好地构建我的Web应用程序,所以我将展示它。在我的JSP页面中,当我想调用servlet来执行某些流程时,我总是这样调用它:

<a href="MyServlet?check">Some Html Code</a>
<a href="MyServlet?show">Some Html Code</a>

因此,在MyServlet中,我为jsp中的所有链接嵌套了if-else语句。正如我在开始时所说,我的应用程序中的所有用户都可以访问相同的变量。因此,如果user1在单击按钮后检查变量count1的值为10,然后另一个user2单击相同的按钮,变量的值为另一个值,例如20,那么user1的值也为20。。。我试图将变量的定义放入方法processRequest中,但是我必须首先初始化变量,因为我使用的IDE环境提醒我,在我使用这些变量的行中,变量可能尚未初始化。但是我不想初始化变量,因为每次我调用servlet时,所有的变量都是init,我失去了以前的值..我该怎么办?非常感谢

servlet引擎在整个web应用程序生命周期中创建并保持一个servlet实例,即线程不安全

这意味着,在servlet级别设置的每个属性都将在所有线程调用、用户。。。可以访问这些功能

所以您永远不应该设置Servlet属性来处理请求或会话值

另外,要通过GET发送参数,应将其作为键/值集合通知

这样,您就可以通过请求的getParameter方法访问这些参数

因此,应用于您的代码:

<a href="MyServlet?action=check">Some Html Code</a>
<a href="MyServlet?action=show">Some Html Code</a>

就是这样。

servlet引擎在整个web应用程序生命周期中创建并保持一个servlet实例,即线程不安全

这意味着,在servlet级别设置的每个属性都将在所有线程调用、用户。。。可以访问这些功能

所以您永远不应该设置Servlet属性来处理请求或会话值

另外,要通过GET发送参数,应将其作为键/值集合通知

这样,您就可以通过请求的getParameter方法访问这些参数

因此,应用于您的代码:

<a href="MyServlet?action=check">Some Html Code</a>
<a href="MyServlet?action=show">Some Html Code</a>

就是这样。

在大多数Servlet容器中,Servlet类只有一个实例,为所有用户的所有请求提供服务

如果希望每个用户都有一个变量,那么需要创建一个HTTP会话并将变量存储在那里。差不多

HttpSession session = request.getSession(true);
Integer count = (Integer) session.getAttribute("count");
if (count == null) {
    count = Integer.valueOf(10);
}
// Do stuff with count
session.setAttribute("count", count);

在大多数Servlet容器中,只有一个Servlet类实例为所有用户的所有请求提供服务

如果希望每个用户都有一个变量,那么需要创建一个HTTP会话并将变量存储在那里。差不多

HttpSession session = request.getSession(true);
Integer count = (Integer) session.getAttribute("count");
if (count == null) {
    count = Integer.valueOf(10);
}
// Do stuff with count
session.setAttribute("count", count);