Co to jest serwlet Java?

277

Czytałem wiele artykułów, aby zrozumieć serwlet Java, ale mi się nie udało.

Czy możesz krótko przedstawić serwlety Java (w prostym języku). Jak to jest serwlet? Jakie są zalety? I to wszystko.

Nie rozumiem różnicy między językami programowania po stronie serwera (PHP, ASP) a serwletami.

hardik
źródło
38
Najedź na servletstag poniżej pytania, aż pojawi się czarna skrzynka. Kliknij tam link informacyjny .
BalusC
1
Serwlety Możesz na to spojrzeć. Myślę, że to są szczegóły i autentyczność.
shohan

Odpowiedzi:

336

Serwlet jest po prostu klasą, która odpowiada na określony rodzaj żądania sieciowego - najczęściej żądania HTTP. Zasadniczo serwlety są zwykle używane do implementacji aplikacji internetowych - ale istnieją również różne frameworki, które działają nad serwletami (np. Struts), aby zapewnić abstrakcję wyższego poziomu niż „tutaj jest żądanie HTTP, napisz do tego poziomu odpowiedzi HTTP”, które serwlety zapewniać.

Serwlety działają w kontenerze serwletów, który obsługuje stronę sieciową (np. Analizowanie żądania HTTP, obsługa połączeń itp.). Jednym z najbardziej znanych kontenerów serwletów typu open source jest Tomcat .

Jon Skeet
źródło
16
Serwlety to fragmenty kodu Java wywoływane przez serwer sieciowy wewnątrz samego serwera WWW. Jeśli chcesz czegoś, co wygląda jak PHP lub ASP, potrzebujesz stron JSP (które są specjalnym rodzajem serwletów)
Thorbjørn Ravn Andersen
3
Dziękuję za odpowiedź, ale nadal nie mogę naprawdę wykorzystać serwletów, lepiej byłoby, gdybyś mógł wyjaśnić na przykład, jak sitution, gdzie możemy użyć serwletów. nie rozumiałem użycia serwletu tak, jak serwlet może zrobić, czego nie potrafią inne języki programowania po stronie serwera.
hardik
4
@Hardik: to nie jest tak, że mogą robić wszystko, czego nie da się zrobić inaczej. Serwlety to tylko powszechna technologia do pracy po stronie serwera w języku Java. Serwlety nie są językiem - podobnie jak ASPX. Obie są platformami, których używasz w połączeniu z innym językiem - zwykle Java w przypadku serwletów.
Jon Skeet
7
@Hardik: Jak napisałem w swoim poście, serwlety to klasy, które działają wewnątrz kontenera serwletów. Kontener serwletów może obsługiwać kilka serwletów jednocześnie.
Jon Skeet
5
@Hardik: Tak, dokładnie. Serwlet może dostarczyć HTML do wyświetlenia formularza, a także do działania po przesłaniu. Serwletów można również używać do wdrażania usług sieciowych. Oni mogą być wykorzystywane do innych protokołów oprócz HTTP, ale HTTP jest zdecydowanie najczęstszym transportu obsługiwane przez serwlety.
Jon Skeet
102

Serwlet w swej istocie jest klasą Java; który może obsłużyć żądania HTTP. Zazwyczaj wewnętrzną precyzję odczytu żądania HTTP i odpowiedzi za pośrednictwem drutu zajmują pojemniki takie jak Tomcat. Odbywa się to tak, że jako programista po stronie serwera możesz skupić się na tym, co zrobić z żądaniem i odpowiedziami HTTP, i nie zawracać sobie głowy kodem zajmującym się obsługą sieci itp. Kontener zajmie się pakowaniem całej zawartości Obiekt odpowiedzi HTTP i wyślij go do klienta (powiedzmy w przeglądarce).

Teraz następnym logicznym pytaniem jest to, kto decyduje, co powinien zrobić kontener? Odpowiedź brzmi; W świecie Java przynajmniej jest prowadzony (uwaga: nie użyłem słowa kontrolowanego) według specyfikacji. Na przykład specyfikacje serwletu (patrz zasób 2) określają, co musi być w stanie wykonać serwlet. Więc jeśli możesz napisać implementację specyfikacji, gratulacje, właśnie stworzyłeś kontener (technicznie kontenery takie jak Tomcat również implementują inne specyfikacje i robią skomplikowane rzeczy, takie jak niestandardowe moduły ładujące itp., Ale masz pomysł).

