2 JSP使用相同的类(旧类)

时间:2018-02-17 17:57:46

标签: java jsp

我尝试编写调用同一个类的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

我的问题

  1. 如何使结果为14(9 + 5) 我知道TestClass objectjsp = new TestClass();在第二个jsp是错误的,但我不知道如何打电话给老班。
  2. 如何在PrintInterger()中打印文本(是否可以?)

1 个答案:

答案 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
尽量避免变量之类的整数这样的名称,因为整数是许多语言中的保留字。