The code works if I use RequestDispatcher view = getServletContext().getRequestDispatcher("/result.jsp");
What am I missing ? I would really appreciate somebody's help ? Thanks.
SCJP,SCWCD(1.4)
Adeel Ansari
Ranch Hand
Joined: Aug 15, 2004
Posts: 2874
posted
0
If your code is working other way, just use that. though I tried both. i am not having any compiler error in either. [ September 22, 2004: Message edited by: adeel ansari ]
Ramaswamy Srinivasan
Ranch Hand
Joined: Aug 31, 2004
Posts: 295
posted
0
Hi...
I was getting this error too, when i was working with this. I also heared from someone that it's better to use
This will hold good when u are sending the request parameters alone to the JSP.
Any way, i came across a difference in using both the methods
That is :
The servletRequest's getRequestDispatcher() can take a relative path while ServletContext's getRequestDispatcher() can not(can only take relative to the current context's root).
For example with ServletContext both -> request.getRequestDispatcher("./jsp/jsppage.jsp") - evaluated relative to the path of the request -> request.getRequestDispatcher("/jsp/jsppage.jsp") - evaluated relative to the root are all valid
with ServletContext only -> context.getRequestDispatcher("/jsp/jsppage.jsp") is valid but not context.getRequestDispatcher("./jsp/jsppage.jsp"). that is it can not evaluate a path other than context root.
But i would like to know the pros and cons of the methods....
Cheers, Swamy
Ritu varada
Ranch Hand
Joined: Sep 08, 2004
Posts: 117
posted
0
Thanks, people..For now , I will use the ServletContext but hopefully some day I will know why request.getRequestDispacther did not work for me. Thanks for replying!
Adeel Ansari
Ranch Hand
Joined: Aug 15, 2004
Posts: 2874
posted
0
the error, you are gettin, looks like a compile time error. It doesn't mean that it didn't work, but its like why are you getting compile time error. wiered. [ September 23, 2004: Message edited by: adeel ansari ]
Chandra Sekhar
Ranch Hand
Joined: Sep 26, 2003
Posts: 90
posted
0
Hi,
The difference between the getRequestDispatcher()method of ServletContext and that of ServletRequest is that you can pass a relative path to the getRequestDispatcher() method of ServletRequest but not to the getRequestDispatcher() method of ServletContext.
Like for instance request.getRequestDispatcher("../html/login.html") is valid,and the getRequestDispatcher() method of ServletRequest will evaluatethe path relative to the path of the request.
For the getRequestDispatcher() method of ServletContext, the path parameter cannot be relative and must start with /.
Why like this... because ServletRequest has a current request path to evaluate the relative path while ServletContext does not.
thanx chandra. but we know this. the problem is, why getting compile time error. should not be like that
Chandra Sekhar
Ranch Hand
Joined: Sep 26, 2003
Posts: 90
posted
0
Hi
It compiled for me..with out giving any error...
i have set $TOMCAT_HOME/common/lib/servlet-api.jar in my classpath. TOMCAT VERSION is jakarta-tomcat-5.0.18
If j2ee.jar is also in the classpath...it may give compile error.
Chandrasekhar S SCJP [ September 23, 2004: Message edited by: Chandra Sekhar ]
Sheldon Fernandes
Ranch Hand
Joined: Aug 18, 2004
Posts: 157
posted
0
The getRequestDispatcher(String path) method in ServletRequest was introduced in Java Servlet API 2.2
You might be compiling your servlet using an older version of the Servlet API.
Sheldon Fernandes
Ritu varada
Ranch Hand
Joined: Sep 08, 2004
Posts: 117
posted
0
Thanks, Chandra. I removed a servlet.jar in the classpath and had only the servlet-api.jar in there and it worked! Guess, somethings were clashing! Thank you everybody for your help!