Jaka jest różnica między JSF, Servlet i JSP?

826

Mam parę pytań. To są :

  1. W jaki sposób JSP i Servlet są ze sobą powiązane?
  2. Czy JSP jest jakimś serwletem?
  3. Jak JSP i JSF są ze sobą powiązane?
  4. Czy JSF jest jakimś JSP opartym na interfejsie użytkownika przed kompilacją, takim jak ASP.NET-MVC?
Cheung
źródło
3
W JSF 2.0+ xml nie jest konieczne.
Divyesh Kanzariya

Odpowiedzi:

1229

JSP (strony JavaServer)

JSP to technologia widoku Java działająca na serwerze, która umożliwia pisanie tekstu szablonów w językach po stronie klienta (takich jak HTML, CSS, JavaScript itp.). JSP obsługuje taglibs , które są wspierane przez fragmenty kodu Java, które pozwalają dynamicznie kontrolować przepływ strony lub dane wyjściowe. Dobrze znanym taglibem jest JSTL . JSP obsługuje także język wyrażeń , który może być używany do uzyskiwania dostępu do danych zaplecza (poprzez atrybuty dostępne na stronie, w żądaniach, zakresach sesji i aplikacjach), głównie w połączeniu z taglibs.

Gdy JSP jest wymagane po raz pierwszy lub podczas uruchamiania aplikacji internetowej, kontener serwletu skompiluje go do klasy rozszerzającej HttpServleti będzie go używać przez cały okres istnienia aplikacji internetowej. Wygenerowany kod źródłowy można znaleźć w katalogu roboczym serwera. Na przykład w Tomcat jest to /workkatalog. Na żądanie JSP kontener serwletu wykona skompilowaną klasę JSP i wyśle ​​wygenerowane dane wyjściowe (zwykle tylko HTML / CSS / JS) przez serwer sieciowy przez sieć do strony klienta, co z kolei wyświetli je w przeglądarce internetowej.

Serwlety

Servlet to interfejs programowania aplikacji Java (API) działający na maszynie serwerowej, który przechwytuje żądania złożone przez klienta i generuje / wysyła odpowiedź. Dobrze znanym przykładem jest HttpServletmetoda, która zapewnia metody przechwytywania żądań HTTP przy użyciu popularnych metod HTTP, takich jak GETi POST. Możesz skonfigurować HttpServlets, aby nasłuchiwał określonego wzorca adresu URL HTTP, który można konfigurować w Java EE 6web.xml lub od niedawna , z adnotacjami.@WebServlet

Gdy serwlet zostanie po raz pierwszy zamówiony lub podczas uruchamiania aplikacji sieci web, kontener serwletu utworzy jego instancję i zachowa ją w pamięci przez cały okres istnienia aplikacji internetowej. Ta sama instancja zostanie ponownie użyta dla każdego przychodzącego żądania, którego adres URL pasuje do wzorca adresu URL serwletu. Możesz uzyskać dostęp do danych żądania HttpServletRequesti obsłużyć odpowiedź przez HttpServletResponse. Oba obiekty są dostępne jako argumenty metod w dowolnej z przesłanianych metod HttpServlet, takich jak doGet()i doPost().

JSF (JavaServer Faces)

JSF jest opartym na komponentach frameworkiem MVC, który jest zbudowany na interfejsie API serwletów i zapewnia komponenty za pośrednictwem taglibs, które mogą być używane w JSP lub dowolnej innej technologii widoku opartej na Javie, takiej jak Facelets . Facelets jest znacznie bardziej odpowiedni dla JSF niż JSP. Zapewnia to doskonałe możliwości szablonowania, takie jak komponenty kompozytowe , podczas gdy JSP w zasadzie oferuje tylko <jsp:include>szablonowanie w JSF, dzięki czemu jesteś zmuszony tworzyć niestandardowe komponenty z surowym kodem Java (który jest nieco nieprzejrzysty i dużo żmudnej pracy), gdy chcesz zastąpić powtarzającą się grupę komponentów jednym komponentem. Od JSF 2.0 JSP jest przestarzałe jako technologia wyświetlania na korzyść Facelets.

