1

How to get request object from HttpSessionAttributeListener to find user's IP address?

Thanks!

Valsaraj Viswanathan
  • 1,473
  • 5
  • 28
  • 51

1 Answers1

1

You need to implement ServletRequestListner in order to find remote ip addr.

import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class MyServletRequestListener implements ServletRequestListener {

    public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
        ServletRequest servletRequest = servletRequestEvent.getServletRequest();
        System.out.println("ServletRequest destroyed. Remote IP="+servletRequest.getRemoteAddr());
    }

    public void requestInitialized(ServletRequestEvent servletRequestEvent) {
        ServletRequest servletRequest = servletRequestEvent.getServletRequest();
        System.out.println("ServletRequest initialized. Remote IP="+servletRequest.getRemoteAddr());
    }

}

Reference : http://www.journaldev.com/1945/servlet-listener-example-servletcontextlistener-httpsessionlistener-and-servletrequestlistener

Gaurav
  • 811
  • 9
  • 21
  • But I want to know whether I can get it in HttpSessionAttributeListener which I am using for specific purpose and I need to keep user IP along with that. – Valsaraj Viswanathan Mar 16 '15 at 08:24
  • If I am not able to get request here, I have to add it to session using filter and later take it from session in the HttpSessionAttributeListener. – Valsaraj Viswanathan Mar 16 '15 at 08:25
  • I don't think it is feasible using HttpSessionAttributeListener. Let me know if you findout any way to get ServletRequestEvent object there.. – Gaurav Mar 17 '15 at 09:34
  • As I said in previous comment, HttpSessionAttributeListener is required to implement our logic. In addition to this we need user's IP address. So we used filter which sets IP in session and later when control comes to HttpSessionAttributeListener, we will retrive the IP from session. Request object will be available in filter and from the filter we get what is needed from request object and sets it in session. This session will be available in HttpSessionAttributeListener. – Valsaraj Viswanathan Mar 18 '15 at 05:51