java 怎么获取请求方ip地址

java 怎么获取请求方ip地址,第1张

public

static

void

main(string[]

args)

{

try

{

//

获取计算机名

string

name

=

inetaddressgetlocalhost()gethostname();

//

获取ip地址

string

ip

=

inetaddressgetlocalhost()gethostaddress();

systemoutprintln("计算机名:"+name);

systemoutprintln("ip地址:"+ip);

}

catch

(unknownhostexception

e)

{

systemoutprintln("异常:"

+

e);

eprintstacktrace();

}

}

是否可以解决您的问题?

requestgetRemoteAddr()如何获取用户真实的IP地址

要获得用户真实的IP地址需要借助请求报头中的x-forwarded-for变量。

requestgetHeader("x-forwarded-for");

完整实例如下

<%@ page contentType="text/html; charset=gb2312" %>

<%@ page import="javautil"%>

<%

String realIP = requestgetHeader("x-forwarded-for");

String ip = requestgetRemoteAddr();

Enumeration enum = requestgetHeaderNames();

while(enumhasMoreElements())

{

  String name = (String)enumnextElement();

  String value = requestgetHeader(name);

  outwrite(name + "=" + value + "<br$amp;>quot;$);

}

%>

你的IP地址是:<%=realIP%>

转载,仅供参考。

你不是web项目那么request是什么了?

你可以定义一个接口,接口中有setRequest方法,和getRemoteAddr方法

然后在你的主Servlet中将Request设置进去,

再通过getRemoteAddr方法取得IP

实现类中定义一个Request属性,通过setRequest方法设置,

getRemoteAddr方法调用requestgetRemoteAddr方法。

还是没有搞明白你到底要干什么为什么没有request~web项目到处都是request啊~

当我们访问indexjsp/时,其实并不是我们浏览器真正访问到了服务器上的indexjsp 文件,而是先由代理服务器去访问indexjsp。

代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问indexjsp的。

所以indexjsp中通过 requestgetRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

于是可得出获得客户端真实IP地址 的方法:

public class Myfilter implements Filter { 

public void destroy() {

}

private >

private >

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

request = (>

response = (>

Systemoutprintln(requestgetRequestURI());

Systemoutprintln("===ff===="+requestgetQueryString());

if("1"equals(requestgetRequestURI()substring(("/"+requestgetContextPath())length()))){

requestgetRequestDispatcher("/myjsp")forward(request, response);

return;

}

arg2doFilter(request, arg1);

}

public void init(FilterConfig arg0) throws ServletException {

}

}

楼上的方法是不合理的。第一,如果用户使用代理,是无法获得真实Ip的0;第二,IF语句不能保证禁止IP,而且很多网站并不需要登录的。给楼主些方法,可供参考。

1。 获取用户IP

public String getRemortIP(>

private String getIpAddr() {

String ipAddress = null;

//ipAddress = thisgetRequest()getRemoteAddr();

ipAddress = thisgetRequest()getHeader("x-forwarded-for");

if(ipAddress == null || ipAddresslength() == 0 || "unknown"equalsIgnoreCase(ipAddress)) {

ipAddress = thisgetRequest()getHeader("Proxy-Client-IP");

}

if(ipAddress == null || ipAddresslength() == 0 || "unknown"equalsIgnoreCase(ipAddress)) {

ipAddress = thisgetRequest()getHeader("WL-Proxy-Client-IP");

}

if(ipAddress == null || ipAddresslength() == 0 || "unknown"equalsIgnoreCase(ipAddress)) {

ipAddress = thisgetRequest()getRemoteAddr();

if(ipAddressequals("127001")){

//根据网卡取本机配置的IP

InetAddress inet=null;

try {

inet = InetAddressgetLocalHost();

} catch (UnknownHostException e) {

eprintStackTrace();

}

ipAddress= inetgetHostAddress();

}

}

//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割

if(ipAddress!=null && ipAddresslength()>15){ //""length() = 15

if(ipAddressindexOf(",")>0){

ipAddress = ipAddresssubstring(0,ipAddressindexOf(","));

}

}

return ipAddress;

}

我才用的一个项目,requestgetRemoteAddr();

不是很准确

<%=

requestgetservername()%>

服务器的域名

<%=

javanetinetaddressgetlocalhost()gethostaddress()

%>

服务器的ip地址

<%=requestgetserverport()%>

服务器正在运行的端口

java获取本机的外网ip示例:

import javaioIOException;

import javaioInputStream;

import javanet>

以上就是关于java 怎么获取请求方ip地址全部的内容,包括:java 怎么获取请求方ip地址、request.getRemoteAddr怎么获取用户真实的IP地址、在一个java接口中获取请求客户端的IP地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9568079.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存