Uwaga : Sam JSP NIE jest przestarzały, tylko kombinacja JSF z JSP jest przestarzała.

Uwaga : JSP ma świetne możliwości tworzenia szablonów za pomocą Taglibs, szczególnie w wariancie ( Tag File ). Brakuje szablonów JSP w połączeniu z JSF.

Będąc strukturą MVC ( Model-View-Controller ), JSF stanowi FacesServletjedyny kontroler żądanie-odpowiedź . Wymaga od Ciebie wszystkich standardowych i żmudnych prac związanych z żądaniami / odpowiedziami HTTP, takich jak zbieranie danych wejściowych użytkownika, sprawdzanie poprawności / konwersja, umieszczanie ich w obiektach modelu, wywoływanie akcji i renderowanie odpowiedzi. W ten sposób otrzymujesz stronę JSP lub Facelets (XHTML) dla View i klasę JavaBean jako Model . Komponenty JSF są wykorzystywane do wiązania się widokiem z modelu (takie jak kontrola web ASP.NET robi) i FacesServletwykorzystuje drzewo składnik JSF , aby wykonać całą pracę.

Powiązane pytania

BalusC
źródło
8
@Shashank: Nie do końca. Tylko <c:forEach>znacznik pochodzi z JSTL. Zobacz także stackoverflow.com/tags/jstl/info
BalusC
1
Tak. <mytag:doesSomething/>wygląda jak tag niestandardowy i <jsp:attribute>tag jsp.
Shashank Kadne
3
Ponieważ jest to bardzo popularna odpowiedź, chcę dodać bardzo ważny bit, którym są pliki znaczników JSP, które pozwalają na tworzenie niestandardowych znaczników do składu i układu strony bez pisania kodu Java. Ta funkcja jest wyjątkowo przydatna i od wielu lat stanowi część standardu, ale nadal nie jest w pełni wykorzystywana.
jiggy
1
@johnny Facelets jest preferowaną technologią wyświetlania od czasu wydania Java EE 6 w 2009 roku ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). Minimalny zestaw technologii do tworzenia aplikacji internetowych Java nie jest wyższy niż w większości innych języków, ale istnieje wiele innych opcji i konkurentów, co jest mylące dla początkujących. Tworzenie stron internetowych w Ruby? Pierwszy wybór jest oczywisty.
DavidS
1
@BalusC +1, aby uzyskać szczegółowe wyjaśnienie. Moja ulubiona odpowiedź.
Anish B.
84

Zobacz http://www.oracle.com/technetwork/java/faq-137059.html

Technologia JSP jest częścią rodziny technologii Java. Strony JSP są kompilowane w serwlety i mogą wywoływać komponenty JavaBeans (komponenty) lub komponenty Enterprise JavaBeans (komponenty komponentu Enterprise) w celu wykonania przetwarzania na serwerze. Jako taka, technologia JSP jest kluczowym składnikiem wysoce skalowalnej architektury dla aplikacji internetowych.

Zobacz https://jcp.org/en/introduction/faq

Odp .: Technologia JavaServer Faces to platforma do tworzenia interfejsów użytkownika dla aplikacji internetowych. Technologia JavaServer Faces obejmuje:

Zestaw interfejsów API do: reprezentowania komponentów interfejsu użytkownika i zarządzania ich stanem, obsługi zdarzeń i sprawdzania poprawności danych wejściowych, definiowania nawigacji strony oraz wspierania internacjonalizacji i dostępności.

Niestandardowa biblioteka znaczników JavaServer Pages (JSP) do wyrażania interfejsu JavaServer Faces na stronie JSP.

JSP to wyspecjalizowany rodzaj serwletu.

JSF to zestaw tagów, których można używać z JSP.

S.Lott
źródło
6
„JSP to wyspecjalizowany rodzaj serwletu. JSF to zestaw znaczników, których można używać z JSP.” To stwierdzenie najlepiej opisuje związek między tymi trzema!
bez
34

