FacesServlet loaded only once at the server startup.
正确.
URL mapping is used only when first time JSP application accessed from the external context.
不正确已经对每个传入的HttpServletRequest进行了测试.容器还应该如何知道要调用哪个servlet?
Also is there any other way by not including in the web.xml?
如果您使用的是支持Servlet 3.0的servlet容器,则还可以通过@WebServlet注释执行此操作.但是,JSF 2.0被设计为与Servlet 2.5向后兼容,因此它不附带该注释,您需要在web.xml中显式声明它.
也可以看看:
根据新的一系列问题进行更新(每个问题都应属于其自己的问题,但同样如此)
In JSF, we never seen changing the URL in the address bar. In that case, how it is handling the new request with the same URL?
仅在幕后抢先RequestDispatcher#forward()的情况下才会发生这种情况.向前,servlet容器基本上将相同的HTTP请求/响应重用用于视图(JSP / XHTML页面).它不会强制/指示Web浏览器发送全新的请求.另一方面,HttpServletResponse#sendRedirect()将指示客户端(Web浏览器)触发新的GET请求,因此URL将更改.您可以通过添加< redirect />在JSF中进行强制设置.到< navigation-case>.请注意,由于这会导致新请求,因此初始请求的所有请求范围的Bean都将丢失.
Why we need not give the view name as failure.jsf? We are just giving the *.jsp in the faces-config.xml. How it is handled internally?
FacesServlet知道自己的url模式.