JavaServer Faces

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Java Server Faces
software
Siglă
Tip Cadrul pentru aplicații web
Dezvoltator Oracol
Ultima versiune 2.3.0 (28 martie 2017)
Sistem de operare Multiplatform
Limba Java
Licență Licența publică Eclipse 2.0 și excepția de legare GPL
( licență gratuită )
Site-ul web javaserverfaces.github.io/

JavaServer Faces (JSF) este o tehnologie Java , bazată pe modelul de proiectare arhitecturală Model-View-Controller ( MVC ), al cărui scop este de a simplifica dezvoltarea interfeței cu utilizatorul (UI) a unei aplicații web ; prin urmare, poate fi considerat un cadru pentru componentele interfeței utilizatorului de pe server .

Este descris de un document de specificații (JSR 372 [1] ) la care au participat membrii procesului comunitar Java. Interesant este că unul dintre principalii arhitecți ai acestei tehnologii a fost Craig R. McClanahan, pe atunci angajat al Sun Microsystems și creatorul popularului cadru Struts . Există câteva implementări ale JavaServer Faces: pe lângă cea a Oracle, numită Mojarra JavaServer Faces [2] . Cadrul bazat pe jsf sunt: PrimeFaces , BootsFaces [3] , Icefaces și RichFaces [4] .

Structura

O aplicație Java Server Faces constă din:

  • FacesServlet: este servletul principal al cadrului, care trebuie adăugat în fișierul web.xml;
  • configurare: se face prin fișierul faces-config.xml și adnotări;
  • pagini și componente : este posibil să utilizați acest cadru cu un limbaj de declarație de pagină diferit (denumit și View Declaration Language), dar fațetele sunt cele recomandate începând cu versiunea 2.0 a JSF;
  • prezentatori : sunt responsabili de afișarea unei componente utilizatorilor și de traducerea datelor introduse de utilizatori în valori ale componentelor;
  • convertoare : au sarcina de a converti valorile componentelor (care pot fi diferite tipuri de date: date, numere, booleeni etc.) în și din șirurile care vor fi afișate;
  • validatori : se asigură că valorile introduse de utilizatori sunt valabile;
  • backing beans și navigare : prin backing bean ne referim la o clasă Java care are adnotări care o fac vizibilă și utilizabilă în cadrul JSF. Aceste clase conțin, de asemenea, logica operațională și gestionează fluxul de navigare de la o pagină la alta. Pentru a transforma orice clasă într - un suport de fasole, pur și simplu adăugați @Named și @RequestScoped adnotări;
  • Suport AJAX : Începând cu versiunea JSF 2.2, există suport încorporat pentru apelurile AJAX ;
  • limbaj pentru expresii : acest limbaj este utilizat în paginile JSF pentru a conecta variabile și acțiuni între pagini și fasole de sprijin.

FacesServlet

FacesServlet este o clasă care face parte din cadrul și implementează specificația Servlet. Acesta interceptează cererile care sosesc la serverul web și gestionează întregul ciclu de viață al paginilor și sprijină fasole.

Pentru ca acest servlet să își îndeplinească sarcina, este necesar să-l adăugăm în fișierul web.xml al aplicației noastre web:

 <? xml version = "1.0" encoding = "UTF-8"?>
<web-app xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation = "http : //xmlns.jcp.org/xml/ns/javaee web-app_4_0.xsd " version = " 4.0 " >
    <servlet>
        <servlet-name> facesServlet </servlet-name>
        <servlet-class> javax.faces.webapp.FacesServlet </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name> facesServlet </servlet-name>
        <url-pattern> * .xhtml </url-pattern>
    </servlet-mapping>
</web-app>

Configurare

Configurarea se poate face prin fișiere XML sau adnotări.

Pentru a configura prin XML, puteți utiliza fișierul faces-config.xml , un exemplu este următorul:

 <? xml version = "1.0" encoding = "UTF-8"?>
<faces-config xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation = "http : //xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd " version = " 2.3 " >
    <! - Introduceți aici toate configurațiile necesare ->
</faces-config>

Un fișier care, pe de altă parte, este necesar pentru a activa componenta Context și injecție de dependență, care se ocupă de fasolea susținută, este beans.xml . Un exemplu:

 <? xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation = "http: / /xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd " bean-discovery-mode = " all " >
    <! - Introduceți aici toate configurațiile necesare ->
</beans>

Fațete

Fațetele au înlocuit Java Server Pages ca tehnologie de vizualizare preferată în versiunea 2.0 JSF, deoarece ciclul de viață al unui JSP este foarte simplu, în timp ce ciclul de viață al unei fațete poate fi foarte elaborat.

