我尝试编写 2 个调用同一类的 jsp,但我做不到。看起来我为每个 jsp 创建了一个新对象。
<!--First jsp-->
<body>
<%
int i =9;
TestClass objectjsp = new TestClass();
objectjsp.Plusinteger(i);
out.print("First jsp Interger is :"+objectjsp.ReturnInterger());
%>
<br>
<a href="Second.jsp?a=y">GO Next JSP</a>
</body>
<!--Second jsp-->
<body>
<%
int j =5;
TestClass objectjsp = new TestClass();
objectjsp.Plusinteger(j);
out.print("Secnd Jsp Interger is :"+objectjsp.ReturnInterger());
objectjsp.PrintInterger();
%>
<!-- -->
</body>
我用过的类
package ScruitPackage;
public class TestClass {
int integer =0;
public void Plusinteger(int input)
{
integer = integer+input;
}
public int ReturnInterger()
{
return integer;
}
public void PrintInterger()
{
System.out.print(integer);
}
}
所以我运行 First jsp 后的结果是 第一个 jsp Interger 是:9 然后我通过 ahref(GO Next JSP) 进入第二个 jsp,结果是 第二个 Jsp Interger 是:5
我的问题
- 如何使结果为 14(9+5) 我知道 TestClass objectjsp = new TestClass(); in Second jsp错误,但我不知道如何调用老类。
- 如何在 PrintInterger() 中打印文本(这可能吗?)
最佳答案
您需要使用 session 或请求参数
使用 session
session 是为在调用之间存储信息而保留的“位置”。
当您从一个 jsp 转到另一个 jsp 时,Web 服务器会丢失所有信息并且您的类也会丢失(因为 Servlet 的无状态性质)。
您可以在此处阅读更多信息:https://www.javatpoint.com/http-session-in-session-tracking
在 First.jsp 中包含以下代码:
request.getSession().setAttribute("firstValue", i);
在 Second.jsp 中包含这段代码:
int i = (Integer)request.getSession().getAttribute("firstValue");
objectjsp.Plusinteger(i);
在 Second.jsp 中,现在您将拥有 objectjsp.Plusinteger(i); 和 objectjsp.Plusinteger(j);
我做了一个存储整数 i 的示例,但在另一种情况下,您可以存储 TestClass 实例,例如:
request.getSession().setAttribute("testClass", objectjsp);
和
objectjsp = (TestClass)request.getSession().getAttribute("testClass");
使用请求参数:
请求参数是一种在调用jsp时向jsp传递信息的方式。
在 First.jsp 中,仅更改调用 Second.jsp 的行
<!--First jsp-->
<body>
<%
int i =9;
TestClass objectjsp = new TestClass();
objectjsp.Plusinteger(i);
out.print("First jsp Interger is :"+objectjsp.ReturnInterger());
%>
<br>
<a href="second.jsp?i=<%=i%>">GO Next JSP</a>
</body>
在Second.jsp中只添加一行获取请求参数,然后使用Plusinteger方法。
<!--Second jsp-->
<body>
<%
int j =5;
int i = Integer.valueOf(request.getParameter("i"));
TestClass objectjsp = new TestClass();
objectjsp.Plusinteger(i);
objectjsp.Plusinteger(j);
out.print("Secnd Jsp Interger is :"+objectjsp.ReturnInterger());
objectjsp.PrintInterger();
%>
<!-- -->
</body>
观察
尽量使用Java约定。
http://www.oracle.com/technetwork/java/codeconventions-135099.html
变量尽量避免使用 integer 这样的名称,因为 integer 在很多语言中都是保留字。
关于java - 2 JSP 使用相同的类(旧类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48844254/