You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Øyvind Hvamstad <oy...@hvamstad.net> on 2003/01/06 14:35:50 UTC

Relative paths in servlets?

Hi, could anyone tell me how to access files using relative paths from a
servlet? Say, if servlet is mapped to /bar and the file foo.html is in
the webapps top dir. How do I access the foo.html file from the servlet.
I tried ../foo.html, /foo.html and even
getServletContext().getRealPath(/bar)+"/../foo.html" but none works.

Any pointers?
-- 
Øyvind Hvamstad


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


Re[2]: Relative paths in servlets?

Posted by Jacob Kjome <ho...@visi.com>.
Hello Øyvind,

I'm not aggravated, I was just pointing out the misconception.

Jake

Monday, January 06, 2003, 9:30:26 AM, you wrote:

ØH> On Mon, 2003-01-06 at 16:31, Jacob Kjome wrote:

>> Assuming the .war file is in CATALINA_HOME/webapps
>> <Context path="/mypath" docBase="myWarArchive.war"/>
>> 
>> Make sure to stop tomcat before you put the .war file into webapps.  Add 
>> the above to your server.xml or a context configuration file (like 
>> admin.xml or manager.xml are set up).  Then put the .war file into 
>> webapps.  Now start Tomcat.  Then, try to access a servlet which uses 
>> getRealPath("/").  Check the value.  I guarantee it is null.
>> 


ØH> I am using the ant installTask, I was somehow confused to believe that
ØH> it used .war, but that was a mistake. No need to be agrevated.

ØH> <snip from="build.xml">
ØH>   <target name="install"
ØH>           depends="dist"
ØH>           description="Install application to servlet container">

ØH>     <install url="${manager.url}"
ØH>              username="${manager.username}"
ØH>              password="${manager.password}"
ØH>              path="${app.path}"
ØH>              <!-- THIS PROBABLY THREW ME OFF -->
ØH>              war="file://${build.home}"/>

ØH>   </target>
ØH> </snip>

>> Jake

ØH> Thanks

ØH> Øyvind


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



-- 
Best regards,
 Jacob                            mailto:hoju@visi.com


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


Re: Relative paths in servlets?

Posted by Øyvind Hvamstad <oy...@hvamstad.net>.
On Mon, 2003-01-06 at 16:31, Jacob Kjome wrote:

> Assuming the .war file is in CATALINA_HOME/webapps
> <Context path="/mypath" docBase="myWarArchive.war"/>
> 
> Make sure to stop tomcat before you put the .war file into webapps.  Add 
> the above to your server.xml or a context configuration file (like 
> admin.xml or manager.xml are set up).  Then put the .war file into 
> webapps.  Now start Tomcat.  Then, try to access a servlet which uses 
> getRealPath("/").  Check the value.  I guarantee it is null.
> 


I am using the ant installTask, I was somehow confused to believe that
it used .war, but that was a mistake. No need to be agrevated.

<snip from="build.xml">
  <target name="install"
          depends="dist"
	  description="Install application to servlet container">

    <install url="${manager.url}"
	     username="${manager.username}"
	     password="${manager.password}"
	     path="${app.path}"
             <!-- THIS PROBABLY THREW ME OFF -->
             war="file://${build.home}"/>

  </target>
</snip>

> Jake

Thanks

Øyvind


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


Re: Relative paths in servlets?

Posted by Jacob Kjome <ho...@visi.com>.
You are confusing the WAR structure with the actual .war archive.  The .war 
archive is a .jar format archive.  I challenge you to try to use File IO to 
access a file inside a .jar or .war archive.  If you can do it, please let 
us all know because you will have broken new ground in Java :-)

Remember that Tomcat auto-expands .war files to a directory structure and 
then deploys the directory structure.  Also, you mention that your 
contextPath points to the "build" *directory*.  That is, obviously, not a 
.war file archive, but a directory structure which will, quite obviously, 
work to get a real path using File IO.  The only way to test serving out of 
a .war archive in Tomcat is to define a <Context> element with the docBase 
pointing to a .war archive.  For instance...

Assuming the .war file is in CATALINA_HOME/webapps
<Context path="/mypath" docBase="myWarArchive.war"/>

Make sure to stop tomcat before you put the .war file into webapps.  Add 
the above to your server.xml or a context configuration file (like 
admin.xml or manager.xml are set up).  Then put the .war file into 
webapps.  Now start Tomcat.  Then, try to access a servlet which uses 
getRealPath("/").  Check the value.  I guarantee it is null.

Jake

At 03:23 PM 1/6/2003 +0100, you wrote:
>On Mon, 2003-01-06 at 15:22, Jacob Kjome wrote:
>
> > Check is that is null before using it as it *will* be null if you serve
> > your app directly from a .war file rather than from a directory on the 
> file
> > system.
>
>Odd, I do serve mine from a .war file, however the contextPath is not
>null, but points to the build directory. This is probably not true if
>the war is buildt elsewhere than on the local host.
>
> > Jake
>
>Thanks
>
>Øyvind
>
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>

Re: Relative paths in servlets?

Posted by Øyvind Hvamstad <oy...@hvamstad.net>.
On Mon, 2003-01-06 at 15:22, Jacob Kjome wrote:

> Check is that is null before using it as it *will* be null if you serve 
> your app directly from a .war file rather than from a directory on the file 
> system.

Odd, I do serve mine from a .war file, however the contextPath is not
null, but points to the build directory. This is probably not true if
the war is buildt elsewhere than on the local host.

> Jake

Thanks

Øyvind


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


Re: Relative paths in servlets?

Posted by Jacob Kjome <ho...@visi.com>.
/bar is your servlet mapping which has nothing to do with a real path on 
your system.  You want to get the real path from the base of the context:

String contextPath = getServletContext.getRealPath("/");

Check is that is null before using it as it *will* be null if you serve 
your app directly from a .war file rather than from a directory on the file 
system.

Now do contextPath+foo.html and create a File object from that.

Jake

At 02:35 PM 1/6/2003 +0100, you wrote:
>Hi, could anyone tell me how to access files using relative paths from a
>servlet? Say, if servlet is mapped to /bar and the file foo.html is in
>the webapps top dir. How do I access the foo.html file from the servlet.
>I tried ../foo.html, /foo.html and even
>getServletContext().getRealPath(/bar)+"/../foo.html" but none works.
>
>Any pointers?
>--
>Øyvind Hvamstad
>
>
>--
>To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>