Zakładając, że masz kontener, twoje serwlety są teraz klasami Java, których cykl życia będzie utrzymywany przez kontener, ale ich reakcja na przychodzące żądania HTTP zostanie podjęta przez ciebie. Robisz to, pisząc, co chcesz zrobić we wcześniej zdefiniowanych metodach, takich jak init (), doGet (), doPost () itp. Spójrz na Zasób 3.

Oto zabawne ćwiczenie dla Ciebie. Utwórz prosty serwlet jak w Resource 3 i napisz kilka instrukcji System.out.println () w jego metodzie konstruktora (Tak, możesz mieć konstruktor serwletu), metody init (), doGet (), doPost () i uruchom serwlet w tomcat. Zobacz dzienniki konsoli i dzienniki tomcat.

Mam nadzieję, że to pomoże, szczęśliwej nauki.

Zasoby

  1. Zobacz, jak wygląda HTTP aplet tutaj (przykład Tomcat).

  2. Specyfikacja serwletu .

  3. Prosty przykład serwletu .

  4. Zacznij czytać książkę online / PDF Zapewnia również pobranie całej książki. Może to pomoże. jeśli dopiero zaczynasz serwlety, dobrym pomysłem jest przeczytanie materiału wraz z API serwletów. jest to wolniejszy proces uczenia się, ale jest o wiele bardziej pomocny w zrozumieniu podstaw.

Ayusman
źródło
12
Odpowiedzi zawierające tylko łącza nie są zalecane w przypadku przepełnienia stosu, ponieważ zasoby, do których prowadzą łącza, mogą stać się niedostępne w przyszłości lub mogą ulec zmianie. Rozważ podsumowanie odpowiedniej treści linku w swojej odpowiedzi, aby go poprawić.
6
@Ciastko doceniają Twoje konstruktywne opinie. Próbowałem dodać trochę mięsa do odpowiedzi. Dziękujemy za ulepszenie społeczności.
Ayusman,
34

Oprócz powyższego i tylko po to, aby zaznaczyć oczywiste krwawienie ...

Dla wielu osób jest to bardzo oczywiste, ale dla kogoś, kto przywykł do pisania aplikacji, które po prostu uruchamiają się, a potem kończą: serwlet spędza większość czasu bezczynnie ... czekając na coś, prośbę, a następnie odpowiadając na to. . Z tego powodu serwlet ma całe życie: jest inicjowany, a następnie czeka, odpowiadając na wszystko, co zostanie na niego rzucone, a następnie zostanie zniszczony. Co oznacza, że ​​musi zostać utworzony (a później zniszczony) przez coś innego (środowisko), że działa we własnym wątku lub procesie i że nie robi nic, chyba że zostanie o to poproszony. A także, że w taki czy inny sposób należy wdrożyć mechanizm, dzięki któremu ten „podmiot” może „nasłuchiwać” żądań.

Sugeruję, że czytanie o wątkach, procesach i gniazdach rzuci na to trochę światła: jest to zupełnie inne niż funkcjonowanie podstawowej aplikacji „witaj świecie”.

Można argumentować, że termin „serwer” lub „serwlet” to trochę przesada. Bardziej racjonalną i prostszą nazwą może być „odpowiadający”. Powód wyboru terminu „serwer” jest historyczny: pierwsze takie ustalenia to „serwery plików”, w których wielu terminali użytkowników / klientów pyta o konkretny plik z komputera centralnego, a następnie ten plik zostanie „podany” „jak książka lub talerz ryb z frytkami.

