close

Twarze serwera Java

Skocz do nawigacji Skocz do wyszukiwania
Oprogramowanie JavaServer Faces
Logo
Gatunek muzycznyFramework dla aplikacji internetowych
DeweloperFundacja Eclipse
Ostatnia wersja3.0.0 (7 października 2020 r.)
System operacyjnyWieloplatformowy
JęzykJawa
LicencjaEclipse Public License 2.0 i wyjątek linkowania GPL
( licencja bezpłatna )
Stronie internetowejjakarta.ee/specyfikacje/twarze/

JavaServer Faces (JSF) to technologia Java , oparta na architektonicznym wzorcu projektowym Model-View-Controller ( MVC ) , której celem jest uproszczenie tworzenia interfejsu użytkownika (UI) aplikacji internetowej ; dlatego może być uważany za strukturę dla komponentów interfejsu użytkownika po stronie serwera .

Opisuje go dokument specyfikacji (JSR 372 [1] ), w którym uczestniczyli członkowie Java Community Process. Co ciekawe, jednym z głównych architektów tej technologii był Craig R. McClanahan, ówczesny pracownik Sun Microsystems i twórca popularnego frameworka Struts . Istnieje kilka implementacji JavaServer Faces : oprócz Oracle, o nazwie Mojarra JavaServer Faces [2] . Frameworki oparte na jsf to: PrimeFaces , BootsFaces [3] , Icefaces oraz RichFaces [4] .

Struktura

Aplikacja Java Server Faces składa się z:

  • FacesServlet: jest to główny serwlet frameworka, który należy dodać w pliku web.xml;
  • konfiguracja: odbywa się poprzez plik faces-config.xml i adnotacje;
  • strony i komponenty : możliwe jest używanie tego frameworka z innym językiem deklaracji strony (zwanym również językiem deklaracji widoku), ale Facelety są zalecane od wersji 2.0 JSF;
  • prezenterzy : są odpowiedzialni za wyświetlanie komponentu użytkownikom i tłumaczenie danych wprowadzonych przez użytkowników na wartości komponentów;
  • konwertery : mają za zadanie przekonwertować wartości składników (które mogą być różnymi typami danych: daty, liczby, wartości logiczne itp.) do i z ciągów, które będą wyświetlane;
  • walidatory : zapewniają, że wartości wprowadzone przez użytkowników są prawidłowe;
  • backing beans i nawigacja : przez backing bean rozumiemy klasę Java, która ma adnotacje, dzięki którym jest widoczna i użyteczna w ramach JSF. Te klasy zawierają również logikę operacyjną i zarządzają przepływem nawigacji z jednej strony do drugiej. Aby przekształcić dowolną klasę w fasolę, wystarczy dodać adnotacje @Namedi @RequestScoped;
  • Obsługa AJAX : od wersji JSF 2.2 jest wbudowana obsługa wywołań AJAX ;
  • język wyrażeń : ten język jest używany na stronach JSF do przechwytywania zmiennych i działań między stronami i ziarnami pomocniczymi.

Serwlet Twarzy

FacesServlet to klasa, która jest częścią frameworka i implementuje specyfikację Servlet. Przechwytuje żądania docierające do serwera WWW i zarządza całym cyklem życia stron i fasoli.

Aby ten aplet mógł wykonywać swoje zadanie, konieczne jest dodanie go do web.xmlpliku naszej aplikacji internetowej:

<? wersja xml = "1.0" kodowanie = "UTF-8"?> 
<aplikacja internetowa  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 " > 
    < serwlet > 
        < nazwa-serwletu > facesServlet </servlet-name> 
        <servlet-class> javax.faces.webapp.FacesServlet </servlet-class> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name> facesServlet </servlet-name> 
        <url- wzorzec> * .xhtml </url-pattern> 
    </servlet-mapping> 
</web-app>

Konfiguracja

Konfigurację można przeprowadzić za pomocą plików XML lub adnotacji.

Aby skonfigurować za pomocą XML, możesz użyć pliku faces-config.xml, przykład jest następujący:

<? wersja xml = "1.0" kodowanie = "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 "  wersja = "2.3" > 
    <! - Wprowadź wszelkie niezbędne konfiguracje tutaj -> 
</faces-config>

Z drugiej strony plik, który jest niezbędny do aktywacji komponentu Context and Dependency Injection, który zajmuje się wspieranymi ziarnami, to beans.xml. Przykład:

<? wersja xml = "1.0" kodowanie = "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 "  fasola -discovery-mode = "all" > 
    <! - Wprowadź wszelkie niezbędne konfiguracje tutaj -> 
</beans>

Fasety

Facelety zastąpiły Java Server Pages jako preferowaną technologię widoku strony w JSF w wersji 2.0, ponieważ cykl życia strony JSP jest bardzo prosty, podczas gdy cykl życia strony może być bardzo skomplikowany.

