Hello Bharanidharan, Ah, I didn't see that before.
You don't want to store your static files under WEB-INF. That is purely for servlets and other general classes and some config stuff such as the web.xml that you don't want to have directly accessible via the web. You would put your html file one directory up from WEB-INF in your "jetspeed" directory. This is also where you would put .jsp files. Also, you don't actually have to provide the /servlet/* mapping in your own web.xml. You will get that functionality already because it is in Tomcat's default web.xml. All you need to know is that it is the functionality that it provides. Now, keep in mind that nothing within WEB-INF will be accessible without some sort of mapping. We are using the default /servlet/ mapping that Tomcat provides. So, when you see: http://www.myhost.com/jetspeed/servlet/myservlet.NewLogin The "/servlet" part of of that URL is virtual. The mapping is provided by the web server. The request goes through an invoker servlet that runs the requested servlet for you. That is much different than going to your html file which should be at... http://www.myhost.com/jetspeed/templates/vm/navigations/html/loggedinportlet.html Although, that assumes that you would move the root of "templates" into the "jetspeed" directory rather than have it exist under the WEB-INF directory. As you can see, the server needs no mapping information for static files other than knowing what directory or virtual directory http://www.myhost.com/jetspeed/ points to. After that, you just follow the directory structure within the "jetspeed" directory to determine the URL path to the static document. This is not so with servlets. You can't just browse to a servlet at some physical path on the disk. You refer to servlets through servlet mappings. BTW, if you created a directory called "servlet" to store static files, you wouldn't be able to get to them because Tomcat would intercept the pattern /servlet/ and try to map the named entity that comes after that rather than serving the named entity directly from that directory. For instance, if you had: /webapps/jetspeed/servlet/templates/vm/navigations/html/loggedinportlet.html and tried to get to that page via: http://www.myhost.com/jetspeed/servlet/templates/vm/navigations/html/loggedinportlet.html Tomcat would report an http 404 error because it tries to find a servlet to invoke named "templates/vm/navigations/html/loggedinportlet.html" or with a class name of "templates/vm/navigations/html/loggedinportlet.html" Which brings to mind another trick. You can name your servlet and get there via the servlet-name rather than having to specify the whole package + Servlet class name adding the following to your web.xml: <servlet> <servlet-name>newlogin</servlet-name> <servlet-class>myclasses.NewLogin</servlet-class> </servlet> Now you can get to your servlet via the class-name: http://www.myhost.com/jetspeed/servlet/myservlet.NewLogin or via the servlet-name: http://www.myhost.com/jetspeed/servlet/newlogin You can also, then, provide your own mapping for the servlet named "newlogin" such as: <servlet-mapping> <servlet-name>newlogin</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> which allows you to get to your servlet without having to go through the default /servlet/ mapping like this: http://www.myhost.com/jetspeed/login notice that the "servlet-name" in "servlet" and "servlet-mapping" must be *exactly* the same (case sensitive too). Does that make more sense or did I just add to the confusion? Jake Monday, May 06, 2002, 3:14:21 PM, you wrote: MB> Jack.. i am sorry its very complicated for me and i didnt understand MB> anything you said.. I am new to tomcat environment. MB> I have a servlet under MB> /webapps/jetspeed/Web-inf/classes/myservlet/NewLogin.class. In that servlet MB> i have to call a html file that is kept under MB> /webapps/jetspeed/Web-inf/templates/vm/navigations/html/loggedinportlet.html MB> . MB> I have the following code in web.xml MB> <!-- The mapping for the invoker servlet --> MB> <servlet-mapping> MB> <servlet-name>invoker</servlet-name> MB> <url-pattern>/servlet/*</url-pattern> MB> </servlet-mapping> MB> how do i map the html file in my NewLogin.class servlet. i still dont get MB> how the webpath is mapped to the system file path... MB> sorry for the inconvenience. MB> please let me know.. MB> thanks MB> bharani. MB> -----Original Message----- MB> From: Jacob Kjome [mailto:[EMAIL PROTECTED]] MB> Sent: Monday, May 06, 2002 3:52 PM MB> To: Tomcat Users List MB> Subject: Re[2]: file path problem MB> Hello Bharanidharan, MB> /servlet/ is a mapping provided for you by Tomcat. In fact, take a MB> look in the web.xml in $TOMCAT_HOME/conf and look for that mapping: MB> <!-- The mapping for the invoker servlet --> MB> <servlet-mapping> MB> <servlet-name>invoker</servlet-name> MB> <url-pattern>/servlet/*</url-pattern> MB> </servlet-mapping> MB> If tomcat didn't provide this, you would have to set up a mapping for MB> each and every one of your servlets that you wished to run. With MB> this, you can run any servlet in your webapp by naming the servlet MB> with the full package name. MB> When you want a more convenient URL to invoke your servlet, you can MB> provide your own mapping in a similar way as the above example in your MB> own web.xml. MB> Keep in mind that the /servlet/ mapping is *not* guaranteed to exist MB> across containers, although I would imagine that a number of MB> containers might just copy Tomcat's lead on this to be compatible. MB> Jake MB> Monday, May 06, 2002, 2:16:11 PM, you wrote: MB>> jack, MB>> I have a quick question. in your example below, i.e. MB>> http://www.myserver.com/mywebapp/servlet/myservlets.login MB>> you mean to say "servlet" in the URL is mapped to "Web-inf" directory MB> under MB>> jetspeed??.. i am still unable to comprehend the url path. MB>> thanks MB>> bharani MB>> -----Original Message----- MB>> From: Jacob Kjome [mailto:[EMAIL PROTECTED]] MB>> Sent: Monday, May 06, 2002 1:08 PM MB>> To: Tomcat Users List MB>> Subject: Re: file path problem MB>> Hello Bharanidharan, MB>> Don't confuse the system file path with the URL path. MB>> What URL is in your browser on the page that contains the MB>> window.open()? MB>> window.open will try to find the page relative to your domain root. MB>> If you are at: MB>> http://www.myserver.com/mywebapp/servlet/myservlets.login MB>> Then the code you have for window.open will be attempting to find a MB>> directory on the server that simply doesn't exist. You would be able MB>> to get to your "myhtml" directory with this, though. MB>> window.open("../myhtml/loggedin.html"); MB>> However, you can't count on this, because what if you did a servlet MB>> mapping and you got to your login servlet via: MB>> http://www.myserver.com/mywebapp/login MB>> now, the proper way to get to your html page would be: MB>> window.open("myhtml/loggedin.html"); MB>> The issue here is that you are hard-coding a path that can't be MB>> assumed. What you should do, instead is the following: MB>> out.println("window.open(\"" + req.getContextPath() + MB>> "/myhtml/loggedin.html\")"; MB>> After doing this, it doesn't matter where you invoke your servlet from MB>> as long as the static html is in the proper location relative to the MB>> root of the webapp. MB>> Jake MB>> Monday, May 06, 2002, 11:30:37 AM, you wrote: MB>>> Hi all, MB>>> I have my login servlet under MB>>> webapp/jetspeed/web-inf/classes/myservlets/login.class. I invoke a MB>>> loggedin.html from this servlet. loggedin.html is located under MB>>> webapps/jetspeed/myhtml/loggedin.html. so in my servlet, i gave MB>>> window.open("../../../myhtml/loggedin.html");. MB>>> but apache gives error saying resource /myhtml/loggedin.html couldnt MB> not MB>> be MB>>> found. I tried copying this file to various directories including the MB>>> template directories under jetspeed but no success.. can someone how MB> the MB>>> file path is specified in jetspeed.. MB>>> thanks MB>>> bharani. MB>>> -- MB>>> To unsubscribe, e-mail: MB>> <mailto:[EMAIL PROTECTED]> MB>>> For additional commands, e-mail: MB>> <mailto:[EMAIL PROTECTED]> -- Best regards, Jacob mailto:[EMAIL PROTECTED] -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>