Zadanie 6

Transkrypt

Zadanie 6
PB, 2011-2012
Programowanie aplikacji WWW
Lista zadań nr 6
Obsługa baz danych z wykorzystaniem JDBC
Stwórz aplikację katalogowania książek. Aplikacja powinna umożliwiać dodawanie nowych
pozycji, a także ich edycję oraz usuwanie. Informacje o książkach (tytuł, opis, autor, rok wydania)
powinny być przechowywane w bazie danych.
1. Stwórz bazę danych z tabelą Books zawierającą wyżej wymienione pola. Pamiętaj o kluczu
głównym i automatycznej jego inkrementacji.
2. Stwórz formularz wyświetlający listę dotychczas wprowadzonych książek umieszczając go
w pliku index.jsp. Książki powinny być wypisane w tabeli. Ostatnie dwie kolumny tabeli
(dla każdego wiersza) powinny być przeznaczone na opcje Edytuj oraz Usuń. Na dole strony
powinien być umieszczony przycisk Dodaj.
3. Stwórz formularz bookEdit.jsp pozwalający na dodanie nowej oraz edycję wybranej książki.
Formularz powinien zawierać takie pola, jakie zdefiniowane są w tabeli w bazie danych.
4. Sterowanie
z
formularza
index.jsp
powinno
być
przekazywane
do
servletu
BookActionManagerServlet, który w zależności od wybranej opcji:
•
dodawanie: przekaże sterowanie do strony bookEdit.jsp,
•
edycja: pobierze dane z bazy o wybranej książce i przekaże sterowanie do strony
bookEdit.jsp umieszczając w atrybutach żądania (request) informacje o książce,
•
usuwanie: przekaże sterowanie do servletu BookManager z informacją, którą książkę
należy usunąć.
5. Sterowanie z formularza bookEdit.jsp powinno być przekazane do servletu BookManager,
który zajmuje się dodawaniem, edycją oraz usuwaniem z bazy określonych książek.
6. ConnectionString definiujący połączenie z bazą danych powinien być przechowywany
w pliku web.xml
1
Dostęp do bazy danych MySQL poprzez JDBC
Najpierw należy dołączyć do projektu bibliotekę MySQL Connector/J. Następnie należy wykonać
następujące kroki (wszelkie importy dołączać z pakietu java.sql.*):
•
rejestracja sterownika: Class.forName("com.mysql.jdbc.Driver"),
•
pobrać obiekt połączenia klasy Connection:
DriverManager.getConnection("jdbc:mysql://localhost:3306/nazwaBazy","login","haslo"),
•
stworzyć obiekt polecenia klasy Statement korzystając z metody obiektu połączenia:
conn.createStatement(),
•
wykonać operację na danych poprzez wywołanie zapytania SQL wykorzystując metody
obiektu polecenia:
◦ stmt.executeUpdate("zapytanie SQL") – wykonuje zapytanie bez zwracania wyników,
◦ stmt.executeQuery("zapytanie SQL") – wykonuje zapytanie ze zwracaniem wyników.
•
zwolnić zajmowane zasoby obiektu polecenia za pomocą metody close(),
•
zamknąć połączenie za pomocą metody close().
Przetwarzanie wyników zwróconych przez bazę danych
Wyniki
działania
zapytania
SQL zwrócone
przez
wykonanie
metody
executeQuery()
przechowywane są w obiekcie klasy ResultSet. Wczytanie pierwszego i kolejnych wierszy
realizowane jest poprzez wywołanie metody next():
while (rs.next()) {
//Odczyt danych
//Przetwarzanie wyników
}
Odczyt wartości poszczególnych kolumn danego wiersza poprzez zbiór metod getXXX(), np.
getString(), getByte(), getDouble(), itp.
Pobieranie danych z paska adresowego (queryString)
Po przekazaniu danych do servletu o adresie URL SampleServlet poprzez pasek adresowy, np.
http://SampleServlet?id=1,
można
odczytać
request.getParameter("id”)
2
wartość
parametru
poprzez:
Parametry inicjalizacyjne aplikacji
Dodanie parametrów inicjalizacyjnych servletu polega na modyfikacji pliku web.xml i dodaniu
wpisów określających parametry:
<context-param>
<param-name>connectionString</param-name>
<param-value>jdbc:mysql://localhost:3306/nazwaBazy</param-value>
</context-param>
Istnieje również możliwość dodania parametrów poprzez konfigurator pliku web.xml w środowisku
NetBeans: zakładka General, gałąź Context Parameters i następnie Add.
Dostęp do parametrów inicjalizacyjnych aplikacji
Odczytanie parametrów konfiguracyjnych servletu wymaga pobrania obiektu klasy ServletContext
poprzez wywołanie metody getServletContext() w obiekcie servletu lub wykorzystania zmiennej
lokalnej application w stronie JSP, a następnie wywołaniu metody getInitParameter().
3