Markus Schönhaber wrote:
André Warnier:
It appears anyway that my previous attempted logic was quite wrong.
But I still find the spec quite confusing. There is some kind of
mixture between "servlet" and "web application" that is not very clear,
at least to me.
As I understand it now, there are 2 steps :
1) the appropriate webapp (not servlet) is located using the path, not
the <url-pattern>
2) the appropriate servlet *within* the webapp is selected based on the
<url-pattern>
Yes.
Example: given the URL http://<servername>/foo/bar/baz/, the Container
looks at /foo/bar/baz/ to find out which webapp should handle the request.
- If there's a webapp with the context path /foo/bar/baz, that's the one
to handle the request and the path for the servlet mapping is "/".
- If there's a webapp with the context path /foo/bar, that's the one to
handle the request and the path for the servlet mapping is "/baz/".
- If there's a webapp with the context path /foo, that's the one to
handle the request and the path for the servlet mapping is "/bar/baz/".
- If neither of the above is true, the webapp with the context path ""
(the default webapp, ROOT in Tomcat) is the one to handle the request
and the path for the servlet mapping is "/foo/bar/baz/".
and
3) .. each webapp has a "default servlet", to which things get mapped
when no other <url-pattern> of this webapp matches
Essentially, yes. You could comment the Default Servlet and it's mapping
in ${catalina.base}/conf/web.xml, though.
4) the ROOT webapp matches the path "/", not the <url-pattern> /
The default webapp (named ROOT in Tomcat) matches the path "". Apart
from that, what you said in 1) is true for all webapps, including the
default one.
Is the above correct ?
The confusing part for me may also be due to my misunderstanding.
I view this as follows :
- a "web application" is "the whole thing" that one finds below
(tomcat_dir)/webapps/xyz for example (including its static pages,
WEB-INF/web.xml, its servlets etc..)
- this webapp can consist of one or more servlets, each with its set of
<url-pattern>'s that it handles
Not so ?
No, correct.
And if so, then I find the examples in table "SRV.11.2.2 Example Mapping
Set" quite confusing, since paths like
/foo
/bar
/catalog
would tend to imply different webapps, rather than different servlets
inside of one webapp, no ?
No. These examples talk about the mappings *inside* a webapp, i. e. what
can be used as a value for <url-mapping>.
In other words: the part of the request URL which is used to determine
the webapp to handle the request is already removed.
Take this trivial JSP and deploy it to different contexts/webapps. Maybe
the output will make things clearer:
<html>
<body>
<table>
<tr><td>RequestURL</td><td><%= request.getRequestURL() %></td></tr>
<tr><td>RequestURI</td><td><%= request.getRequestURI() %></td></tr>
<tr><td>ContextPath</td><td><%= request.getContextPath() %></td></tr>
<tr><td>ServletPath</td><td><%= request.getServletPath() %></td></tr>
</table>
</body>
</html>
Thanks.
Now still one more question, based upon what you wrote above :
> - If there's a webapp with the context path /foo/bar/baz, that's the one
> to handle the request and the path for the servlet mapping is "/".
Not that I would necessarily do this, but assuming that I create the
following file structure :
(tomcat_dir)/webapps
/foo
various.jsp
WEB-INF
web.xml
/bar
various.jsp
WEB-INF
web.xml
/baz
various.jsp
and I start Tomcat.
Then I guess I have (at least) 2 webapps : a "/foo" webapp, and a
"/foo/bar" webapp.
Now a request comes in with the url "/foo/bar/baz/various.jsp"
How does Tomcat determine that /foo/bar/baz is not itself a webapp, but
merely a sub-dir of webapp "/foo/bar" ?
Or does it complain somewhere along the way ?
That may not be the right way to ask the question, so to put this
another way : when Tomcat starts, does it recurse into each webapp dir
to see if there is (for instance) another WEB-INF subdir hidden deeper
there ? Or does this information come from somewhere else ?
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]