No JSF basta você indicar na URL a view (página) que você deseja abrir que o framework fará todo o resto para você.
Como? Existe uma servlet específica do JSF chamada FacesServlet que faz toda a mágica para você.
Imagine essa servlet como um filtro: qualquer requisição que chegue em seu site passará por esse filtro e ele se encarregará de exibir sua página, instanciar os managedbeans e por ai vai.
Se você abrir seu web.xml verá a declaração dessa servlet, inclusive quando ela deve entrar em ação. Na aplicação, qualquer página acessada que termine com .xhml fará com que ela entre em ação.
Outro ponto interessante para quem vem de action based e vem para o JSF é que o primeiro define qual ação você chamará adicionando no atributo FORM do formulário. Isto é, quando você clica num botão chamará um método de alguma servlet indicada no form da página.
Já em JSF você indica a ação no próprio botão! Mas como isso é possível, já que perverte o funcionamento tradicional de uma aplicação web? JSF trabalha com o paradigma de componente e pensando em componente, principalmente se você já programou desktop, é o botão que dispara a ação, não o formulário.
Mas não se engane, no final o que o JSF gera para você é um código HTML que funcionará igual uma aplicação web tradicional, isto porque o navegador não entende componentes dos JSF. Quando você abre livro.xhtml.. tudo tem que ser convertido para HTML, CSS e JavaScript..as tecnologias que o navegador entende.
Consegui esclarecer sua dúvida?