gryzoń mike
źródło
1
Czy niewłaściwe jest postrzeganie serwletu jako analogicznego do „kontrolera” w standardowej strukturze MVC?
user2490003
Osobiście nie widzę, jak ta analogia się utrzymuje. Chciałbym również myśleć, że ludzie, którzy uważają, że moja odpowiedź jest przydatna (pomaga im to wyjaśnić), mogą być zdezorientowani twoją sugestią.
Mike gryzoni
Myślę, że ta odpowiedź jest przydatna. Zastanawiałem się również (niezależnie od tej odpowiedzi i przed jej przeczytaniem) to samo pytanie, które @ user2490003 postawił powyżej. Jaka jest różnica między serwletem a kontrolerem MVC? Dlaczego analogia użytkownika 2490003 nie działa?
cellepo
Aranżacja MVC jest bardziej skomplikowana, a jednocześnie mniej skomplikowana. To niekoniecznie wymaga oczekiwania na dane wejściowe. Definiując podstawową ideę konfiguracji serwer-klient, pragnę podkreślić tę prostotę. Spójrz na podstawowy schemat MVC tutaj: en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller . W prostej konfiguracji klient-serwer użytkownik wchodzi w interakcje tylko z klientem, a nie z dwoma obiektami, a mianowicie widokiem i kontrolerem. Z MVC może być także wiele widoków, wiele kontrolerów i wiele modeli. I oczekiwanie na wkład nie jest (koniecznie) zaangażowane.
Mike
Oprócz powyższego serwer może obsługiwać wielu użytkowników, natomiast w przypadku konfiguracji MVC nie ma takich wymagań. Konfiguracja MVC należy do świata klasycznego sprzętu komputerowego, tj. Samodzielnych aplikacji. Dzięki serwerom robimy pierwszy krok w uniwersum interaktywnych obliczeń. Nie jest tak, że analogia jest w 100% błędna, bardziej w 90% błędna, a przede wszystkim żadna analogia jest po prostu bezużyteczna, jeśli w rzeczywistości nie pomaga nikomu ani niczego w jakikolwiek sposób. Układ serwer-klient jest tak prosty, że pomysł, którego nikt nie potrzebuje , aby zrozumieć jakiekolwiek analogie .
Mike
10

Co to jest serwlet?

  • Serwlet jest po prostu klasą, która odpowiada na określony rodzaj żądania sieciowego - najczęściej żądania HTTP.
  • Zasadniczo serwlety są zwykle używane do implementacji aplikacji internetowych - ale istnieją również różne frameworki, które działają nad serwletami (np. Struts), aby zapewnić abstrakcję wyższego poziomu niż „tutaj jest żądanie HTTP, napisz do tego poziomu odpowiedzi HTTP”, które serwlety zapewniać.
  • Serwlety działają w kontenerze serwletów, który obsługuje stronę sieciową (np. Analizowanie żądania HTTP, obsługa połączeń itp.). Jednym z najbardziej znanych kontenerów serwletów typu open source jest Tomcat.

  • W paradygmacie żądanie / odpowiedź serwer WWW może obsługiwać tylko strony statyczne dla klienta

  • Do obsługi stron dynamicznych potrzebujemy Serwletów.
  • Servlet to nic innego jak program Java
  • Ten program Java nie ma głównej metody. Ma tylko niektóre metody wywołania zwrotnego.
  • W jaki sposób serwer WWW komunikuje się z serwletem? Przez kontener lub silnik Servlet.
  • Serwlet żyje i umiera w kontenerze internetowym.
  • Kontener WWW jest odpowiedzialny za wywoływanie metod w serwletach. Wie, jakie metody wywołania zwrotnego ma serwlet.

Przepływ żądania

  • Klient wysyła żądanie HTTP do serwera WWW
  • Serwer WWW przekazuje to żądanie HTTP do kontenera WWW.
  • Ponieważ Servlet nie może zrozumieć HTTP, jest to program Java, rozumie tylko obiekty, więc kontener WWW konwertuje to żądanie na prawidłowy obiekt żądania
  • Kontener WWW obraca wątek dla każdego żądania
  • Cała logika biznesowa znajduje się w metodach wywołania zwrotnego doGet () lub doPost () w serwletach
  • Serwlet buduje obiekt odpowiedzi Java i wysyła go do kontenera. Ponownie konwertuje to na odpowiedź HTTP, aby wysłać ją do klienta

Skąd kontener wie, o który klient Servleta prosił?

  • Istnieje plik o nazwie web.xml
  • To jest plik główny dla kontenera WWW
  • W tym pliku masz informacje na temat serwletu

    • serwlety
      • Nazwa serwletu
      • Klasa serwletu
    • servlet-mappings - ścieżka jak / Login lub / Notifications jest zmapowana tutaj
      • Nazwa serwletu
      • wzór adresu URL
    • i tak dalej
  • Każdy serwlet w aplikacji internetowej powinien mieć wpis do tego pliku

  • Więc to wyszukiwanie odbywa się jak-url-pattern -> servlet-name -> servlet-class

Jak „zainstalować” serwlety? * Cóż, obiekty serwletu są dziedziczone z biblioteki javax.servlet. *. Tomcat i Spring można wykorzystać do wykorzystania tych obiektów w celu dopasowania do przypadku użycia.

