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;
}
}
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