Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 获取客户端计算机域名/MAC_Jsf 2 - Fatal编程技术网

Jsf 2 获取客户端计算机域名/MAC

Jsf 2 获取客户端计算机域名/MAC,jsf-2,Jsf 2,我试图在JSF应用程序中获取客户机信息。但我只能得到IP地址 我试过这个: HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); System.err.println(request.getRemoteAddr()); System.err.println(request.getRemoteHost()); 问题

我试图在JSF应用程序中获取客户机信息。但我只能得到IP地址

我试过这个:

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
System.err.println(request.getRemoteAddr());
System.err.println(request.getRemoteHost());
问题是
request.getRemoteAddr()和
request.getRemoteHost()
都获取IP地址

有没有办法获取客户端的域名或MAC地址

更新(解决方案):

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) ipAddress = request.getRemoteAddr();  // IP

InetAddress addr = InetAddress.getByName(ipAddress);  // DOMAIN NAME from IP
String host = addr.getHostName();

如果你想要域名,你必须自己为IP做反向查找。如果你想要MAC地址,你就必须求助于魔法


您打算如何处理这些数据,为什么IP地址不够?

请参阅。如果你想要一个名字,你必须自己做一些反向查找。在JavaEEWeb应用程序中,Java代码运行在webserver上,而不是webbrowser上。若要在webbrowser上运行Java代码,需要在HTML页面中嵌入Java小程序或webstart应用程序。反过来,HTML页面不一定需要由JavaEE/JSF提供/生成。