Ref- Obejrzyj to na 1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE . To niesamowite wytłumaczenie.

Sankalp
źródło
1
Link do rozwiązania jest mile widziany, ale upewnij się, że Twoja odpowiedź jest przydatna bez niego: dodaj kontekst wokół linku, aby inni użytkownicy mieli pojęcie o tym, co to jest i dlaczego tam jest, a następnie przytocz najbardziej odpowiednią część strony, którą „ ponowne linkowanie na wypadek, gdyby strona docelowa była niedostępna. Odpowiedzi, które są niewiele więcej niż link, mogą zostać usunięte.
Mogsdad
1
Pamiętaj, że świat się zmienił. W 2020 roku używamy adnotacji w kodzie zamiast pliku konfiguracyjnego opartego na łańcuchach centralnych w XML.
Thorbjørn Ravn Andersen
5

Servlet to technologia po stronie serwera, która służy do tworzenia dynamicznej strony internetowej w aplikacji internetowej. W rzeczywistości serwlet to interfejs API składający się z grupy klas i interfejsów, który ma pewną funkcjonalność. Korzystając z interfejsu API serwletów, możemy korzystać ze wstępnie zdefiniowanych funkcji klas serwletów i interfejsów.

Cykl życia serwletu:

Kontener WWW utrzymuje cykl życia instancji serwletu.

1. Załadowano klasę serwletu

2) Utworzono instancję serwletu

3) Wywoływana jest metoda init ()

4 Wywołano metodę service ()

5 Wywołano metodę destroy ()

Gdy żądanie podniesione przez klienta (przeglądarkę), kontener WWW sprawdza, czy serwlet jest uruchomiony, czy nie, jeśli tak, to wywołuje metodę service () i udziela odpowiedzi przeglądarce.

Gdy serwlet nie jest uruchomiony, to kontener WWW wykonaj następujące kroki ..

1. moduł ładujący ładuje klasę serwletu

2. Tworzy serwlet

3. Inicjuje serwlet

4. wywołaj metodę service ()

po doręczeniu żądania web-kontener poczekaj na określony czas, w tym czasie, jeśli żądanie przychodzi, wówczas wywołuje tylko metodę service (), w przeciwnym razie wywołuje metodę destroy ().

Navnath Adsul
źródło
5

Jeśli jesteś początkujący, myślę, że ten samouczek może dać podstawowe pojęcie o tym, czym jest Servlet ...

Niektóre cenne punkty znajdują się poniżej z podanego linku.

Technologia serwletów służy do tworzenia aplikacji internetowych, które znajdują się po stronie serwera i generują dynamiczną stronę internetową.

Serwlet można opisać na wiele sposobów, w zależności od kontekstu.

  • Servlet to technologia wykorzystywana do tworzenia aplikacji internetowych.
  • Servlet to interfejs API, który zapewnia wiele interfejsów i klas, w tym dokumentację.
  • Servlet to interfejs, który musi zostać zaimplementowany do tworzenia dowolnego serwletu.
  • Servlet to klasa rozszerzająca możliwości serwerów i odpowiadająca na przychodzące żądania. Może odpowiadać na wszelkiego rodzaju żądania.
  • Servlet to komponent sieciowy wdrażany na serwerze w celu utworzenia dynamicznej strony internetowej. Referencja: tutaj .
Sandun Madola
źródło
1
To naprawdę dobry samouczek, który wyjaśnia podstawowe pojęcia
Nikhil Sahu
3

Serwlety Java to moduły programowe Java po stronie serwera, które przetwarzają i odpowiadają na wymagania klientów oraz aktualizują interfejs serwletu. Pomaga w poprawie użyteczności serwera WWW przy nieznacznym obciążeniu, utrzymaniu i wsparciu.

Serwlet działa jako pośrednik między klientem a serwerem. Ponieważ moduły serwletów działają na serwerze, mogą otrzymywać i reagować na żądania zgłaszane przez klienta. Obiekty zapotrzebowania i reakcji serwletu stanowią pomocną metodę radzenia sobie z zapytaniami HTTP i wysyłania informacji o treści do klienta.

Ponieważ serwlet jest skoordynowany z dialektem Java, dodatkowo ma wszystkie najważniejsze elementy Java, na przykład wysoką mobilność, autonomię sceny, bezpieczeństwo i dostępność bazy danych Java.

Poorna Senani Gamage
źródło
2

