Java po stronie serwera: zaawansowane przetwarzanie formularzy przy użyciu JSP

Zazwyczaj przetwarzanie formularzy obejmuje wiele komponentów działających w tle, przy czym każdy komponent jest odpowiedzialny za odrębne zadanie, takie jak zarządzanie stanem, sprawdzanie poprawności danych, dostęp do bazy danych i tak dalej. Chociaż istnieje wiele przykładów pokazujących przetwarzanie formularzy za pomocą skryptów i serwletów Perla, wykorzystanie stron JSP do tego celu nie wzbudziło większego zainteresowania. Jest ku temu powód. Pomijając fakt, że JSP jest dość nową technologią, wielu uważa, że ​​nadaje się głównie do obsługi prezentacji dynamicznej zawartości pochodzącej z JavaBeans lub serwletów. Jednak, jak wkrótce się przekonasz, połączenie JSP z JavaBeans może być siłą, z którą należy się liczyć podczas przetwarzania formularzy HTML.

W tym artykule zbadam obsługę formularza rejestracji użytkownika za pomocą JSP. Jedną z podstawowych zasad programowania JSP jest delegowanie jak największego przetwarzania do komponentów JavaBean. Moja implementacja obsługi formularzy JSP pokaże kilka interesujących funkcji. Zapewni nie tylko walidację podstawowych danych dla informacji rejestracyjnych wprowadzonych przez użytkownika, ale będzie również wykazywać zachowanie stanowe. Umożliwia to wstępne wypełnienie elementów wejściowych formularza zweryfikowanymi danymi, gdy użytkownik przechodzi przez cykl przesyłania i ostatecznie wprowadza prawidłowe dane dla wszystkich elementów wejściowych. Więc bez dalszych ceregieli, przejdźmy do przykładu.

Spójrz na Listing 1, który przedstawia użytkownikowi prosty formularz rejestracyjny, pokazany na rysunku 1.

Listing 1. register.html

   
REJESTRACJA UŻYTKOWNIKA

* Wymagane pola

Imię*

Nazwisko*

E-mail*

Kod pocztowy*

Nazwa Użytkownika*

Hasło*

Potwierdź hasło *

Jaka muzyka Cię interesuje?

Rock Pop Bluegrass

Blues Jazz Country

Chcesz otrzymywać powiadomienia e-mail o naszych specjalnych wyprzedażach?

tak nie

Rysunek 1 przedstawia formularz rejestracji użytkownika, tak jak wyglądałby w przeglądarce.