I haven't said it in a long time, but: A
file server is
not a
web server.
EVERY URL request that comes into a web application server is parsed by the framework, using the web.xml file for guidance. If the URL
patterns in web.xml indicate that the URL addresses a servlet, that request will be passed to the indicated servlet. Otherwise, the application container will use the part of the URL that comes after the context but before the query as a path to a resource inside the WAR. And just as a reminder, a WAR isn't necessarily a set of files and directories. In its official form, it's a ZIP file containing a resource directory that can be - but doesn't have to be - exploded into a set of files and directories.
On the client side, there's no way to tell WHAT will be done to a URL inside the server. It may even end up rewritten. For example, in
JSF, a "/admin/myPage.jsf" might end up pulling in an "/admin.xhtml" resource to actually build the response. Even a simple "/images/myPic.gif" could end up being rewritten to convert a JPEG resource located in a completely different directory tree into a returned GIF data stream.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.