Materiały poprawione dla NetBeans 8.0.1

Transkrypt

Materiały poprawione dla NetBeans 8.0.1
Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf
Materiały poprawione
Rozwiązanie zadania w NetBeans IDE 8.1, opracowanie materiału: Piotr Nierebiński, Mateusz Turski
(na podstawie materiału oryginalnego oraz wersji poprawionej autorstwa J.Ksybek i A.Miazio.)
Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej architekturę
Spring. Aplikacja składa się z jednego zarządcy (ang. dispatcher) i jednego kontrolera wyświetlającego
stronę JSP. Dodatkowo, aplikacja wykorzystuje mechanizm fabryki komponentów do połączenia się z
bazą danych i wyświetlenia listy klientów. Do wykonania ćwiczenia potrzebne jest zintegrowane
środowisko programistyczne NetBeans IDE 8.1 (do pobrania z http://www.netbeans.org) oraz
środowisko JAVA EE 7.0 Web.
1. Uruchom narzędzie NetBeans IDE 8.1
2. Z menu głównego wybierz File → New Project. Wybierz kategorię Java Web i typ projektu Web
Application. Rezultat:
Kliknij przycisk NEXT >
S t r o n a 1 | 10
3. Podaj nazwę projektu, np. „Spring” oraz określ ścieżkę projektu. Kliknij przycisk NEXT >.
4. Kliknij przycisk NEXT >
5. Pozostaw ustawienia bez zmian, naciśnij przycisk NEXT >
S t r o n a 2 | 10
6. Zaznacz opcję Spring Web MVC. W tym momencie uaktywnią się nowe opcje. W zakładce
Configuration w polu Dispatcher Name wpisz „SimpleMVC”. Pozostałe wpisy pozostaw bez zmian.
Kliknij przycisk FINISH.
Rezultat:
9. Utworzyła się aplikacja, którą można już uruchomić. W tym celu: Kliknij prawym przyciskiem myszy
na nazwę projektu („Spring”) w zakładce Projects i z menu kontekstowego wybierz opcję Run.
GlassFish Server 4.1.1 oraz DB Java Database Process uruchomi się automatycznie. Obserwuj
komunikaty pojawiające się podczas uruchomiania projektu. Po kilku sekundach powinno otworzyć się
okno przeglądarki wyświetlające rezultat podobny do tego:
S t r o n a 3 | 10
10. Dwukrotnie kliknij lewym przyciskiem myszy na plik SimpleMVC-servlet.xml w celu jego edycji. Plik
powinien wyglądać następująco:
<?xml version='1.0' encoding='UTF-8' ?>
<!-- was: <?xml version="1.0" encoding="UTF-8"?> -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<bean
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<!-Most controllers will use the ControllerClassNameHandlerMapping above, but
for the index controller we are using ParameterizableViewController, so we must
define an explicit mapping for it.
-->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="index.htm">indexController</prop>
</props>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp"
p:viewClass="org.springframework.web.servlet.view.JstlView"/>
<!-The index controller.
-->
<bean name="indexController"
class="controller.SimpleController"
/>
</beans>
S t r o n a 4 | 10
11. Powyższa konfiguracja zleca kierowanie żądań o URL index.html do kontrolera o nazwie
controller.SimpleController. Kolejnym krokiem jest implementacja tego kontrolera.
Kliknij prawym przyciskiem myszy na ikonie projektu „Spring” i z menu kontekstowego wybierz
New → Java Class. Wprowadź nazwę klasy: SimpleController i nazwę pakietu: controller.
Kliknij przycisk FINISH.
12. Plik SimpleController.java powinien mieć następujący kod:
package controller;
import
import
import
import
import
java.util.Date;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
org.springframework.web.servlet.ModelAndView;
org.springframework.web.servlet.mvc.AbstractController;
public class SimpleController extends AbstractController{
@Override
protected
ModelAndView
handleRequestInternal
(HttpServletRequest
HttpServletResponse arg1) throws Exception {
ModelAndView mav = new ModelAndView("welcome");
mav.addObject("date", new Date());
return mav;
}
}
arg0,
Kontroler otrzymuje żądanie, tworzy nowy obiekt wynikowy ModelAndView, dodaje do modelu obiekt
biznesowy (w tym przypadku prosty obiekt java.util.Date) i zwraca obiekt wynikowy.
Nazwa obiektu wynikowego „welcome" jest tłumaczona na /WEBINF/jsp/welcome.jsp.
S t r o n a 5 | 10
13. Kolejny krok to zbudowanie strony JSP wywoływanej przez kontroler. Kliknij prawym przyciskiem
myszy na folderze jsp i z menu kontekstowego wybierz New → JSP. Podaj nazwę dokumentu:
„welcome” (nie podawaj rozszerzenia, zostanie dodane automatycznie).
Naciśnij przycisk FINISH.
14. Plik welcome.jsp zostanie otwarty w edytorze. Wprowadź następujący kod:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Gratulacje</h1>
Teraz jest <c:out value="${date}" />
</body>
</html>
Zapisz wszystkie pliki i uruchom aplikację klikając prawym przyciskiem myszy na projekcie „Spring”
wybierając z menu kontekstowego opcję Run.
Powinna się pojawić strona internetowa z aktualną datą i godziną jak poniżej:
S t r o n a 6 | 10
Skopiuj adres URL (http://localhost:8080/Spring/index.htm) i przetestuj działanie aplikacji w innych
przeglądarkach.
15. Kolejny krok to dodanie do projektu komponentu odpowiedzialnego za nawiązanie połączenia z
bazą danych. Kliknij dwukrotnie na pliku SimpleMVC-servlet.xml i wewnątrz znaczników wprowadź
następującą definicję komponentu dbBean, podając prawidłowe parametry połączenia (host, port, sid,
username, password):
<bean id="dbBean"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="org.apache.derby.jdbc.ClientDriver"
p:url="jdbc:derby://localhost:1527/sample"
p:username="app"
p:password="app" />
16. Nawiązanie połączenia z bazą danych wymaga dołączenia do projektu właściwego sterownika
JDBC. Kliknij prawym przyciskiem myszy na ikonie projektu „Spring”, z menu kontekstowego wybierz
Properies, wyświetli się okno właściwości projektu. Wybierz zakładkę Libraries i z menu po prawej
stronie wybierz Add Library.
S t r o n a 7 | 10
Wybierz z listy sterownik Java DB Driver i kliknij Add Library.
17. Nawiązanie połączenia, wykonanie zapytania i odczytanie wyników zapytania jest realizowane w
kontrolerze. Kliknij dwukrotnie plik SimpleController.java w celu jego edycji i dodaj kod obsługi
połączenia z bazą danych.
S t r o n a 8 | 10
package controller;
…
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
…
protected ModelAndView handleRequestInternal (HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
ApplicationContext ctx = this.getApplicationContext();
DriverManagerDataSource dbBean = (DriverManagerDataSource)
ctx.getBean("dbBean");
JdbcTemplate template = new JdbcTemplate(dbBean);
List clients = template.queryForList("SELECT * FROM customer");
ModelAndView mav = new ModelAndView("welcome");
mav.addObject("date", new Date());
mav.addObject("clients", clients);
return mav;
}
…
18. Zmodyfikuj wynikową stronę JSP w taki sposób, aby wyświetlała wynik zapytania przesłany przez
kontroler w obiekcie „employees”. Kliknij dwukrotnie plik welcome.jsp i przejdź do jego edycji.
Plik powinien wyglądać następująco:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Gratulacje</h1>
<fmt:setLocale value="pl_PL" />
Teraz jest <fmt:formatDate value="${date}" pattern="dd-MM-yyyy HH:mm" />
<h1>Lista klientów</h1>
<table border="1">
<tr><th>Nazwa</th><th>Miasto</th><th>Email</th><th>FAX</th></tr>
<c:forEach var="emp" items="${clients}">
<tr>
<td> <c:out value="${emp['NAME']}" /> </td>
<td> <c:out value="${emp['CITY']}" /> </td>
<td> <c:out value="${emp['EMAIL']}" /> </td>
<td> <c:out value="${emp['FAX']}" /> </td>
</tr>
</c:forEach>
</table>
</body>
</html>
S t r o n a 9 | 10
19. Przed uruchomieniem aplikacji należy zmienić serwer bazy danych. W tym celu przejdź do zakładki
Services. Rozwiń drzewo Database. Kliknij prawym przyciskiem myszy na JavaDB -> wybierz
Properties. Pojawi się okno jak poniżej:
Odszukaj ścieżkę instalacji javadb serwera GlassFish i podmień istniejącą ścieżkę w polu Java DB
Installation.
Naciśnij OK.
20. Ustanów połączenie z bazą danych. W tym celu kliknij prawym przyciskiem myszy na JavaDB i z
menu kontekstowego wybierz opcję Start Server. Kiedy serwer się uruchomi (obserwuj komunikaty w
oknie „Output - JavaDB Database Process”), powtórz czynność wybierając Connect z menu
kontekstowego jdbc:derby://localhost:1527/sample [app on APP].
21. Przejdź do zakładki Projects i uruchom aplikację (Run -> Run Project (Spring)).
S t r o n a 10 | 10

Podobne dokumenty