Pages

Thursday, 26 April 2012

Access or get HttpRequest or HttpSession out side container (in POJO)


We can use RequestContext class to share the Http Request object across all POJO classes. This is how it can be done.

Step 1: Setting the Http Request into RequestContext.
This is done by calling the static method newInstance(HttpServletRequest)on RequestContext  from your servlet.

Step 2: Fetch the Http Request from anywhere
Simply give a method call “getCurrentInstance().getRequest()” on RequestContext  in any POJO class. 
This will return Http Request object for current thread.

import java.io.Serializable;

import javax.servlet.http.HttpServletRequest;

public class RequestContext implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    private static ThreadLocal<RequestContext> instance = new ThreadLocal<RequestContext>() {

        protected RequestContext initialValue() {
            return null;
        }

    };

    private HttpServletRequest request;

    private RequestContext(HttpServletRequest request) {
        this.request = request;
    }
    /**
     * This method will returns RequestContext object
     * @return
     */
    public static RequestContext getCurrentInstance() {
        return instance.get();
    }

    public static RequestContext newInstance(HttpServletRequest request) {
        RequestContext context = new RequestContext(request);
        instance.set(context);
        return context;
    }
    /**
     * This method will removes RequestContext object from ThreadLocal for current thread
     *
     */
    public void release() {
        instance.remove();
    }

    public HttpServletRequest getRequest() {
        return request;
    }

}

No comments:

Post a Comment