You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Jason Johnston <Ja...@epa.state.il.us> on 2002/12/17 17:01:54 UTC

Re: JSP to Servlet to JSP pathing issue. Relative PathingPlease help.

Thanks Mike, that's probably the solution I'm going to go with.  I agree
that I don't want absolute URL's.  Though I feel like there should be a
way to do what I'm wanting to do, I'm just not finding it.  I had seen
another suggestion on the forums about mapping the servlet to the same
path as the JSP, which sounded like it might work.  However, I'm running
into problems with that too.
 
I haven't done much mapping so this is a good exercise for me, but I
will probably just end with the solution you have suggested.
 
I have the following in my web.xml file
 
    <servlet>
        <servlet-name>dolookup</servlet-name>
        <servlet-class>test.dolookup</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>dolookup</servlet-name>
    <url-pattern>/teststuff/dolookup*</url-pattern>
    </servlet-mapping>
 
In my mind, this should make both the lookup.jsp and the dolookup
servlet available from the same path, specifically
 
http://localhost:8080/teststuff/
 
If that works, then I can use a simple relative path from the form to
the servlet and the client path won't be changed.  However, I'm not
finding this in practice.  A call to
http://localhost:8080/teststuff/dolookup?etc....   is returning a not
found error.  I'm currently looking up all I can on the forums and
tutorials on mapping, but every time I think I've figured it out � it
doesn't work.  But this is the fun part, I guess.
 
Thanks for all you help.
 


>>> mike@ward-murphy.co.uk 12/17/02 09:43AM >>>
True (and I missed that that was the whole point of your exercise) but
redirecting is the (only) way to get the browser's URL to change.

If you think about it, you're basically saying that you want two
different
URLs (one to the servlet and one to the jsp), when displayed in the
browser,
to mean the same thing - which just isn't going to work.

Two possible solutions:
a) The ugly but quicker one:   code the absolute URL in the jsp's
form's
action attribute.
b) The elegant one:  Don't link to the jsp page at all.  Always link to
the
servlet, then make the servlet check for the existence of parameters. 
If
your parameters exist then it was a form submission, so do what ever
you do
now and then forward() to the jsp.  (This leaves the URL the same in
the
browser and doesn't lose the request-info.)  If parameters don't exist,
then
just forward() to the jsp page (without doing any processing).  It'll
presumably behave like it does now when you request it directly. 
However,
the browser's URL will still have the servlet's URL - and you can code
all
the paths relative to that.

Mike.

----- Original Message -----
From: "Jason Johnston" <Ja...@epa.state.il.us>
To: <to...@jakarta.apache.org>
Sent: Tuesday, December 17, 2002 3:25 PM
Subject: Re: JSP to Servlet to JSP pathing issue. Relative
PathingPlease
help.


The redirecting doesn't seem to work.  That tells the browser client
to
initiate a new request and all the
information that I placed in the request object is gone, which
undermines the purpose of the form.

The forums have a lot on my problem, just no answers that have worked
for me.  Has anyone else ran into the issue of using a form in a JSP
to
submit data to a Servlet, have that servlet return data to the very
same
JSP?

Thanks in advance.


>>> Jason.Johnston@epa.state.il.us 12/16/02 12:53PM >>>
Thanks for the advice, I didn't know you could redirect. The javadoc
on
the RequestDispatcher only lists the forward and include methods.
I'll
try that.

The initial call to the servlet is actually being made by the client
browser via a form response.


>>> mike@ward-murphy.co.uk 12/16/02 12:00PM >>>
If you want the path in the browser's address bar to change, I think
you
have to use a "redirect" rather than a "forward".  (I've read that
even
then
it's not guaranteed to work (since it's browser-dependent), but it's
working
fine for me.  There's the disadvantage of an additional network
round-trip
that's not ideal, but I don't know of any other way.)
[Actually, I guess you're already redirecting from the original jsp
request
to the servlet.  If you changed that to "forward" then that'd probably
solve
you're problem without the additional round-trip....]

Mike.



----- Original Message -----
From: "Jason Johnston" <Ja...@epa.state.il.us>
To: "<"Tomcat Users List"" <to...@jakarta.apache.org>
Sent: Monday, December 16, 2002 5:46 PM
Subject: JSP to Servlet to JSP pathing issue. Relative Pathing Please
help.


I have a JSP that has a form that I want processed by a servlet.  The
servlet then places the results in the page context and redirects back
to the JSP.

Everything works fine on the first go, but the second time through the
path in the client's browser is no longer valid.

Initially, the path is:

http://localhost:8080/testgroup/lookup.jsp 

This then sends the form data to the
/testgroup/servlet/dolookup?<parameters>

The servlet executes and uses the request dispatcher to load the
original JSP.

                RequestDispatcher
rd=getServletContext().getRequestDispatcher("//lookup.jsp");
                rd.forward(request,response);

The original JSP comes up fine and has the results, but the path in
the
browser URL is still the servlet address.  Since the form sends to a
relative path, the second time you try to run, it doesn't work.


http://localhost:8080/testgroup/servlet/test.dolookup?epaid=J2466&search=id&



firstname=&lastname=

This seems to be a very simple relative pathing problem, but I've
tried
various solutions with no luck.  I'm sure someone else has run into
this
and found a solution.  If anyone has any insight, please help.

Thanks.



--
To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>






--
To unsubscribe, e-mail:  
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>