gpt4 book ai didi

java - 构建网络拓扑

转载 作者:行者123 更新时间:2023-12-02 08:35:44 25 4
gpt4 key购买 nike

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

我有系统的详细信息,例如 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com