Iată un exemplu de fațetă care afișează informații despre browserul utilizat de utilizator:

 <! DOCTYPE html>
<html lang = "ro" xmlns = "http://www.w3.org/1999/xhtml" xmlns: f = "http://xmlns.jcp.org/jsf/core" xmlns: h = "http: //xmlns.jcp.org/jsf/html " >
    <h: cap>
        <title> Agent de utilizator </title>
    </ h: cap>
    <h: corp>
        # {header ["user-agent"]}
    </ h: corp>
</html>

Fasole susținute

Prin fasole susținută înțelegem o clasă vizibilă și modificabilă în cadrul. Putem transforma orice clasă într-o boabă susținută. De exemplu:

 import javax.enterprise.context.RequestScoped ;
import javax.inject.Named ;

@Numit
@RequestScoped
clasă publică BackedBeanExample {
  private String attributeName = "Valoare implicită" ;

  public String getAttributeName () {
    return attributeName ;
  }

  public void setAttributeName ( String attributeName ) {
    aceasta . attributeName = atributNume ;
  }
}

Listarea de mai sus definește un bean susținut cu același nume ca și clasa, dar cu prima literă minusculă, deci backedBeanExample . Acest bean are un attributeName tip șir numit attributeName , care are o valoare implicită care este "Default value" .

Putem folosi acest bob în interiorul unei fațete după cum urmează:

 <! DOCTYPE html>
<html lang = "ro" xmlns = "http://www.w3.org/1999/xhtml" xmlns: h = "http://xmlns.jcp.org/jsf/html" >
    <h: cap>
        <title> Exemplu de fasole susținută </title>
    </ h: cap>
    <h: corp>
        # {backedBeanExample.attributeName}
    </ h: corp>
</html>

Critici

În radarul tehnologic din ianuarie 2014, ThoughtWorks a scris [5] :

„Continuăm să vedem echipele care se confruntă cu probleme folosind JSF - JavaServer Faces - și vă recomandăm să evitați această tehnologie. Echipele par să aleagă JSF deoarece este un standard J2EE fără a evalua cu adevărat dacă modelul de programare li se potrivește. Credem că JSF este defect, deoarece încearcă să abstracteze HTML, CSS și HTTP, exact inversul a ceea ce fac cadrele web moderne. JSF, la fel ca formele web ASP.NET, încearcă să creeze statualitate pe partea de sus a protocolului apatrid HTTP și ajunge să provoace o serie întreagă de probleme care implică starea partajată a serverului. Suntem conștienți de îmbunătățirile din JSF 2.0, dar credem că modelul este fundamental rupt. Recomandăm echipelor să utilizeze cadre simple și să accepte și să înțeleagă tehnologiile web, inclusiv HTTP, HTML și CSS. "

ThoughtWorks recomandă evitarea acestei tehnologii, întrucât încearcă să abstracteze despre lucruri ( HTML , CSS și HTTP ) despre care nu doriți să faceți abstracții, iar alte cadre nu să le abstrați. Mai mult, conform raportului, JSF încearcă să creeze stări pe partea de sus a protocolului HTTP care este apatrid, ceea ce ar cauza multe probleme legate de o stare partajată menținută pe partea serverului.

Răspunsuri la critici

Pe 12 februarie 2014, dezvoltatorul șef PrimeFaces Çağatay Çivici, a răspuns criticilor ThoughtWorks cu un articol intitulat JSF Is No Longer What They Told You . [6] Articolul explică faptul că criticile nu iau în considerare cele mai recente evoluții pe care le-a avut cadrul și că menținerea unei stări de partea serverului facilitează dezvoltarea aplicațiilor web. Çağatay Çivici observă că criticile se referă la versiunea 2.0 a cadrului și ignoră suportul AJAX. În răspuns, el arată cât de ușor este să creezi o aplicație web cu PrimeFaces care utilizează bootstrap și efectuează apeluri AJAX.

Notă

  1. ^ JSR 372: Specificații JavaServer Faces (JSF 2.3).
  2. ^ Mojarra JavaServer Faces
  3. ^ BootsFaces
  4. ^ RichFaces
  5. ^ Ianuarie 2014 Technology Radar ( PDF ), la thoughtworks.fileburst.com . Adus la 30 ianuarie 2014 (arhivat din original la 7 aprilie 2016) .
  6. ^ JSF nu este ceea ce vi s-a spus din nou

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității GND ( DE ) 4780730-1
Internet Portal internet : accesați intrările Wikipedia care se ocupă de internet