¿Cómo extraer la dirección IP en Spring MVC Controller get call?

Estoy trabajando en el proyecto de controlador Spring MVC en el que estoy haciendo una llamada GET URL desde el navegador –

A continuación se muestra la url por la que estoy haciendo una llamada GET desde el navegador –

http://127.0.0.1:8080/testweb/processing?workflow=test&conf=20140324&dc=all 

A continuación se muestra el código en el que aparece la llamada después de presionar en el navegador:

 @RequestMapping(value = "processing", method = RequestMethod.GET) public @ResponseBody ProcessResponse processData(@RequestParam("workflow") final String workflow, @RequestParam("conf") final String value, @RequestParam("dc") final String dc) { System.out.println(workflow); System.out.println(value); System.out.println(dc); // some other code } 

Planteamiento del problema:-

¿Hay alguna forma de que pueda extraer la dirección IP de algún encabezado? Lo que significa que me gustaría saber de qué dirección IP, viene la llamada, es decir, quien llame a la URL anterior, necesito saber su dirección IP. ¿Es posible hacer esto?

La solucion es

 @RequestMapping(value = "processing", method = RequestMethod.GET) public @ResponseBody ProcessResponse processData(@RequestParam("workflow") final String workflow, @RequestParam("conf") final String value, @RequestParam("dc") final String dc, HttpServletRequest request) { System.out.println(workflow); System.out.println(value); System.out.println(dc); System.out.println(request.getRemoteAddr()); // some other code } 

Agregue la HttpServletRequest request a su definición de método y luego use la API Servlet

La documentación de spring aquí dice en

15.3.2.3 Argumentos del método de manejador admitido y tipos de devolución

 Handler methods that are annotated with @RequestMapping can have very flexible signatures. Most of them can be used in arbitrary order (see below for more details). Request or response objects (Servlet API). Choose any specific request or response type, for example ServletRequest or HttpServletRequest 

Llego tarde aquí, pero esto podría ayudar a alguien a buscar la respuesta. Típicamente servletRequest.getRemoteAddr() funciona.

En muchos casos, los usuarios de su aplicación pueden estar accediendo a su servidor web a través de un servidor proxy o tal vez su aplicación está detrás de un equilibrador de carga.

Por lo tanto, debe acceder al encabezado http X-Forwarded-For en tal caso para obtener la dirección IP del usuario.

por ejemplo, String ipAddress = request.getHeader("X-FORWARDED-FOR");

Espero que esto ayude.

Puede obtener la dirección IP estáticamente del RequestContextHolder como se muestra a continuación:

 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()) .getRequest(); String ip = request.getRemoteAddr();