Servlet to klasa java, która odpowiada na żądanie HTTP i generuje odpowiedź HTTP ...... gdy tworzymy stronę za pomocą HTML, byłaby to strona statyczna, więc aby była dynamiczna, używamy SERWERA {w prostych słowach można zrozumieć} Aby skorzystać z serwletu, JSP przeważa nad nim, używa zarówno kodu, jak i znacznika HTML.

Roopam
źródło
2

Serwlety to klasy Java, które uruchamiają określone funkcje, gdy użytkownik serwisu zażąda adresu URL z serwera. Funkcje te mogą wykonywać zadania, takie jak zapisywanie danych w bazie danych, wykonywanie logiki i zwracanie informacji (takich jak dane JSON) potrzebnych do załadowania strony.

Większość programów Java używa main()metody, która wykonuje kod podczas działania programu. Aplety Java zawierać doGet()i doPost()metody, które działają podobnie jak main()metody. Funkcje te są wykonywane, gdy użytkownik zgłasza żądanie GETlub POSTadres URL adresowany do tego serwletu. Dzięki temu użytkownik może załadować stronę GETżądania lub przechowywać dane z POSTżądania.

Gdy użytkownik wysyła żądanie GETlub POST, serwer odczytuje @WebServletna górze każdej klasy serwletu w katalogu, aby zdecydować, która klasa serwletu ma zostać wywołana. Załóżmy na przykład, że masz klasę ChatBox, a na górze jest to:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

Gdy użytkownik zażąda /chatadresu URL, ChatBoxklasa zostanie wykonana.

kundus
źródło
0

Jak opisano w tym artykule , serwlet jest znormalizowanym sposobem rozszerzenia serwera Java i uzyskania dostępu do jego możliwości.

Każdy serwlet może być postrzegany jako mały serwer (stąd nazwa), który uzyskuje dostęp do żądania i odpowiedzi wzorowanych na kodzie Java, a także innych danych kontekstowych, takich jak sesja.

Mając to pod ręką, kod Java serwletu może łączyć się z wszystkim, co jest potrzebne do renderowania odpowiedzi, w tym przekazywanie strony JSP w celu wygenerowania widoku HTML.

mtyson
źródło
-1

Wydaje mi się, że serwlet jest w zasadzie klasą java, która działa jako pośredni środek między żądaniem HTTP a odpowiedzią HTTP. Servlet służy również do dynamicznej zmiany strony. Załóżmy na przykład, że jeśli chcesz przekierować na inną stronę internetową na serwerze, musisz użyć serwletów. Inną ważną rzeczą jest to, że serwlet może działać zarówno na hoście lokalnym, jak i przeglądarce internetowej.

Roopam
źródło
-2

Właśnie dostałeś odpowiedź na normalnie serwlet. Chciałbym jednak podzielić się z wami informacjami o Servlet 3.0

Co to jest pierwszy serwlet?

Serwlet to komponent sieci Web zarządzany przez kontener i generujący dynamiczną zawartość. Serwlety to klasy Java, które są kompilowane do kodu bajtowego, który może być dynamicznie ładowany i uruchamiany przez serwer WWW z obsługą technologii Java lub kontener serwletu.

Servlet 3.0 to aktualizacja istniejącej specyfikacji Servlet 2.5. Wymagany Servlet 3.0 API platformy Java, Enterprise Edition 6. Servlet 3.0 koncentruje się na rozszerzalności i wtyczce frameworka. Servlet 3.0 zawiera niektóre rozszerzenia, takie jak łatwość programowania (EoD), wtykalność, wsparcie asynchroniczne i ulepszenia bezpieczeństwa

Łatwość rozwoju

Możesz deklarować serwlety, filtry, detektory, parametry początkowe i prawie wszystko można skonfigurować za pomocą adnotacji

Wtykalność

Możesz utworzyć podprojekt lub moduł za pomocą web-fragment.xml. Oznacza to, że pozwala na niezależne wdrażanie wtykowych wymagań funkcjonalnych.

Wsparcie asynchroniczne

Servlet 3.0 zapewnia możliwość przetwarzania asynchronicznego, na przykład: Oczekiwanie na dostępność zasobu, Asynchroniczne generowanie odpowiedzi.

Ulepszenia bezpieczeństwa

Obsługa metod zabezpieczeń serwletu uwierzytelniania, logowania i wylogowania

Znalazłem go z Java Servlet Tutorial

David Pham
źródło