Oto przykładowy facelet wyświetlający informacje o przeglądarce używanej przez użytkownika:

<! DOCTYPE html> 
<html  lang = "en"  xmlns = "http://www.w3.org/1999/xhtml"  xmlns: f = "http://xmlns.jcp.org/jsf/core"  xmlns: h = "http://xmlns.jcp.org/jsf/html" > 
    <h: head> 
        <title> Klient użytkownika </title> 
    </ h: head> 
    <h: body>
        # {nagłówek ["agent-użytkownik"]}
    </ h: ciało> 
</html>

Fasola tylna

Przez backed bean rozumiemy widoczną i modyfikowalną klasę w ramach frameworka. Możemy zmienić każdą klasę w fasolkę. Na przykład:

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

@Named 
@RequestScoped 
public  class  BackedBeanExample  { 
  private  String  attributeName  =  "Wartość domyślna" ;

  public  String  getAttributeName ()  { 
    return  nazwa_atrybutu ; 
  }

  public  void  setAttributeName ( String  attributeName )  { 
    to . nazwa_atrybutu  =  nazwa_atrybutu ; 
  } 
}

Powyższa lista definiuje fasolę zapasową o tej samej nazwie co klasa, ale z pierwszą małą literą, więc backedBeanExample. Ten ziarno ma atrybut string , który wywołuje attributeName, który ma domyślną wartość "Default value".

Możemy użyć tej fasoli wewnątrz twarzy w następujący sposób:

<! DOCTYPE html> 
<html  lang = "en"  xmlns = "http://www.w3.org/1999/xhtml"  xmlns: h = "http://xmlns.jcp.org/jsf/html" > 
    < h: head> 
        <title> Przykład fasoli </title> 
    </ h: head> 
    <h: body>
        # {backedBeanExample.attributeName}
    </ h: ciało> 
</html>

Krytyka

W Radarze Technologicznym ze stycznia 2014 r. firma ThoughtWorks napisała [5] :

„Nadal widzimy, że zespoły mają problemy z używaniem JSF — JavaServer Faces — i zalecamy unikanie tej technologii. Wydaje się, że zespoły wybierają JSF, ponieważ jest to standard J2EE, nie oceniając, czy model programowania im odpowiada. Uważamy, że JSF jest wadliwy, ponieważ próbuje oddzielić HTML, CSS i HTTP, dokładnie odwrotnie niż robią to nowoczesne frameworki internetowe. JSF, podobnie jak formularze internetowe ASP.NET, próbuje stworzyć statefulness w oparciu o bezstanowy protokół HTTP i kończy się tym, że powoduje cały szereg problemów związanych ze współdzielonym stanem po stronie serwera. Jesteśmy świadomi ulepszeń w JSF 2.0, ale uważamy, że model jest całkowicie zepsuty. Zalecamy zespołom korzystanie z prostych struktur oraz zrozumienie i zrozumienie technologii internetowych, w tym HTTP, HTML i CSS.”

ThoughtWorks zaleca unikanie tej technologii, ponieważ próbuje ona abstrahować na rzeczach ( HTML , CSS i HTTP ), które nie są abstrakcyjne, a inne frameworki nie są abstrakcyjne. Ponadto, zgodnie z raportem, JSF próbuje tworzyć stany nad protokołem HTTP, który jest bezstanowy, co spowodowałoby wiele problemów związanych ze stanem współdzielonym utrzymywanym po stronie serwera.

Odpowiedzi na krytykę

12 lutego 2014 r. główny programista PrimeFaces , Çağatay Çivici , odpowiedział na krytykę ThoughtWorks artykułem zatytułowanym JSF to nie to, co ci powiedzieli . [6] W artykule wyjaśniono, że krytyka nie uwzględnia najnowszych zmian, jakie przeszedł framework, a utrzymanie stanu po stronie serwera ułatwia tworzenie aplikacji internetowych. Çağatay Çivici zauważa, że ​​krytyka odnosi się do wersji 2.0 frameworka i ignoruje obsługę AJAX. W odpowiedzi pokazuje, jak łatwo stworzyć aplikację webową z PrimeFaces , która wykorzystuje bootstrap i wykonuje wywołania AJAX.

Notatki

  1. ^ JSR 372: JavaServer Faces (JSF 2,3) Specyfikacja.
  2. ^ Twarze Mojarra JavaServer
  3. ^ ButyTwarze
  4. ^ Bogate twarze
  5. ^ Styczeń 2014 Technology Radar ( PDF ), na stronie thinkworks.fileburst.com . Pobrano 30 stycznia 2014 r. (Zarchiwizowane z oryginału 7 kwietnia 2016 r.) .
  6. ^ JSF nie jest już tym, o czym ci mówiono

Powiązane pozycje

Inne projekty

Linki zewnętrzne