Laboration 4, Java Server Faces och templates

Laboration 4, dt087g Programmering i Java Enterprise
Laboration 4, Java Server Faces och templates
Översikt
Du ska i laborationen ge en redogörelse för hur man med hjälp av JSF skapar en mall som används
som för att formattera en webbsida. Webbsidans innehåll interagerar med en databas.
Källkoden som vi använder från boken[1] används med fördel i labben. Det är av största vikt att du
läst kapitel 4-6 och kapitel 10 och 11 och i detalj gått igenom exempelkoden i kapitel 11 innan du
börjar.
Uppgifter
1) Skapa ett webbprojekt ”Maven Web Application”
2) Lägg till de dependencies som krävs för Facelets. Högerklicka på ditt projekt välj
Properties- Frameworks. I fliken väljer du Add... Java Server Faces. Ange version 2.0. Du
har nu jsf-api och jsf-impl, tillagda under Libraries.
3) Kör ditt projekt. Välj Glassfish Server som värd. Vad blir resultatet? Vilken fil visas? Vad är
urlen som startas i din webbläsare? Du måste ange en målserver för att Entity classes och
din PU ska kunna konfigureras senare.
4) Välj Fliken Services i NetBeans, leta upp Glassfish-servern. Välj Admin console. Då admin
console har laddats (kan ta lite tid första gången) Väljer du din applikation under fliken
Applications. Du ser då en sida som liknar
Välj där en lämplig Context Root som är enkel och lämplig för uppgiften. Spara dina
inställningar. Kör därefter ditt projekt igen med Launch länken på webbsidan. Vilken är
urlen som startas i din webbläsare? Denna egenskap hämtas från WEB-INF/sun-web.xml
Laboration 4, dt087g Programmering i Java Enterprise
”Context-Root” och ändras då din applikation återinstalleras på Glassfish servern.
5) Skapa en facelet mall. Högerklicka projektet välj New … Other... (om den inte finns i din
snabblista) Java Server Faces - Facelet template. Denna mall är utgångspunkt för layouten.
Välj den mall som har en header och navigering till vänster.
Ange namnet main-template.
6) Ändra titeln i mallen till ”Java EE, labb 4”. Ändra rubriken i avsnittet ”top” till ”Labb 4”.
7) Nu ska mallen kopplas till index.xhtml1. Lägg till attributet
xmlns:ui="http://java.sun.com/jsf/facelets"
i html-taggen. Lägg till
<ui:composition template="./WEB-INF/maintemplate.xhtml"></ui:composition>
i body-avsnittet.
Inuti taggen composition lägger du
<ui:define name="content">Innehåll?</ui:define>
Nu är det dags att inspektera sidan igen. Välj run i projektmenyn. Vad visas?
Du bör ha något som liknar
1Om du önskar kan du se de förändringar som måste göra i filen index.xhtml genom att skapa en
Faces template client med godtyckligt namn. Ange den mall du skapade i WEB-INF-mappen.
Laboration 4, dt087g Programmering i Java Enterprise
Om inte kan du tänkas behöva korrigera länkarna för css-filerna. De bör se ut som
<link href="./resources/css/default.css" rel="stylesheet"
type="text/css" />
och liknande för cssLayout.css. Gör gärna förändringar i css-filerna om du tycker
utformningen är tråkig.
8) Vad händer om du ändrar
xmlns:ui="http://java.sun.com/jsf/facelets"
till
xmlns:facetags="http://java.sun.com/jsf/facelets"
Vilka ändringar måste du göra i det resterande dokumentet?
9) Återskapa samtliga klasser ur Kapitel 11, ex 13. Book, CD, Item, ItemController och
ItemEJB. Antingen med klipp och klistra eller så Skapar du klasserna manuellt. Skapa
klasserna i ett paket döpt model. Notera att om du kopierar över .java-filerna så är du
tvungen att ändra package-deklarationerna för samtliga klasser. NetBeans gör detta
automatiskt om du sköter kopierinen i projekt-fliken.
10) Skapa en PU för samtliga Entity-klasser du skapat. Du bör nu se Book, CD och Item om du
väljer Add Class... (efter att ha bockat av ”Include all Entity classes...”). Ange denna PU i
ItemEJB-klassen.
11) Skapa en ny Facelet Template client new-book (new-book.xhtml) och använd din Template
main-template som mall. Utgå ifrån kapitel 11 ex13, och skapa ett formulär med
inmatningsfält så att man kan skapa en bok. Om du använder dig av sammansatta
komponenter som i ex 13, var noga med hur du döper mappen under resources och
motsvarande uri för xml-namnrymden i new-book.xhtml.
12) Gör detsamma för CD. Kontrollera i databasen att det faktiskt läggs till information.
13) Inspektera källkoden som genereras i din webbläsare för de båda sidorna. Vilka slutsatser
Laboration 4, dt087g Programmering i Java Enterprise
kan man dra därifrån?
Vilken väg tar informationen från din webbläsares input-fält till databasen?
14) Skapa länkar till de sidorna index, new-book och new-cd i din mall. Kontrollera att länkarna
fungerar.
15) Låt index.xhtml innehålla en sammanställning av alla böcker och CD-skivor i databasen.
Ledning och tips
Google är en god vän för detaljinformation om de olika komponenterna om boken inte räcker till.
Lägg gärna till regler i stilmallarna så att formatteringen ser prydlig ut. Du rekommenderas att
använda en tabell vid layouten av inmatningsformulären. Att css-formattera inmatningsformulär är
som regel allt för tidskrävande.
Då du stöter på problem noterar du detta och dess lösning i rapporten. Du behöver inte ta upp
problem om du betraktar lösningen som esoterisk eller omöjlig att definiera.
Var noggrann med dina hänvisningar och referenser i rapporten. Se rapportmallen[2] hur dessa bör
utformas. Du bör bokföra all litteratur och alla webbsidor du använder då du sammanställer
rapporten, förslagsvis genom din webbläsares bokmärkesfunktioner.
Du bör inte följa mallens disposition utan skriv rapporten så att du har ett avsnitt per punkt i
frågeställningarna och avsluta med källförteckning. Var koncis och tydlig!
Källförteckning
[1]
Antonio Goncalves, ”Beginning Java EE Platform with Glassfish 3”, apress. 2010.
Kapitel 6 till 7, 10 och 11.
[2]
ITM Mittuniversitetet, ”Anvisningar och mall”
http://www.miun.se/PageFiles/8362/MallTekniskaRapporterMIUN.doc . Se avsnitt
källförteckning.