通过网页提交的信息,servlet选择执行的网络策略。在这过程中遇到一件很费解的事情。见代码:
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
One one = new One();
Two two = new Two();
Three three = new Three();
String srategy_num = "1";
srategy_num=request.getParameter("strategy");
while(srategy_num!=null){
if (srategy_num.equals("1")){
one.function();
deley(1000);
}else if(srategy_num.equals("2")){
two.function();
deley(1000);
}else if (srategy_num.equals("3")){
three.function();
deley(1000);
}else if(srategy_num.equals("stop")){
out.println("退出策略执行,请手动调控各个AP状态");
break;
}
srategy_num=request.getParameter("strategy");
}
代码这样写的话,执行结果是这样的
11111111
2222222222
11111111
2222222222
11111111
2222222222
11111111
2222222222
33333333333
11111111
2222222222
33333333333
11111111
更换策略选项后,函数是交替执行,并没有单一执行已经切换的策略。经过修改后:static String srategy_num = null;
......
srategy_num=request.getParameter("strategy");
while(srategy_num!=null){
if (srategy_num.equals("1")){
one.function();
deley(1000);
}else if(srategy_num.equals("2")){
two.function();
deley(1000);
}else if (srategy_num.equals("3")){
three.function();
deley(1000);
}else if(srategy_num.equals("stop")){
out.println("退出策略执行,请手动调控各个AP状态");
break;
}
// srategy_num=request.getParameter("strategy");
}<span style="white-space:pre"> </span>
程序执行结果正确:
<pre name="code" class="java">11111111
11111111
11111111
2222222222
2222222222
2222222222
2222222222
2222222222
33333333333
33333333333
33333333333
可以更换策略。