Z perspektywy przeglądarki / klienta

Zarówno JSP, jak i JSF wyglądają tak samo, zgodnie z wymaganiami aplikacji, JSP jest bardziej odpowiedni dla aplikacji opartych na żądaniach i odpowiedziach.

JSF jest przeznaczony dla bogatszych aplikacji internetowych opartych na zdarzeniach. Widzę zdarzenie o wiele bardziej szczegółowe niż żądanie / odpowiedź.

Z perspektywy serwera

Strona JSP jest konwertowana na serwlet i ma tylko minimalne działanie.

Strona JSF jest konwertowana na drzewo komponentów (przez wyspecjalizowane FacesServlet) i podąża za cyklem życia komponentów określonym przez spec.

Vh24
źródło
23

Serwlety:

Java Servlet API umożliwia programistom Java pisanie kodu po stronie serwera w celu dostarczania dynamicznej zawartości WWW. Podobnie jak inne zastrzeżone interfejsy API serwera WWW, Java Servlet API oferuje lepszą wydajność w porównaniu z CGI; ma jednak kilka kluczowych dodatkowych zalet. Ponieważ serwlety zostały zakodowane w Javie, zapewniają podejście projektowe zorientowane obiektowo (OO) i, co ważniejsze, mogą działać na dowolnej platformie. W ten sposób ten sam kod był przenośny dla dowolnego hosta obsługującego Javę. Serwlety znacznie przyczyniły się do popularności Java, ponieważ stała się szeroko stosowaną technologią do tworzenia aplikacji sieciowych po stronie serwera.

JSP:

JSP jest oparty na serwletach i zapewnia prostsze, oparte na stronach rozwiązanie do generowania dużych ilości dynamicznej treści HTML dla interfejsów użytkownika WWW. JavaServer Pages umożliwia programistom i projektantom stron internetowych edycję stron HTML za pomocą specjalnych znaczników dla dynamicznych części Java. JavaServer Pages działa poprzez posiadanie specjalnego serwletu znanego jako kontener JSP, który jest zainstalowany na serwerze WWW i obsługuje wszystkie żądania wyświetlenia strony JSP. Kontener JSP tłumaczy żądany JSP na kod serwletu, który jest następnie kompilowany i natychmiast wykonywany. Kolejne żądania do tej samej strony wywołują po prostu serwlet środowiska wykonawczego dla tej strony. Jeśli zmiana zostanie wprowadzona do strony JSP na serwerze, żądanie jej wyświetlenia wyzwala inne tłumaczenie, kompilację i ponowne uruchomienie serwletu wykonawczego.

JSF:

JavaServer Faces to standardowa platforma Java do budowania interfejsów użytkownika dla aplikacji internetowych. Co najważniejsze, upraszcza tworzenie interfejsu użytkownika, który często jest jedną z trudniejszych i żmudniejszych części tworzenia aplikacji internetowych.
Chociaż możliwe jest budowanie interfejsów użytkownika przy użyciu podstawowych technologii Java Web (takich jak serwlety Java i strony JavaServer) bez kompleksowej struktury przeznaczonej do tworzenia aplikacji internetowych dla przedsiębiorstw, te podstawowe technologie mogą często prowadzić do problemów związanych z programowaniem i utrzymaniem. Co ważniejsze, zanim programiści osiągną rozwiązanie o jakości produkcyjnej, ten sam zestaw problemów rozwiązanych przez JSF zostanie rozwiązany w niestandardowy sposób. JavaServer Faces został zaprojektowany w taki sposób, aby uprościć tworzenie interfejsów użytkownika dla aplikacji Java Web na następujące sposoby:
• Zapewnia zorientowane na komponenty, niezależne od klienta podejście programistyczne do budowania interfejsów użytkownika, zwiększając w ten sposób produktywność programistów i łatwość użytkowania.
• Upraszcza dostęp do danych aplikacji i zarządzanie nimi z internetowego interfejsu użytkownika.
• Automatycznie zarządza stanem interfejsu użytkownika między wieloma żądaniami i wieloma klientami w prosty i dyskretny sposób.
• Dostarcza platformę programistyczną przyjazną dla zróżnicowanej grupy programistów o różnych zestawach umiejętności.
• Opisuje standardowy zestaw wzorów architektonicznych dla aplikacji internetowej.

