Obter o endereço Ip de um cliente em Java utilizando HTTPServletRequest

Neste post vamos mostrar como obter o endereço ip do cliente web que está acessando sua aplicação utilizando 0 HTTPServletRequest

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 13630 Visualizações

Obtendo o IP do cliente com Servlet

Estando dentro de um Servlet em java conseguimos isso, através de um método da request: request.getRemoteAddr().

O método getRemoteAddr() retorna uma String, contendo o endereço IP do cliente.

String ipAddress = request.getRemoteAddr();  

Da forma apresentada está correto, porém quando acessado por um cliente através de um servidor de proxy, o endereço IP retornado será do servidor.

Para corrigir esta situação, pode ser melhorado o código, como segue abaixo:

//is client behind something?
String ipAddress = request.getHeader("X-FORWARDED-FOR");  
if (ipAddress == null) {  
	ipAddress = request.getRemoteAddr();  
}

Dessa forma pode ser contornado o problema, primeiro tenta obter o IP do Header, caso não consiga obter da maneira tradicional obtem o endereConseguimos isso, através de um método da request: servletRequest.getRemoteAddr().

Obtendo o IP de Controller com Spring MVC

Para obter o IP de um controller com Spring MVC é praticamente da mesma forma, apenas temos que considerar obter o HTTPServletRequest a partir de uma método do controller.

Veja o exemplo:

@RequestMapping(value = "/contato", method = RequestMethod.GET)
public String getIp(HttpServletRequest request) {
	String ipAddress = request.getHeader("X-FORWARDED-FOR");
	if (ipAddress == null) {
		ipAddress = request.getRemoteAddr();
	}

	return "page";
}

Qualquer dúvida deixe ai nós comentários! Até a próxima.


Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!