A JavaServer Faces (röviden JSF) egy Java-alapú MVC keretrendszer webes felhasználói felületek fejlesztéséhez. A komponensvezérelt UI-tervezési modellre épül.
View template-nek vagy Faceletnek nevezett XML fájlokat használ a megjelenítési modell leírására. A kéréseket a FacesServlet dolgozza fel, ami ezután betölti a megfelelő view template-et, felépíti a komponensfát, kezeli az eseményeket és létrehozza (generálja) a választ (többnyire HTML vagy XHTML formátumban) a kliensnek. A felhasználói felület komponenseit (és egyéb objektumokat) minden lekérés végén elmenti, majd ugyanazon view következő előállításakor újra betölti. Ennek a mentési/betöltési folyamatnak több különböző formája ismert, szerver és kliens-oldalon is lehetséges.
Alapértelmezésben a JSF 1.x JSP-t használ a megjelenítésre, de más technológiák is elérhetőek hozzá, mint pl. a XUL vagy a Faceletek. A JSF 2 esetében már a Faceletek használata az alapértelmezett.
A JSF architektúra tartalmazza az alábbiakat:
A JSF grafikus komponenseit az alábbi komponenscsaládokba sorolják:
<input> elem.<a> tag, amely submit gombként viselkedik.<table> elem.<form> elem.<img> elem.<input> elem.<input> elem.<input> elem.<textarea> elem.<label> elem.<a> elem.<span> elem.<table> elem.<input> elem.<input> elemek listája.<input> elem.