Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Przed rokiem 2000 większość stron internetowych było opartych na zwykłym języku HTML. W większości były to strony statyczne. Od tamtego czasu strony internetowe ewoluowały stając się potężnymi systemami zarządzanymi przez przeglądarkę internetową.

Jednym z wielu języków wspomagających projektowanie systemów internetowych jest język JSP (ang. JavaServer Pages). Przed wprowadzeniem na rynek dla developerów technologii JSP, programiści projektowali systemy za pomocą Java Servlets. Są to klasy języka Java odpowiedzialne między innymi za generowanie kodu HTML. Obecnie Serwlety są dalej stosowane, jednak utrudniają współpracę programisty z projektantami stron internetowych, który musi nauczyć się podstaw języka Java. Dzięki technologii JSP osoby pracujące w zespole mogą skupić się na tej dziedzinie, w której są specjalistami. JavaServer Pages ułatwia pracę ze wzorcem projektowym MVC. Umożliwia korzystanie z bibliotek znaczników JSTL, a jeśli wykorzystywane biblioteki nie wystarczają umożliwia tworzenie własnych znaczników. Można również używać filtrów, podłączanych do projektu za pomocą deskryptora wdrożenia.

Zanim zacznie się projektowanie systemów za pomocą technologii JSP, należy zapoznać się z programowaniem w języku Java (Thinking in Java. Edycja polska. Wydanie IV). Większość programów działa w oparciu o bazy danych. Połączenie technologii JDBC z językiem Java dobrze opisuje książka „Java. Techniki zaawansowane. Wydanie VIII”. Jeśli projekt ma być oparty na przeglądarce internetowej, wynik zapytań bazodanowych można przekazywać do przeglądarki za pomocą technologii Java Servlets. Przydatne skrypty można znaleźć w książce „Java. Receptury” w rozdziale 20 „Dostęp do bazy danych”. Kiedy programista zapozna się z technologią tworzenia stron za pomocą serwletów, można przejść do technologii JSP (książki: „Head First Servlets & JSP. Edycja polska. Wydanie II”, „Core Java Servlets i JavaServer Pages. Tom II. Wydanie II”). Zrozumienie działania serwletów ułatwi pracę nad projektem, gdyż wszystkie pliki JSP są zamieniane przy kompilacji najpierw na Serwlety a potem na klasy Java.

Listing 1 i Listing 2 przedstawiają dokładnie ten sam wynik w przeglądarce internetowej, ale wygenerowane dwoma sposobami. Dzięki przedstawionym przykładom bardzo dobrze widać ile czasu może zaoszczędzić programista korzystając z technologii JSP. Jednak dalej pliki JSP muszą zawierać skryptlety <% … %>, które przeszkadzają przy współpracy z projektantami stron. Specjalnie dla wszystkich pracowników, którzy nie są programistami został udostępniony język EL (ang. Expression Language), oficjalnie dołączony do specyfikacji JSP 2.0. Dzięki wyrażeniom EL cały zespół nie musi uczyć się programowania w Javie, a wystarczy, że pozna odpowiednie znaczniki języka EL.

 

Listing 1. Strona w technologii JSP
<html><body> Witamy na stronie! </body></html>


Listing 2. Wyświetlenie stronny Serwletem, metoda - doGet()
public class Listing_1 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws java.io.IOException {
PrintWriter out = resp.getWriter();
resp.setContentType(“text/html; encoding=utf-8”);
out.write(“<html><body>”);
out.write(“Witamy
na stronie!”);
out.wirte(“</body></html>”);
} // Koniec metody doGet.
} // Koniec klasy.

 

Przykładowy kod javy przedstawia zastosowanie hermetyzacji w komponencie JavaBeans (Listing 3). Dostęp z zewnątrz do zmiennej miasto nie jest możliwy. Aby odwołać się do zmiennej wykorzystuje się metody dostępowe nazwane zgodnie z konwencją get/set.

 

Listing 3. Klasa Kraj.java
package mgr;
public class Kraj {
private String miasto;
public String getMiasto() {
return miasto;
}
public void setMiasto(String miasto) {
this.miasto = miasto;
}
} // Koniec klasy.

 

