【发布时间】:2016-06-28 15:31:17
【问题描述】:
我有一个简单的 JSP 页面,它的表单采用参数 val 的值
<form action="test">
Insert Value<input type="text" name="val"/>
<input type="submit"/>
</form>
接下来我有一个 servlet test.java,它接受 val 并打印它。 servlet doGet 方法如下所示-
String val=request.getParameter("val");
response.setContentType("text/html");
PrintWriter p=response.getWriter();
p.println("Value of parameter is "+val);
现在,我读到在初始化过程中只创建了一个 servlet 实例,即只创建了一个 servlet 对象,并且使用多线程处理多个请求。
现在,由于只创建了一个 servlet 实例,因此必须只创建一个变量 val 的实例,它一次只能保存一个值,那么为什么在多个请求期间每个用户都可以访问自己的 @ 值987654329@ ?val 的值不应该在多个请求之间共享并反映其相应请求的变化吗?
请帮助。谢谢。
【问题讨论】:
-
我可以看到您将 val 元素的值存储在变量中,如下行 String a=request.getParameter("val");最后,您正在打印 val 属性本身: p.println("Value of parameter is "+val);你能分享一下你在哪里分配这个变量吗?
-
你的意思是
a在你的第二个 sn-p 中被称为val吗?你知道局部变量是什么以及它们与每个线程的堆栈有什么关系吗? -
@AmanChhabra 抱歉,这是我的错误。我现在已经更正了代码。
-
@SotiriosDelimanolis 是的。我知道局部变量是什么,但不知道它们与每个线程的堆栈的关系。请解释一下。
标签: java multithreading jsp servlets