[ Źródło: Pełne odniesienie: JSF ]

Kishor Prakash
źródło
3
To nie byłem ja, ale wyobrażam sobie, że to dlatego, że po prostu skopiowałeś i wkleiłeś odpowiedź z książki.
mawburn
7
@Oberon: Dzięki za odpowiedź. Znalezienie dokładnych słów zajęło mi trochę czasu, więc zdecydowałem się na książkę. Jeśli to nie jest właściwe, możesz zaproponować mi usunięcie odpowiedzi. Z przyjemnością to zrobię.
Kishor Prakash
18

Są też sytuacje, w których możesz faworyzować JSP nad JSF. Charakter aplikacji powinien decydować o wyborze technologii.

Jeśli masz bogatą interakcję z GUI i potrzebujesz dużo skryptów Java, wybierz JSF. Zasadniczo, jeśli architektura aplikacji GUI jest zorientowana na komponenty, a nawet napędzana jak Swing, JSF jest najlepsza.

Jeśli aplikacja jest tylko prostym formularzem, nie wymaga wiele interakcji z GUI, JSP może się przydać, jeśli nauka nowej technologii jest narzutem, a złożona struktura jest zbędna.

Karthi
źródło
13

Servlet - to warstwa po stronie serwera Java.

  • JSP - to Servlet z HTML
  • JSF - komponenty oparte na bibliotekach tagów
  • JSP - jest konwertowany na serwlet raz, gdy serwer otrzymał żądanie.
rechot
źródło
2
JSP jest konwertowany na serwlet raz, gdy serwer otrzyma żądanie.
rechotali
... kiedy serwer otrzymał PIERWSZE żądanie. Pamięć podręczna.
dbalakirev
10

to prawda, że ​​JSP jest konwertowany na serwlet w momencie wykonywania, a JSF jest zupełnie nową rzeczą, aby uczynić stronę bardziej czytelną, ponieważ JSF pozwala na pisanie wszystkich struktur programistycznych w postaci tagu.

mahesh
źródło
6

Podstawowa różnica między serwletami a JSP polega na tym, że w serwletach piszemy kod java, w tym, że osadzamy kod HTML, aw przypadku JSP jest tylko odwrotna wielkość liter. W JSP piszemy kod HTML, w którym osadzamy kod Java za pomocą tagów dostarczonych przez JSP.

użytkownik3608245
źródło
5

Java Server Pages (JSP) to technologia Java, która umożliwia deweloperom i projektantom sieci Web szybkie tworzenie i łatwą obsługę bogatych w informacje, dynamicznych stron internetowych, które wykorzystują istniejące systemy biznesowe. Technologia JSP oddziela interfejs użytkownika od generowania treści, umożliwiając projektantom zmianę ogólnego układu strony bez zmiany podstawowej zawartości dynamicznej.

Facelets to pierwszy język deklaracji stron inny niż JSP zaprojektowany dla JSF (Java Server Faces), który zapewnia prostszy i bardziej wydajny model programowania dla programistów JSF w porównaniu do JSP. Rozwiązuje różne problemy występujące w JSP podczas tworzenia aplikacji internetowych.

Oto tabela, która porównuje cechy skrobaków i fasetek:

wprowadź opis zdjęcia tutaj Źródło

Yster
źródło
0
JSP:means HTML+Java Code:

JSP ma własny cykl życia jsp_init () jsp_service () jsp_destroy

Po pierwszym żądaniu JSP przekonwertować na plik .java. Istnieją trzy typy tagów, których używamy
1.) Bez skryptów

<%  %>

Tutaj programista może zadeklarować wszystkie rzeczy, które programista chce pobrać dane

