更改另一个 servlet 的布尔值以停止循环

问题描述 投票:0回答:1

我有一个基于布尔变量值运行的 for 循环。

public class LoopClass{
..
private boolean[] toInterrupt = new boolean[];
public boolean getValue() {
        
        return toInterrupt[0];
    }

    public void setValue(boolean newValue) {
        toInterrupt[0] = newValue;
    }
}
public method abc{

for loop{

if (getValue()){
   break:
}}}

我想通过servlet中断这个循环:

public class interruptServlet exetnds HttpServlet {

LoopClass = lp = new LoopClass();
lp.setValue(true)
}

即使执行了 servlet,boolean toInterrupt[0] 也始终保持 false。 如何通过 servlet 更改布尔值来停止循环?

java for-loop servlets interrupt boolean-logic
1个回答
0
投票

如前所述,新的

LoopClass
实例不与实际 servlet 共享任何状态。

有一种非常简单的方法可以在 servlet 之间共享状态:

ServletContext
。例如:

循环类

private static final String INTERRUPTED_ATTRIBUTE = LoopClass.class.getName() + ".interrupted";

public static void setInterrupt(ServletContext context, boolean interrupt) {
    context.setAttribute(INTERRUPTED_ATTRIBUTE, interrupt);
}

private boolean interrupted() {
    return Boolean.TRUE.equals(getServletContext().getAttribute(INTERRUPTED_ATTRIBUTE);
}

中断Servlet

LoopClass.setInterrupt(getServletContext(), true);

请注意,我将所有用于中断的实际代码保留在

LoopClass
中。这样您就可以轻松重命名属性名称,而无需更改其他代码。

© www.soinside.com 2019 - 2024. All rights reserved.