Difference between request.getRequestDispatcher and servletContext.getRequestDispatcher

First we will look at the differences between the two.
request.getRequestDispatcher(String path)
path need not begin with ‘/’. If path starts with ‘/’ then this also works like
servletContext.getRequestDispatcher(String path) 

This can accept path relative to request path or relative to context root path.

Ex: 1
In request, http://localhost:8080/RequestDispatcherExampleApp/s1/page1.jsp
Context root is /RequestDispatcherExampleApp
Relative path to request is /RequestDispatcherExampleApp/s1/

So, request.getRequestDispatcher(“page2.jsp”) while processing the request for
http://localhost:8080/RequestDispatcherExampleApp/s1/page1.jsp will look for page2.jsp under directory /RequestDispatcherExampleApp/s1/page2.jsp

Ex: 2
In request, http://localhost:8080/RequestDispatcherExampleApp/s1/s2/page1.jsp
Context root is /RequestDispatcherExampleApp
Relative path to request is /RequestDispatcherExampleApp/s1/s2/

So, request.getRequestDispatcher(“../page2.jsp”) while processing the request for
http://localhost:8080/RequestDispatcherExampleApp/s1/page1.jsp will look for page2.jsp under directory /RequestDispatcherExampleApp/s1/page2.jsp

From above example it is clear that request.getRequestDispatcher can process resource to the relative path of request URL.

Ex: 3
In request, http://localhost:8080/RequestDispatcherExampleApp/s1/s2/page1.jsp
Context root is /RequestDispatcherExampleApp
Relative path to request is /RequestDispatcherExampleApp/s1/s2/

So, request.getRequestDispatcher(“/page2.jsp”) while processing the request for
http://localhost:8080/RequestDispatcherExampleApp/s1/page1.jsp will look for page2.jsp under                                            directory /RequestDispatcherExampleApp/

From above example it is clear that request.getRequestDispatcher can process resource to the relative path of context root of application.

2. servletContext.getRequestDispatcher(String path)
path should begin with ‘/’.

If the path does not start with ‘/’, you will get following exception
java.lang.IllegalArgumentException: Path does not start with a “/” character.
This can accept path relative to context root of the application.

 

In request,

http://localhost:8080/RequestDispatcherExampleApp/s2/page1.jsp

Context root is /RequestDispatcherExampleApp
Relative path to context root is /RequestDispatcherExampleApp/

So, servletContext.getRequestDispatcher(“/page2.jsp”) while processing the request for  http://localhost:8080/RequestDispatcherExampleApp/s2/page1.jsp will look for page2.jsp under directory /RequestDispatcherExampleApp/page2.jsp

 

 

for Reference Please look into this:

http://java-fries.com/j2ee/10-difference-between-request-getrequestdispatcher-and-context-getrequestdispatcher

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s