2.) Tag wyrażenia

<%=  %>

Tutaj programista może użyć niektórych danych związanych z drukowaniem

3.) Deklaracja

<!% %>

Tutaj programista może zadeklarować niektóre dane związane z metodą.

Servlet:

Serwlet ma własny cykl życia.

init()
service()
destroy()

Po pierwszym żądaniu kontener odczyta dane z pliku web.xml, a po zakończeniu wyświetli się powitanie.
Teraz po wykonaniu akcji przeszuka adres URL, a po tym procesie przeszuka tam konkretny serwlet. operacja usługi zostanie wykonana.

JSF:

JSF ma własny interfejs użytkownika, a jego cykl życia może działać na sześć sposobów,

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

W przypadku interfejsu użytkownika tutaj w tabeli tutaj używamy siatki panelu i są do tego różne twarze.

Rich Faces
Prime Faces.
Ankit
źródło
-1

Strony JSP są komponentem widokowym MVC (Model View Controller). Kontroler przyjmuje przychodzące żądanie i przekazuje je do modelu, którym może być komponent bean, który ma dostęp do bazy danych. JSP następnie formatuje dane wyjściowe za pomocą HTML, CSS i JavaScript, a następnie dane wyjściowe są wysyłane z powrotem do requestera.

metrangia
źródło
-1

JSF to zaawansowana platforma, w której bardzo łatwo jest wdrożyć architekturę opartą na Model-View-Controller (MVC) dla projektów. Główną zaletą JSF nad JSP jest łatwe dynamiczne renderowanie komponentów w przeglądarce na podstawie warunków i łatwa integracja zdarzeń ajax.

Interfejs aplikacji JSF, tj. Pliki xhtml, są pokazywane użytkownikowi za pośrednictwem przeglądarki. Te pliki xhtml wewnętrznie wywołują zarządzane komponenty bean, np. Kontrolery, w których zapisywana jest logika aplikacji.

Kontrolery wewnętrznie wywołują różne usługi komunikujące się z bazą danych (przy użyciu Hibernacji lub JPA API). W ten sposób przepływ odbywa się w skrócie.

JSF jest także używany w połączeniu z RichFaces, który jest ramą zapewniającą bogaty wygląd aplikacji.

JSF + RichFaces + Hibernate / JPA to dobra technologia do nauki na pewno!

Nikhil
źródło
-2

Jsp ma również wbudowany kod serwletu, który nie wymaga żadnej zewnętrznej kompilacji, można go uruchomić bezpośrednio. Zmiany zostaną wprowadzone w jsp bezpośrednio w przeglądarce.

Serwlet musi zostać skompilowany (tzn. Będzie miał określone tworzenie klas)

Jsf jest komponentem widokowym MVC Framework

Mahender Reddy Yasa
źródło
-2

JSP oznacza JAVA SERVER PAGE ........ jsp nie jest serwletem. Jsp używa kodu i znacznika HTML, ponieważ nie trzeba tworzyć kodu HTML i serwletu osobno. Jsp odgrywają wspaniałą rolę w aplikacji internetowej. Servlet to klasa Java, która odgrywa rolę w przekształcaniu strony HTML ze statycznej na dynamiczną.

Roopam
źródło
2
Pliki JSP są rzeczywiście konwertowane na komponenty serwletu. „Pliki JSP są tłumaczone na serwlety w czasie wykonywania”. Źródło: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev
-2

Serwlety to programy Java po stronie serwera, które działają w kontenerze WWW. Głównym celem serwletu jest przetwarzanie żądań otrzymanych od klienta.

Strony serwera Java służą do tworzenia dynamicznych stron internetowych. Jsp wprowadzono do pisania kodu Java i HTML w jednym pliku, co nie było łatwe w programie serwletów. A plik jsp jest konwertowany na serwlet Java podczas tłumaczenia.

Java Server Faces to platforma internetowa MVC, która upraszcza tworzenie interfejsu użytkownika.

Hetal Rachh
źródło