Congratulations! You have discovered the difference between a
resource path (/abc.xhtml) and a
URL (.../abc.jsf)!
The FacesServlet accepts the URL whenever it matches the selection criteria (url-pattern) for the FacesServlet. URLs that don't match that criteria are checked against other
servlets' URL
patterns and then against the internal default servlet, which will attempt to find a
JSP or static resource.
For URLs processed by the FacesServlet when Facelets are involved, the FacesServlet dissects the incoming URL and uses it to build an equivalent resource path, which is where it will attempt to find a View Template to render.
Some other things to note:
1. If you have a loginPage.jsf, I can virtually guarantee you have security problems waiting for you.
2. You do not need all those different URL patterns for the FacesServlet. Generally you'd either have the "*.jsf" pattern or the "/faces/*" pattern or the "*.faces" pattern.
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.