RE: ServletRequest's path elements not updated by calls to getRequestDispatcher()
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()
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()
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()
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()
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()
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()
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]