RE: ServletRequest's path elements not updated by calls to getRequestDispatcher()

2004-01-21 Thread Jeff Tulley
I think the difference between those seeing the redirect and those who
are not is what browser they are using.  Some browsers add the trailing
slash for you, some do not.  I tried this on Windows NT 4, IE 6(does add
the "/"), and on Galeon/Mozilla on SUSE Linux (no "/" added).

Client side, not server side.

That said, you CAN do server side redirects, by the methods mentioned
already (mod_rewrite, etc)

>>> [EMAIL PROTECTED] 1/21/04 1:13:12 PM >>>
www.apple.com/ipodmini does a redirect to www.apple.com/ipodmini/,
which is
the same behavior you get from a webserver (I believe most of them,
but
definitely IIS) when requesting a directory without the trailing slash.
 (I
seem to recall that Microsoft calls it a "courtesy redirect".)  

If you can redirect these requests to the actual location of the page
that's
serving the request, your life will get easier when it comes to
relative
hrefs/srcs.  

Even if you want to hide the location of your JSP, which is not a bad
idea,
to live up to what apple does your page only has to work with one URL
...
and the other one gets redirected to the one that works.

-john.


-Original Message-
From: Alan Weissman [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, January 21, 2004 2:54 PM
To: 'Tomcat Users List'
Subject: RE: ServletRequest's path elements not updated by calls to
getRequestDispatcher()


Ok, so what was said about using img src="/foo.gif" theoretically
seems
true, but in practice it does not work. 

And I don't have the ability to mandate a request.getContextPath() for
every 
Link on the site.

All I want to do is do what apple does if you go to
www.apple.com/ipodmini or www.apple.com/ipodmini/ you get the same
page.
This shouldn't be that hard, but whats the best way to do it?  

Should I just start using Apache's mod_rewrite?

Thanks again,
Alan

-Original Message-
From: Shapira, Yoav [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, January 21, 2004 2:42 PM
To: Tomcat Users List
Subject: RE: ServletRequest's path elements not updated by calls to
getRequestDispatcher()


Howdy,

>No, if you use img="/foo.gif"
>then '/' ALWAYS indicates to the browser to request it from the
domain
>root.

Yeah, but you don't want to do that because what if the context path
changes?  A relative link would be better, and it's good that the
original poster is already trying to do that, e.g. ../foo.gif. 
Consider
using request.getContextPath() + "/images/foo.gif".

Yoav Shapira



This e-mail, including any attachments, is a confidential business
communication, and may contain information that is confidential,
proprietary and/or privileged.  This e-mail is intended only for the
individual(s) to whom it is addressed, and may not be saved, copied,
printed, disclosed or used by anyone else.  If you are not the(an)
intended recipient, please immediately delete this e-mail from your
computer system and notify the sender.  Thank you.


-
To unsubscribe, e-mail: [EMAIL PROTECTED] 
For additional commands, e-mail: [EMAIL PROTECTED] 



-
To unsubscribe, e-mail: [EMAIL PROTECTED] 
For additional commands, e-mail: [EMAIL PROTECTED] 

-
To unsubscribe, e-mail: [EMAIL PROTECTED] 
For additional commands, e-mail: [EMAIL PROTECTED] 


Jeff Tulley  ([EMAIL PROTECTED])
(801)861-5322
Novell, Inc., The Leading Provider of Net Business Solutions
http://www.novell.com

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: ServletRequest's path elements not updated by calls to getRequestDispatcher()

2004-01-21 Thread Shapira, Yoav

Howdy,

>All I want to do is do what apple does if you go to
>www.apple.com/ipodmini or www.apple.com/ipodmini/ you get the same
page.
>This shouldn't be that hard, but whats the best way to do it?

Going to apple.com/ipodmini leaves the URL as-is, I just tried it, so
I'm not sure what you mean.

You can have a tiny webapps installed at /target with one filter that
forwards all requests to the application installed at /.  For more
flexibility, you can look at the balancer webapp that ships with tomcat
and allows for rules-based forwarding, much like mod_rewrite.

>Should I just start using Apache's mod_rewrite?

You could.

Yoav Shapira



This e-mail, including any attachments, is a confidential business communication, and 
may contain information that is confidential, proprietary and/or privileged.  This 
e-mail is intended only for the individual(s) to whom it is addressed, and may not be 
saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) 
intended recipient, please immediately delete this e-mail from your computer system 
and notify the sender.  Thank you.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: ServletRequest's path elements not updated by calls to getRequestDispatcher()

2004-01-21 Thread Alan Weissman
Ok, so what was said about using img src="/foo.gif" theoretically seems
true, but in practice it does not work. 

And I don't have the ability to mandate a request.getContextPath() for
every 
Link on the site.

All I want to do is do what apple does if you go to
www.apple.com/ipodmini or www.apple.com/ipodmini/ you get the same page.
This shouldn't be that hard, but whats the best way to do it?  

Should I just start using Apache's mod_rewrite?

Thanks again,
Alan

-Original Message-
From: Shapira, Yoav [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, January 21, 2004 2:42 PM
To: Tomcat Users List
Subject: RE: ServletRequest's path elements not updated by calls to
getRequestDispatcher()


Howdy,

>No, if you use img="/foo.gif"
>then '/' ALWAYS indicates to the browser to request it from the domain
>root.

Yeah, but you don't want to do that because what if the context path
changes?  A relative link would be better, and it's good that the
original poster is already trying to do that, e.g. ../foo.gif.  Consider
using request.getContextPath() + "/images/foo.gif".

Yoav Shapira



This e-mail, including any attachments, is a confidential business
communication, and may contain information that is confidential,
proprietary and/or privileged.  This e-mail is intended only for the
individual(s) to whom it is addressed, and may not be saved, copied,
printed, disclosed or used by anyone else.  If you are not the(an)
intended recipient, please immediately delete this e-mail from your
computer system and notify the sender.  Thank you.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: ServletRequest's path elements not updated by calls to getRequestDispatcher()

2004-01-21 Thread Shapira, Yoav

Howdy,

>No, if you use img="/foo.gif"
>then '/' ALWAYS indicates to the browser to request it from the domain
>root.

Yeah, but you don't want to do that because what if the context path
changes?  A relative link would be better, and it's good that the
original poster is already trying to do that, e.g. ../foo.gif.  Consider
using request.getContextPath() + "/images/foo.gif".

Yoav Shapira



This e-mail, including any attachments, is a confidential business communication, and 
may contain information that is confidential, proprietary and/or privileged.  This 
e-mail is intended only for the individual(s) to whom it is addressed, and may not be 
saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) 
intended recipient, please immediately delete this e-mail from your computer system 
and notify the sender.  Thank you.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: ServletRequest's path elements not updated by calls to getRequestDispatcher()

2004-01-21 Thread Mike Curwen
No, if you use img="/foo.gif"
then '/' ALWAYS indicates to the browser to request it from the domain
root.
 


> -Original Message-
> From: Alan Weissman [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, January 21, 2004 1:26 PM
> To: 'Tomcat Users List'
> Subject: RE: ServletRequest's path elements not updated by 
> calls to getRequestDispatcher()
> 
> 
> You are so right Mike, thanks so much.
> 
> Well I guess now my problem is that for requests ending in 
> /target, my img tags need to look like "/images/image.gif" 
> wheras for requests ending in 
> /target/ my img tags need to look like "../images/image.gif".  
> 
> I can't imagine I'm the first person to try to implement this 
> kind of functionality.  Any other strategies out there?  I'm 
> debating rewriting the defaultServlet at this point.
> 
> Thanks again,
> Alan
> 
> -Original Message-
> From: Mike Curwen [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, January 21, 2004 2:19 PM
> To: 'Tomcat Users List'
> Subject: RE: ServletRequest's path elements not updated by calls to
> getRequestDispatcher()
> 
> That's the request dispatcher. Images and CSS are all 
> 'called' from the client and have nothing to do with the dispatcher.
>  
> If you type in http://www.foo.com/target
> then to the browser, the resource requested is 'target'
> and your image and css links, if they're relative, are going 
> to be relative to www.foo.com
>  
> If, OTOH, you ask for http://www.foo.com/target/
> then to your browser, you appear to be requesting a resouce 
> in the /target directory, and so images/css will be requested 
> from there.
> 
> The simplest answer is:
> 
> replace "img=foo.gif"
> with "img=/foo.gif"
> 
> 
> 
> > -Original Message-
> > From: Alan Weissman [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, January 21, 2004 1:11 PM
> > To: Tomcat Users List
> > Subject: ServletRequest's path elements not updated by calls 
> > to getRequestDispatcher()
> > 
> > 
> > Hi Everyone -
> > 
> > I have a requirement to allow for URLs on a site of the
> > format www.site.com/target where 'target' is not a real 
> > directory or servlet, but redirects to another page on the site.
> > 
> > To handle this, I have developed a ServletFilter which takes
> > the 'target' off the URL and attempts to do a server side 
> > forward to a servlet using the RequestDispatcher.  This is 
> > working for www.site.com/target.  I can get the 
> > RequestDispatcher from either the ServletRequest or the 
> > ServletContext and redirect to any target servlet with forward().  
> > 
> > The problem arises where I try to handle www.site.com/target/
> > (note the trailing slash).  In this case, the 
> > RequestDispatcher forwards to the target correctly HOWEVER, 
> > all subsequent HTTP GETs for images, css, etc, are being 
> > attempted on the wrong directory, /target/.  This seems to be 
> > because the ServletRequest doesn't seem to adjust its path 
> > elements accordingly.  For instance, if /target/ is supposed 
> > to redirect to target.jsp using forward("/target.jsp") the 
> > requests look like:
> > 
> www.site.com/target.jsp
> www.site.com/target/image.gif
> www.site.com/target/style.css
> 
> Of course, /target was never a real directory to begin with :)  
> 
> Now, According to the API doc for RequestDispatcher:
> 
> "For a RequestDispatcher obtained via getRequestDispatcher(), 
> the ServletRequest object has its path elements and 
> parameters adjusted to match the path of the target resource. "
> 
> Does anyone have any experience with this issue?  Is this a 
> bug?  Is there a workaround?
> 
> Thanks so much,
> Alan
> 
> 
> 
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: ServletRequest's path elements not updated by calls to getRequestDispatcher()

2004-01-21 Thread Alan Weissman
You are so right Mike, thanks so much.

Well I guess now my problem is that for requests ending in /target, my
img tags need to look like "/images/image.gif" wheras for requests
ending in 
/target/ my img tags need to look like "../images/image.gif".  

I can't imagine I'm the first person to try to implement this kind of
functionality.  Any other strategies out there?  I'm debating rewriting
the defaultServlet at this point.

Thanks again,
Alan

-Original Message-
From: Mike Curwen [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, January 21, 2004 2:19 PM
To: 'Tomcat Users List'
Subject: RE: ServletRequest's path elements not updated by calls to
getRequestDispatcher()

That's the request dispatcher. Images and CSS are all 'called' from the
client and have nothing to do with the dispatcher.
 
If you type in http://www.foo.com/target
then to the browser, the resource requested is 'target'
and your image and css links, if they're relative, are going to be
relative to www.foo.com
 
If, OTOH, you ask for http://www.foo.com/target/
then to your browser, you appear to be requesting a resouce in the
/target directory, and so images/css will be requested from there.

The simplest answer is:

replace "img=foo.gif"
with "img=/foo.gif"



> -Original Message-
> From: Alan Weissman [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, January 21, 2004 1:11 PM
> To: Tomcat Users List
> Subject: ServletRequest's path elements not updated by calls 
> to getRequestDispatcher()
> 
> 
> Hi Everyone - 
> 
> I have a requirement to allow for URLs on a site of the 
> format www.site.com/target where 'target' is not a real 
> directory or servlet, but redirects to another page on the site.
> 
> To handle this, I have developed a ServletFilter which takes 
> the 'target' off the URL and attempts to do a server side 
> forward to a servlet using the RequestDispatcher.  This is 
> working for www.site.com/target.  I can get the 
> RequestDispatcher from either the ServletRequest or the 
> ServletContext and redirect to any target servlet with forward().  
> 
> The problem arises where I try to handle www.site.com/target/ 
> (note the trailing slash).  In this case, the 
> RequestDispatcher forwards to the target correctly HOWEVER, 
> all subsequent HTTP GETs for images, css, etc, are being 
> attempted on the wrong directory, /target/.  This seems to be 
> because the ServletRequest doesn't seem to adjust its path 
> elements accordingly.  For instance, if /target/ is supposed 
> to redirect to target.jsp using forward("/target.jsp") the 
> requests look like:
> 
www.site.com/target.jsp
www.site.com/target/image.gif
www.site.com/target/style.css

Of course, /target was never a real directory to begin with :)  

Now, According to the API doc for RequestDispatcher:

"For a RequestDispatcher obtained via getRequestDispatcher(), the
ServletRequest object has its path elements and parameters adjusted to
match the path of the target resource. "

Does anyone have any experience with this issue?  Is this a bug?  Is
there a workaround?

Thanks so much,
Alan



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: ServletRequest's path elements not updated by calls to getRequestDispatcher()

2004-01-21 Thread Mike Curwen
That's the request dispatcher. Images and CSS are all 'called' from the
client and have nothing to do with the dispatcher.
 
If you type in http://www.foo.com/target
then to the browser, the resource requested is 'target'
and your image and css links, if they're relative, are going to be
relative to www.foo.com
 
If, OTOH, you ask for http://www.foo.com/target/
then to your browser, you appear to be requesting a resouce in the
/target directory, and so images/css will be requested from there.

The simplest answer is:

replace "img=foo.gif"
with "img=/foo.gif"



> -Original Message-
> From: Alan Weissman [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, January 21, 2004 1:11 PM
> To: Tomcat Users List
> Subject: ServletRequest's path elements not updated by calls 
> to getRequestDispatcher()
> 
> 
> Hi Everyone - 
> 
> I have a requirement to allow for URLs on a site of the 
> format www.site.com/target where 'target' is not a real 
> directory or servlet, but redirects to another page on the site.
> 
> To handle this, I have developed a ServletFilter which takes 
> the 'target' off the URL and attempts to do a server side 
> forward to a servlet using the RequestDispatcher.  This is 
> working for www.site.com/target.  I can get the 
> RequestDispatcher from either the ServletRequest or the 
> ServletContext and redirect to any target servlet with forward().  
> 
> The problem arises where I try to handle www.site.com/target/ 
> (note the trailing slash).  In this case, the 
> RequestDispatcher forwards to the target correctly HOWEVER, 
> all subsequent HTTP GETs for images, css, etc, are being 
> attempted on the wrong directory, /target/.  This seems to be 
> because the ServletRequest doesn't seem to adjust its path 
> elements accordingly.  For instance, if /target/ is supposed 
> to redirect to target.jsp using forward("/target.jsp") the 
> requests look like:
> 
www.site.com/target.jsp
www.site.com/target/image.gif
www.site.com/target/style.css

Of course, /target was never a real directory to begin with :)  

Now, According to the API doc for RequestDispatcher:

"For a RequestDispatcher obtained via getRequestDispatcher(), the
ServletRequest object has its path elements and parameters adjusted to
match the path of the target resource. "

Does anyone have any experience with this issue?  Is this a bug?  Is
there a workaround?

Thanks so much,
Alan



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]