0

在 test.jsp 我显示以下信息

  1. 节点名称

  2. 节点位置

  3. 当前状态

为了显示上述信息,调用了动作类 TestAction.java 的 showStatus 方法,该方法通过以下代码块检索状态。

TestDTO.getInstance("NODE1").getCurrentStatus()

执行 showStatus 方法后控制将转到 test.jsp。

测试动作.java

import java.util.ArrayList;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport
{
public TestAction()
{super();
  try{}
  catch (Exception e){e.printStackTrace();}
}


public String showStatus() throws Exception 
{
    ArrayList testList=new ArrayList();
    Map session = (Map)ActionContext.getContext().getSession();
    TestDTO tdto=new TestDTO();
    tdto.setNodeName("NODE1");
    tdto.setNodeLocation("location1");
    tdto.setCurrentStatus(TestDTO.getInstance("NODE1").getCurrentStatus());
    testList.add(tdto);
    session.put("SHOWLIST",tdto);
    return "input";
}
   }

执行 showStatus 方法后控制将转到 test.jsp。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
 <%@ page import="com.opensymphony.xwork2.ActionContext"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>NODE STATUS</title>
   </head><body><center><s:form><br>
<s:if test="%{#session.SHOWLIST}">
    <table width="80%" border="1" bgcolor="#FFFFFF" bordercolor="grey" align="center">
    <tr><th><font  size="4">NODE NAME</font></th><th><font  size="4">NODE LOCATION</font></th>
            <th ><font  size="4">Status</font></th></tr>

    <s:iterator value="%{#session.SHOWLIST}" var="mylist">
        <tr><td bgcolor="#E6FAFB" align="center"><s:property value="nodeName" /></td>
            <td bgcolor="#E6FAFB" align="center"><s:property value="nodeLocation"/></td>
            <td bgcolor="#E6FAFB" align="center"><s:property value="currentStatus" /></td></tr>
    </s:iterator></table></s:if></s:form></center>
     </body></html>

其他一些应用程序正在通过以下代码块更新状态

TestDTO.getInstance("NODE1").setCurrentStatus("RUNNING");

我的问题是我想在没有任何用户干预的情况下动态更新 gui 上节点的当前状态。一旦用户单击链接,我将调用 showStatus 方法,并且能够在 gui 上显示节点的状态,但之后如果它发生变化,那么要知道当前状态用户再次访问链接,我想避免这种情况。我想要类似 1. 的 gui 行为。用户访问链接并可以看到状态。2. 几秒钟后,如果它发生变化,则应自动更新当前状态。

TestDTO.java

import java.util.HashMap;
 public class TestDTO 
  {
String nodeName;String nodeLocation;String currentStatus="STOPPED";
private static HashMap instance=new HashMap();
public String getNodeName() {
    return nodeName;
}
public void setNodeName(String nodeName) {
    this.nodeName = nodeName;
}
public String getNodeLocation() {
    return nodeLocation;
}
public void setNodeLocation(String nodeLocation) {
    this.nodeLocation = nodeLocation;
}
public String getCurrentStatus() {
    return currentStatus;
}
public void setCurrentStatus(String currentStatus) {
    this.currentStatus = currentStatus;
}

public  static synchronized TestDTO getInstance(String nodeName)
{
    TestDTO a;
    if(instance.containsKey(nodeName))
    {
        return (TestDTO) instance.get(nodeName);
    }
    else
    {
        a = new TestDTO();
        if(nodeName!=null && nodeName.length()>0)
            instance.put(nodeName,a);

        return a;
    }
     }
         }
4

0 回答 0