提问人:Stephan 提问时间:9/29/2023 更新时间:9/29/2023 访问量:40
从另一个 servlet 更改布尔值以停止循环
Changing boolean value from another servlet to stop the loop
问:
我有一个 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 更改布尔值以停止循环?
答:
1赞
Rob Spoor
9/29/2023
#1
如前所述,新实例不与实际的 servlet 共享任何状态。LoopClass
有一种非常简单的方法可以在 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
评论
0赞
Rob Spoor
10/6/2023
别客气。
下一个:单子的应用
评论
interruptServlet
LoopClass