Kod z Listingu 4 przedstawia formularz, dzięki któremu można przekazać na drugą stronę nazwę miasta. Przy dużych projektach kontrolę nad aplikacją sprawuje deskryptor wdrożenia web.xml. Jednak w opisywanym przykładzie odwołano się bezpośrednio do pliku, który jest odpowiedzialny za wyświetlenie wyniku (Listing 5).

 

Listing 4. Formularz HTML – form.jsp
<html>
<body>
<form action="wynik.jsp" method="post">
Podaj miasto:
<input type="text" name="miasto" />
<input type="submit" />
</form>
</body>
</html>

 

Listing 5. Kod odpowiedzialny za wyświetlenie danych wprowadzonych do formularza – wynik.jsp
<jsp:useBean id="kraj" class="mgr.Kraj" scope="session">
<jsp:setProperty name="kraj" property="miasto"/>
</jsp:useBean><html>
<body>
Wynik EL: ${kraj.miasto}
Wynik jsp: <jsp:getProperty name="kraj" property="miasto" />
</body>
</html>

 

Do prawidłowego wyświetlenia danych z formularza zastosowano znacznik jsp:useBean, za pomocą którego zadeklarowano komponenty. Znacznik może posiadać ciało. Dzięki atrybutowi „id” można odwoływać się do danego komponentu z kodu strony JSP. Atrybut „class” zastosowany w opisywanym kodzie odpowiada za podłączenie nazwy klasy włącznie z nazwą pakietu, w którym fizycznie się znajduje. Zasięg komponentu, w którym istnieje zależy od ustawionego zakresu w atrybucie „scope”. Wartość domyślna to page (Listing 5).

 

Możliwe wartości atrybutu scope to:

  • page – komponent jest dostępny na bieżącej stronie;
  • request – dostępne tylko dla bieżącego żądania klienta;
  • session – obiekt jest dostępny dla wszystkich stron w trakcie trwania obecnej sesji;
  • application – wartość aplikacji wskazuje, że jest ona dostępna dla wszystkich stron.

 

Za pomocą znacznika jsp:setProperty ustawia się wartość z komponentu JavaBean (Listing 3). Atrybut „name” (Listing 5) musi posiadać taką samą wartość jak atrybut „id” ze znacznika jsp:useBean, z którym jest powiązany. Atrybut „property” posiada taką samą nazwę jak nazwa pola <input /> w formularzu (Listing 4) oraz nazwa zmiennej w klasie komponentu JavaBean, z którym jest powiązany (Listing 3). Wynik wprowadzony do formularza jest wyświetlany na następnej stronie za pomocą wyrażenia EL oraz znacznika jsp:getProperty (Listnig 5).

Katalog „webapps” jest głównym katalogiem wszystkich projektów informatycznych na serwerze Tomcat (rys. 1.). Katalog „TwojeMiasto” reprezentuje projekt informatyczny. Do prawidłowego wyświetlenia zawartości pliku form.jsp w przeglądarce internetowej należy wprowadzić adres http://www.localhost:8080/TwojeMiasto/form.jsp.

 

 

Plik PNG przedstawia wdrożenie przykładowego projektu JSP

 

Rys. 1. Wdrożenie przykładowego projektu JSP

 

Katalog „WEB-INF” zawiera między innymi deskryptor wdrożenia i wszystkie skompilowane klasy Java poukładane w pakiety. Jeśli w projekcie zastosowano biblioteki zewnętrznych producentów należy umieścić je w katalogu „WEB-INF/lib”. Deskryptor wdrożenia web.xml umieszczony w projekcie umożliwia dostosowywanie aplikacji do potrzeb użytkownika bez konieczności modyfikowana kodu źródłowego. Katalog „classes” służy do przechowywania wszystkich skompilowanych klas Java. Bardzo dobrze opisano strukturę deskryptora wdrożenia w książce „Core Java Servlets i JavaServer Pages. Tom II. Wydanie II”, Rozdział 2 - „Kontrolowanie działania aplikacji przy użyciu deskryptora web.xml”.

 

Lista książek, do których odwołano się w artykule:

Książki Helion