You're making a very common mistake. A URL is not a filesystem path. It's a path-like expression intended to locate a resource.
In
J2EE, a URL
pattern is used to identify the application resource that should receive the URL. In the case of
JSF, that resource will be the JSF servlet, because we've specified (using the servlet-mapping) that URLs ending with ".jsf" will be routed to the JSF servlet.
The JSF servlet will dissect the URL and make its own decisions on how to fulfill the URL request. That process will include altering the URL to form a WAR resource path. In an "exploded" WAR, that path will be a filename path (the filename of the
JSP) relative to the place where the WAR is deployed. In a standard WAR, it will be the relative location within the WAR of the JSP corresponding to that URL.
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.