You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Matt Hughes <mh...@feith.com> on 2005/02/17 20:31:43 UTC

Building accurate URI

Previously all the JSPs in my application were in the same folder.  To 
organize things a bit, I categorized them according to action and now 
they are nice, but the problem is all the links in my application are 
relative.  And they all expect that they are in the same base folder, 
but now they're not.  Instead of prepending every single link my JSPs 
with the context path, I was going to use <base href="" > to generate a 
full URI up to and including the context path.  The problem is: how do I 
generate an accurate URI?  If I use ServletRequest to generate the URI 
this was:
getScheme() + "://" + getServerName() + ":" + getServerPort() + 
getContextPath()

The URL that the user sees will now have a port number, if it didn't 
have one before.  OR, if the server is forwarding the request from 
somewhere else, it might expose a whole new URI bypassing the forwarding 
mechanism.  My alternative was this:

String context = request.getContextPath();

String fullUrl = request.getRequestURL().toString();
URL url = new URL(fullUrl);
String path = url.getPath();
String base = fullUrl.substring(0,fullUrl.indexOf(path)) + context;

Where base is the base of my web application as it was typed by the 
user.  Does anyone forsee any problems with doing it this way?  Any 
other ideas or warnings against using <base href="" >


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Building accurate URI

Posted by Karan <ka...@resolution.com>.
Matt,

Try this:
href='<@html.rewrite page=""/>/FTL/resources/css/mainstyle.css'
(its in the freemarker syntax, so change that for JSPs)

When I use this, all links, etc. have to be given the path relative to 
the context and not to your current document.
That way I can keep everythign in order, and if I ever change the 
location of a particular document, a multiple-page search-and-replace is 
all thats required.

HTHs,
Karan

Matt Hughes wrote:

> Previously all the JSPs in my application were in the same folder.  To
> organize things a bit, I categorized them according to action and now
> they are nice, but the problem is all the links in my application are
> relative.  And they all expect that they are in the same base folder,
> but now they're not.  Instead of prepending every single link my JSPs
> with the context path, I was going to use <base href="" > to generate a
> full URI up to and including the context path.  The problem is: how do I
> generate an accurate URI?  If I use ServletRequest to generate the URI
> this was:
> getScheme() + "://" + getServerName() + ":" + getServerPort() +
> getContextPath()
>
> The URL that the user sees will now have a port number, if it didn't
> have one before.  OR, if the server is forwarding the request from
> somewhere else, it might expose a whole new URI bypassing the forwarding
> mechanism.  My alternative was this:
>
> String context = request.getContextPath();
>
> String fullUrl = request.getRequestURL().toString();
> URL url = new URL(fullUrl);
> String path = url.getPath();
> String base = fullUrl.substring(0,fullUrl.indexOf(path)) + context;
>
> Where base is the base of my web application as it was typed by the
> user.  Does anyone forsee any problems with doing it this way?  Any
> other ideas or warnings against using <base href="" >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
> .
>

-- 
CM II
Resolution Systems Inc.
/-- never compromise. what if you compromise and lose? --/


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org