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