如何在servlet java中获取客户端公共IP地址

时间:2014-06-26 04:35:20

标签: java jsp tomcat servlets servlet-filters

我正在使用带有Java Web应用程序的Tomcat服务器。 我需要客户端公共IP地址。但是我无法得到它,我使用了request.getHeader(“x-forwarded-for”) request.getRemoteAddr()方法,但我得到客户端机器本地IP地址。

2 个答案:

答案 0 :(得分:3)

您正在本地网络中运行服务器。如果它在野外request.getRemoteAddr()应该完成它的工作。

如果你真的需要在本地网络中你的公共IP在你的本地网络中可能都是相同的,因为它在路由器后面或者使用NAT的东西,它在我看来并没有多大意义。即使你想让你的公共IP使用像ipecho这样的服务:http://ipecho.net/plain

答案 1 :(得分:0)

如果您正在JSP&amp ;;中构建Web应用程序想要将客户端的公共IP地址发送到服务器,您可以使用JavaScript与JSP实现此目的。

//JavaScript dynamically created to obtain CLIENT MACHINE'S IP ADDRESS
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "http://www.telize.com/jsonip?callback=DisplayIP";
        document.getElementsByTagName("head")[0].appendChild(script);

        //below given function returns CLIENT MACHINE'S IP ADDRESS to the text box
        function DisplayIP(response)
        {
            document.getElementById("clientip").value = response.ip;
        }

IP地址将存储在clientip&将它传递到您发布表单和服务器列表的服务器列表将它传递给servlet。