Jsp 不同的用户可以访问我的servlet中的相同变量
首先,谢谢你阅读我的问题。。我是servlet编程的新手,我遇到了这个问题:在我的Web应用程序中,不同的用户可以访问相同的变量,这是我不想发生的事情。我有一种感觉,我没有很好地构建我的Web应用程序,所以我将展示它。在我的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
<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);