Hi Dan,

Yes, well, thats ok, I only skim most posts to the list (not yours, of
course ;-).  And after re-reading my questions, I can see that I tend to
waffle on, like I am now - doh!

So, what I though was a problem is actually a feature, useful for deployed
customisation, quite ingenious.  In the wash, it seems the trick it to
accept the way things work with request forwarding and make the most of
them.  If you map your "web actions" so that they appear to be in the same
directory as your JSPs you can also avoid the "conceptual" problem.

Thanks for your input. Regards

Drew

> -----Original Message-----
> From: Daniel Lopez [SMTP:[EMAIL PROTECTED]]
> Sent: Tuesday, January 18, 2000 5:27 PM
> To:   Drew Cox
> Cc:   [EMAIL PROTECTED]
> Subject:      Re: How to encode relative URIs in JSP after forward from
> servlet (notfor sessions)
>
> Hi Drew,
>
> I have to admit I haven't really understood what you meant because I
> didn't really carefully read your message ;).
> Anyway, We've developed an approach to deal with the problem you are
> facing and it's close to what you are using. We actually never call our
> controller servlet but we use suffixes. For example, we register the
> suffix "*.appl" and configure the web server/servlet engine to forward
> all calls that use "*.appl" to the controller servlet. That means that
> http://www.mycompany.com/directory/DoSmthng.appl is forwarded to the
> controller servlet that itself forwards to a JSP. Inside the JSP you can
> make reference to "images/icon.gif" and it will be translated to
> http://www.mycompany.com/directory/images/icon.gif
> This has proven to be quite useful as we have the same application with
> two different interfaces one at http://www.mycompany.com/directory1/ and
> another at http://www.mycompany.com/directory2/ and as the links to
> stylesheets and images are relative, we can even use the same JSPs.
> I hope this helps,
> Dan
> -------------------------------------------
> Daniel Lopez Janariz ([EMAIL PROTECTED])
> Web Services
> Computer Center
> Balearic Islands University
> -------------------------------------------
>
>
> Drew Cox wrote:
> >
> > Hi Damian,
> >
> > I must say, until now I was a little dismayed at the lack of response to
> my
> > query.  I thought I must have not explained the problem sufficiently, or
> I
> > was missing something so simple I was being ignored.  Thanks for at
> > confirming this is a problem for others out there.
> >
> > In the meantime, I have come up with a workaround/solution that will
> work on
> > this project.  It's simple really, just pretend the URL of the sent to
> the
> > controlling servlet IS the URL of your JSP.  For example, I invoke our
> login
> > screen with :
> >
> > http://server/time/controller/displayLogin
> >
> > It eventually forwards to a JSP to display the login screen, which if
> > accessed directly would be at the URL:
> >
> > http://server/time/jsp/displayLogin.jsp
> >
> > But, in the JSP code, I just pretend it actually lives in the
> /controller
> > directory of the web app and code all my static links relative to this
> > location.  For example, thes link to the CSS is now "../jsp/style.css".
> >
> > This could be a problem if you also invoke your JSP's directly, or from
> > other servlets mapped to different directories.  But with the single
> > controlling servlet model it looks like it will be adequate.  Given the
> > nature of what I'm doing, maybe this is the only answer?
> >
> > I am still very interested to hear how others have dealt with this
> issue.
> >
> > Regards
> >
> > Drew Cox
> >
> > ps
> > Glad to hear you're enjoying the ride.  We must be at similar stages of
> > development.  Oh, just realised you're an Aussie too.  So there are some
> > other JSP sites around OZ....
> >
> > > -----Original Message-----
> > > From: Damian Fauth [SMTP:[EMAIL PROTECTED]]
> > > Sent: Tuesday, January 18, 2000 11:41 AM
> > > To:   [EMAIL PROTECTED]
> > > Subject:      Re: How to encode relative URIs in JSP after forward
> from
> > > servlet (not for sessions)
> > >
> > > I have been wondering about this one too.
> > >
> > > We have just started looking at Model II (MVC) JSP architecture as a
> > > solution to the increasing complexity of our JSP templates and I like
> > > the content/logic/model separation it provides - potentially it will
> > > make it easier for our HTML guys - but the relative URL issue is
> likely
> > > to confuse them and be a source of endless errors. Like Drew, I have
> > > tried the <base href=""> tag (although I used
> > > <base href="<%= request.getScheme() %>://<%= request.getServerName()
> > > %>/jakarta/local/docs/">) but its not something I want to impose on
> our
> > > HTML guys.
> > >
> > > Is there some other solution such as forcing all access to a
> particular
> > > web application (ie. some sort of servlet-mapping directive) to pass
> > > through a particular servlet by default, avoiding the need to
> reference
> > > your controlling servlet at all?
> > >
> > > Damian
> > >
> > > PS. By the way, I found the "Providing application resources to action
> > > classes in single-servlet delegation model" thread particularly
> > > illuminating and intend to try some of the approaches discussed.
> > >
> > > Drew Cox wrote:
> > > >
> > > > I've had a search through the archives but could not find any
> discussion
> > > on
> > > > this specific problem with relative URL's in JSPs.  I must be doing
> > > > something stupid, because this should happen to everyone?
> > > >
> > > > I forward from a servlet to JSP and the JSP contains static relative
> > > links
> > > > to other pages.  In this case it's the reference to a CSS style
> sheet in
> > > the
> > > > same directory as the JSP, eg.
> > > >
> > > >    <link rel="stylesheet" type="text/css" href="style.css">
> > > >
> > > > However, because the browser originally submitted a request to the
> > > Servlet's
> > > > URL (eg. http://host/app/servlet/action) it interpretes these links
> > > relative
> > > > to that url and goes looking for the style sheet at
> > > > http://host/app/servlet/style.css.  Not completely unexpected I
> guess...
> > > >
> > > > I have tried using the HTTPServletResponse.encodeURL and
> > > encodeRedirectURL
> > > > methods in the JSP to no avail, eg.
> > > >
> > > >    <link rel="stylesheet" type="text/css"
> > > > href="<%=response.encodeURL("style.css")%>">
> > > >
> > > > I guess these only add the stuff for session tracking, they don't
> seem
> > > to
> > > > allow for the modified HttpServetRequest URI in force in after
> > > forwarding to
> > > > the JSP code ?
> > > >
> > > > It looks like I could set the JSP page's base location with
> something
> > > like
> > > >
> > > > <head>
> > > >   <base href="<%=request.getRequestURI()%>">
> > > > </head>
> > > >
> > > > Then, other relative links on the page might should work?  For some
> > > other
> > > > strange reason the CSS link still doesn't work with this, I think it
> > > might
> > > > be a mime type thing in tomcat, because if I go directly to JSP it
> > > works???
> > > >
> > > > But even this seems like a lot of trouble to do on every page and I
> > > haven't
> > > > seen it discussed before.  How are other people handling this?  Or
> am I
> > > > missing something simple and its just too late at night for me to be
> > > working
> > > > on this stuff ?:-)
> > > >
> > > > Thanks
> > > >
> > > > Drew Cox
> > > >
> > > >
> > > --
> > > Damian Fauth              Fairfax Interactive Network (F2)
> > > Senior Software Engineer                 201 Sussex Street
> > > Ph: +61 2 9282 3528                      Sydney  NSW  2000
> > > [EMAIL PROTECTED]          http://www.f2.com.au

===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
FAQs on JSP can be found at:
 http://java.sun.com/products/jsp/faq.html
 http://www.esperanto.org.nz/jsp/jspfaq.html

Reply via email to