JSF pq usa extensao JSP

Pq as paginas jsf usam a extensao jsp, sendo que no web.xml o mapeamento do *.jsf é para o FacesServlet?

Struts, WW, Spring…

É isso mesmo, no link vc coloca jsf e ai manda a respon p outro xml

entao o FacesServlet recebe a requisao e ele apenas troca a extensao pra jsp? (sempre .jsp???) tirando a extensao .jsf ou .faces mapeada?

a troca da estao .jsf pra .jsp é feita pelo Servlet do JSF?

FacesServlet não troca a extensão ele redireciona (forward) para uma jsp.

Não existe troca de extensão. Existe um mapeamento onde todas as requisições deverão passar pelo FacesServlet.

Normalmente o mapeamento é assim:

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

e / ou

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

O web.xml não mapeia arquivos para servlets ou filters. Ele mapeia URLs enviadas pelo usuário para servlets ou filters. Depois o servlet ou filter faz um forward pra um arquivo qualquer.

Por isso dá pra colocar as URLs que lhe der na tela, mesmo que não haja um diretório exatamente igual.