java - jspInit 将所有浏览器请求的对象保留在内存中

标签 java jsp

我的jsp Web应用程序从html输入中获取输入,并通过按下按钮将其保存在内存中,所以实际上我将值推送到内存中并保留它直到按下重置为止。 当我转到另一台机器并运行该应用程序时,问题就出现了,我得到了与前一个用户输入的相同的值。

例如:

main.jsp 有一些输入字段,当我单击“添加”时,html 输入中的这些值将存储在内存对象中,并显示在 html 输入中,直到内存未被清除。

现在,我从另一台机器访问此应用程序并转到 jsp 文件,在那里我得到了具有相同值的预填充 html 输入框。

我知道这是由我在 jspInit() 函数内初始化类对象引起的。

我制作了示例项目来向您展示问题。

Test.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
        <%@ page import="test.TestClass" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"     "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<%!
TestClass objTest;
public void jspInit()
{
    objTest = new TestClass();
 }
%>
<form action="Test.jsp">
value1: <input type="text" name="txtValue1" value="    <%out.print(objTest.value1);%>"/>
value2: <input type="text" name="txtValue2" value="    <%out.print(objTest.value2);%>"/>
<input type="submit" name="btnSubmit"/>
</form>

<%
if(request.getParameter("btnSubmit")!=null)
{
    String str1 = request.getParameter("txtValue1");
    String str2 = request.getParameter("txtValue2");
    objTest.add(str1, str2);
}
%>
</body>
</html>

TestClass.java

package test;

public class TestClass {

    public String value1 ="no value";
    public String value2 ="no value";
    public void add(String str1, String str2)
    {
        value1 = str1;
        value2 = str2;
    }
}

为什么我每次从不同的机器进入时都没有得到一个新页面。jspInit()函数使对象静态并保留其所有值。

我需要这个 jspInit() 函数,因为我想保留该特定用户的值,这样当他刷新页面时,表单值就不会消失。

我怎样才能使 jspInit() 只保留特定浏览器的值 要求。还有我可以使用的其他方法。

此外,实际应用程序非常大,因此如果可能,请为此方法提出一些解决方法。

P.S:jsp新手。

P.S:我知道使用 scriptlet 不是一个好方法。

提前致谢。

最佳答案

jspInit 方法对于 Servlet 类的所有线程都是通用的。它的用途基本上是获取公共(public)资源的数据库连接和读写器对象。您的要求是针对服务器的每个单独的客户端(即不同的机器),为此您必须使用 session 对象来存储参数或使用 Java Bean 对象。

您可以引用this为了良好的知识。

关于java - jspInit 将所有浏览器请求的对象保留在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29484744/

相关文章:

Java Integer.MAX_VALUE 与 Kotlin Int.MAX_VALUE

java - 如何在 Eclipse 中获取 Javafx 9?

java - 使用树集中的元素初始化链表

java - ArrayList 迭代相同的数据

java - 根据角色限制用户

java - 在java中,使用正则表达式在xml中查找地址= "..."

java - 使用 boolean equals() 方法使同一类的两个对象相等

java - 通过Servlet或JSP将JasperReport的报告导出为pdf

java - JSP 何时使用空的 scriptlet 标签

jsp - 如何直接在 map 的值上使用 jSTL foreach?