java - 构建网络拓扑

标签 java jsp servlets networking topology

我们正在尝试开发网络中可用设备的拓扑图。

我有系统的详细信息,例如 IP、设备名称。

我需要做的就是将它们填充到图表上并以图形方式显示它,问题是我们需要在 JSP 中完成它。

还有其他方法吗,比如使用 Flex 进行显示,我可以传递 IP/设备名称并创建环境。顺便说一句,它不固定在多少个系统上,所以它必须是动态的。

有人可以帮忙吗?

最佳答案

首先,这不一定是 JSP 问题。获取网络设备列表不是在 JSP 文件中完成,而是在真正的 Java 类中完成。 JSP只是一种 View 技术。

回到实际问题,开始可以使用java.net.NetworkInterface用于此目的的 API。

首先创建一个Servlet,它在doGet()方法中获取NetworkInterfaceList,将其放入请求范围并转发对 JSP 的请求。由于 NetworkInterface 类已经符合 Javabean 规范,并具有几个有用的 getter 方法,因此我们不需要将其包装在另一个 Javabean 类中,只需重用它即可。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        List<NetworkInterface> networkInterfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
        request.setAttribute("networkInterfaces", networkInterfaces);
    } catch (SocketException e) {
        throw new ServletException("Cannot obtain networkinterfaces.", e);
    }
    request.getRequestDispatcher("/WEB-INF/networkinterfaces.jsp").forward(request, response);
}

将此 Servlet 映射到 web.xmlurl-pattern(例如 /networkinterfaces)上。该 servlet 可通过 http://example.com/context/networkinterfaces 访问。

现在创建一个 JSP 文件 networkinterfaces.jsp 并将其放置在 WEB-INF 中,以防止 http://example.com/context 直接访问/networkinterfaces.jsp(以便用户被迫使用 servlet)。使用JSTL (如果尚未完成,只需将 JAR 放入 /WEB-INF/lib 中) c:forEach标记来迭代 List 并通过 EL 访问 getter .

<c:forEach items="${networkInterfaces}" var="networkInterface">
    Name: ${networkInterface.name}<br>
    Display name: ${networkInterface.displayName}<br>
    MTU: ${networkInterface.MTU}<br>
    <c:forEach items="${networkInterface.interfaceAddresses}" var="interfaceAddress" varStatus="loop">
        IP address #${loop.index + 1}: ${interfaceAddress.address}<br>
    </c:forEach>
    <hr>
</c:forEach>

应该是这样。

编辑以使其“直观地呈现”,可以使用 Java 2D API 生成图像,也可以使用 HTML/CSS 根据 servlet 中收集的信息定位元素。

关于java - 构建网络拓扑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1867812/

相关文章:

java - 即使使用 transient 也不会出现 NotSerializedException

Java - 读取空格后的整数值

Java API 远程访问大型机

jsp - javax.faces.webapp.UIComponentClassicTagBase.setJspId 处的 java.lang.NullPointerException

java - 在 web.xml 安全约束中配置异常

java - 来自 servlet 的 response.sendRedirect 重定向到应该下载的 pdf

java - 如何使用 Eclipse Mars 在部署描述符中定义 servlet?

java - Android将CSV导入SQLite而不是第一行

java - 在 Weblogic 12c 中以编程方式包含 JSP 的 RequestDispatcher 问题

java - 提取JSP页面内容