@p_agon:
Jaka jest rola HTTP, gdy przeglądarka wysyła żądanie strony internetowej? Czy to tylko protokol formatujacy zapytania, aby serwer aplikacji mógł je zrozumieć? Nie ma tam jakiejs dodatkowej magii?
Tak to protokół. Trzeba pamiętać, że jest HTTP1.0 / 1.1 / 2.0. W uproszczeniu można przyjąć, że po połączeniu przez TCP - klient przeglądarka podaje jaką stronę chce - np.:
GET ta/strona.html
, do tego dochodzą nagłówki. Serwer po prostu zwraca zawartość strony (może być generowana dynamicznie) + nagłówki.
Dawnymi czasami - przy pomocy komendy nc
symulowałem przeglądarkę, albo serwer na warsztatach, żeby to pokazać. Nie ma magii.
Jaka jest relacja między serwerem aplikacji a serwletem? Serwery aplikacji odbierają żądania HTTP, analizują informacje i decydują, który serwlet powinien otrzymać obiekt żądania? Czy raczej serwery aplikacji odbierają żądania HTTP, analizują informacje i wysyłają je do wszystkich serwletów jednocześnie?
Serwer aplikacji to taki silnik, który zarządza serwletami - wstępnie odpiera żądania HTTP i przekierowuje obsługę do konkretnego serletu (z X dostępnych). Warto podkreślić, że obecnie jest to coraz bardziej historyczne podejście. W nowych aplikacjach częsti nie masz już serwera aplikacji ani serwletów (tak, nawet w springu - WebFlux), a czasem są już tak ukryte, że w zasadzie nie widać (klasyczny Spring Boot + Rest). Jak na rekrutacji pytają Cię o servlety i servery aplikacji to wstajesz i wychodzisz. Dla własnego dobra.
SA moze wykonywać dowolna metode z aplikacji?
SA wywołuje servlet, servlet może wywołać dowolne inne metody (zależy co tam naprogramujesz). Spring podaje swoje servlety, które mają zakodowaną logikę automatycznie wywołującą odpowiedno adnotowane klasy. (Taka kolejna warstwa abstrakcji).
Metoda init Servletu jest wywoływana tylko raz, po utworzeniu instancji?
Tak, ale obecnie to wiedza bezużyteczna.
Dzieki springowi mozemy używac szablonów do generowania stron internetowych jako odpowiedzi na żądania HTTP. Tutaj pojawia sie Thymeleaf jest jakas alternatywna technologia do tego?
Nie wiem czemu dzięki springowi - bo szablony działają w czymkolwiek. I najlepiej ich nie używać. Obecnie weba najczęściej robimy jako SPA - klient JS w Angular/Reac/Vue i tam są templaty. A server (np. Spring) rzuca tylko .json
-ami.