我尝试编写调用同一个类的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,结果是 Secnd Jsp Interger是:5
我的问题
答案 0 :(得分:1)
您需要使用会话或请求参数
会话是一个&#34;位置&#34;保留用于在呼叫之间存储信息 当你从一个jsp转到另一个jsp时,web服务器会丢失所有信息而你的类丢失了(因为Servlets的无状态特性)。
您可以在此处阅读更多内容: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的方法。
在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
尽量避免变量之类的整数这样的名称,因为整数是许多语言中的保留字。