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

标签 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,结果是 第二个 Jsp Interger 是:5

我的问题

  1. 如何使结果为 14(9+5) 我知道 TestClass objectjsp = new TestClass(); in Second jsp错误,但我不知道如何调用老类。
  2. 如何在 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/

相关文章:

java - 如何在 servlet 中使用来自 JSP 文件的 Vector?

JavaFX:仅在 Linux 上找不到或加载主类

java - Android camera2.params.face 矩形放置在 Canvas 上

java - 如何使用 Scanner 类中的 hasNext()?

eclipse - Eclipse Juno 的 JSP 编辑器

jsp - 在带有 Spring 的 JSP 中使用什么进行本地化?

java - 使用 JavaFX MediaPlayer 从 MP3 读取 ID3v2 标签

java - java中具有逻辑的setter

java - 如何从请求中获取excel文件?

JSTL标签中的Spring消息