我们正在尝试开发网络中可用设备的拓扑图。
我有系统的详细信息,比如IP,设备名称。
我所需要做的就是将它们填充到图形上并以图形的方式显示出来,问题是我们需要在JSP中完成。
有没有其他方法,比如show using Flex,我可以传递IP/设备名,然后创建环境。顺便说一句,有多少系统不是固定的,所以它必须是动态的。
有人能帮帮忙吗?
发布于 2009-12-09 01:08:55
首先,这不一定是JSP问题。获取网络设备列表不是在JSP文件中完成的,而是在一个真正的Java类中完成的。JSP只是一种视图技术。
回到实际问题,首先可以使用java.net.NetworkInterface应用程序接口来解决这个问题。
首先创建一个Servlet,它在doGet()方法中获取JSP的List,将其放入request作用域,并将请求转发给NetworkInterface。由于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);
}将web.xml中的这个servlet映射到例如/networkinterfaces的url-pattern上。这个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访问getters。
<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>应该就是这样了。
servlet编辑要使其“可视化地呈现”,可以使用Java2DAPI生成图像,也可以使用/CSS根据在servlet中收集的信息来定位元素。
发布于 2009-12-08 23:58:36
如果您想要一个合理的最新(尽管非常慢)选项,您可以启动一系列tracert实例,获取输出并解析IP跃点?然后,您可以使用结果通过绘图API在树结构中链接/添加节点。
然而,这将是一个耗时的过程。我相信有更好的方法,但这可能会让你考虑选择。
https://stackoverflow.com/questions/1867812
复制相似问题