Web- og serverprogrammering

Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Databasekommunikation - dag 6

Strategier til databaseadgang

JDBC (Java DataBase Connectivity)

JDBC RowSet

Login-eksempel: Javabønne med JDBC

Evt.: JSF fortsat

Læsning: WJSP 5, WJSP 9.5-9.7

2.8.1 Læse filer fra harddisken 37

2.8.2 Erklæring af metoder og blivende variabler 38

2.8.3 Trådsikkerhed i JSP-sider 39

2.8.4 Producere grafik fra JSP 40

2.8.5 Eksempel: JSP-side der danner et JPG-billede 40

2.8.6 Indlejre og nedskalere billeder fra harddisken 43

2.8.7 Opload af filer til server 44

3.6 Avanceret 58

3.6.1 Indkode data i en URL (URL-indkodning) 58

3.6.2 Skjulte felter i formularer 59

3.6.3 Bruge skjulte felter til at etablere et forløb 60

3.6.4 Skjule parametrene (POST-metoden) 60

3.6.5 Cookier 61

3.6.6 Sætte cookier 62

3.6.7 Aflæse cookier 62

3.7 Avanceret: HTTP-protokollen 64

3.7.1 Eksempel på kommunikation 64

3.7.2 Formulardata med GET-metoden 65

3.7.3 Formulardata med POST-metoden 66

3.7.4 Cookier 66

3.7.5 Øvelse 66

4.3 Omdirigering 73

4.3.1 Klient-omdirigering (response.sendRedirect()) 73

4.3.2 Server-omdirigering (<jsp:forward />) 74

4.4 Appendiks: Almindelige JSP-koder 75

4.5 Appendiks: Implicit definerede objekter 76

4.5.1 request - anmodningen fra klienten 76

4.5.2 response - svaret til klienten 77

4.5.3 out - skrive tekst til klienten 77

4.5.4 session - objekt der følger den enkelte bruger 78

4.5.5 application - fælles for hele webapplikationen 79

4.5.6 config - den enkelte websides konfiguration 80

4.5.7 page - selve JSP-siden 81

4.5.8 exception - undtagelse opstået under kørsel 81

4.5.9 pageContext - alle objekterne samlet i ét 81

4.6 Opgaver 82

7.1 Servletter 130

7.1.1 Anmodningsmetoder 131

7.1.2 Hvornår bruge JSP og hvornår bruge servletter 131

7.3 Avanceret: JSP-siders interne virkemåde 133

7.3.1 Kigge i de genererede servletter 133

7.3.2 Eksempel 133

7.3.3 JSP-siders livscyklus 135

Opgaverne sidste gang

Eksamensprojektet

Næste gang: Fremlæggelse/status på projekter

Henrik: Fotoklub

Kim D: Netbanken

Anne

Lis: Opgaveafleveringsregistrering (dueslaget)

Bjarne H

Bjarne J: Produktionsstoptidsregistrering (periode, årsag, rapporter)

Kim J

Ole Hedevang: Webbutik

Tommy: Kajakklub

Jesper

Sven-Erik og Morten: E-handel (nok tøjbutik)

Preben: Konfigurator (en slags e-handel)

Svend

Klaus Elmquist: Procedurale mønstre

Per: Hotelinformationssystem (bestilling af roomservice, bord, regning, turistinfo)

Stefan

Ratha: Internet-butik om blomster

Christian

Login og brugeroprettelse

Eksempel på javabønne

Bemærk: Serveren kan klare brugervalidering for dig

Model-View-Controller

Programmer med en brugergrænseflade kan inddeles i tre dele:

1.Modellen (data og de bagvedliggende beregninger)

En bankkonto har navn på ejer, kontonummer, kort-ID, saldo, bevægelser, etc.
Saldo kan ikke ændres direkte, men påvirkes med handlingerne (metoderne) overførsel, udbetaling og indbetaling.

2.Præsentationen af data over for brugeren,

Bankkonti præsenteres meget forskelligt.
I en pengeautomat vises ingen personlige oplysninger overhovedet.

I et netbank-system kan saldo og bevægelser ses (det kunne være en webløsning i HTML).

3.Mulighederne for at ændre i data gennem handlinger

I en pengeautomat kan man kun hæve penge.

I et netbank-system kan brugeren måske lave visse former for overførsel fra sin egen konto.

Ved skranken kan medarbejderen derudover foretage ind- og udbetalinger.

Model-View-Controller

MVC-eksempel

vaelg_konto.jsp

vis_konto.jsp

kontrol.jsp

fejl.jsp

Brugervalg.java

Kontomodel.java

Prøv selv

Prøv bankkonto-eksemplet

Kig på http://javabog.dk/JSP/kode/kapitel_10/

Afprøv på http://javabog.dk:8080/JSP/kode/kapitel_10/

Test hinanden

Udføres med naboen (vejledende svar findes i afsnit 4.8, 5.7 og 9.7)

Beskriv hvad sessionsobjektet er og hvad man kan bruge et session-objekt til.

Hvad er forskellen på klient-omdirigering og server-omdirigering?

Beskriv de 4 vigtigste implicitte objekter.

Hvad er SQL? Giv nogle eksempler på SQL-sproget.

Hvordan kan man få kontakt til en database fra Java/JSP-sider?

Hvis du er begynder og skal til at lave din første webapplikation, hvordan anbefales det, at du får kontakt til databasen?

Hvorfor bør man bruge på forhånd forberedt SQL (PreparedStatement)?

Hvad er en javabønne?

Forklar begrebet 'egenskab' ved en javabønne.

Hvordan bruges en javabønne fra en JSP-side? Giv et eksempel.

Hvordan sættes bønnens egenskaber?

Frontkontrol

En Frontkontrol (eng.: Front Controller) modtager alle anmodninger og beslutter hvad der skal ske

kontrol.jsp er næsten en frontkontrol.

Den er det ikke helt, fordi man kan kan rette i URLen og på den få fat i de andre sider uden om kontrol.jsp.

redigere web.xml sådan, at alle forespørgsler dirigeres til én servlet eller JSP-side, der agerer Frontkontrol.

De rigtige sider kan ligge skjult for klienten i WEB-INF/-mappen

Eksempel på web.xml

<!-- Frontkontrol: Alt der starter med /bank sendes til kontrol.jsp -->

<servlet>

<servlet-name>Frontkontrol</servlet-name>

<jsp-file>/WEB-INF/bank/kontrol.jsp</jsp-file>

</servlet>

<servlet-mapping>

<servlet-name>Frontkontrol</servlet-name>

<url-pattern>/bank/*</url-pattern> <!-- Bemærk: * i URL-mønster -->

</servlet-mapping>

JSF Frontkontrol

Alt der starter med /faces/ styres af JSF

Det er stadig muligt at se de 'oprindelige sider', uden om JSF

Uden JSF f.eks.:
http://localhost/kode/kapitel_04/oenskeseddel.jsp

Med JSF f.eks.: http://localhost/faces/kode/kapitel_04/oenskeseddel.jsp

(frontkontrolklassen javax.faces.webapp.FacesServlet læser supplerende konfiguratonsfil WEB-INF/faces-config.xml)

<!-- Frontkontrol: Alt der starter med /faces/ styres af JSF -->

<servlet>

<servlet-name>Faces Servlet</servlet-name>

<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>/faces/*</url-pattern>

</servlet-mapping>

Struts Frontkontrol

<!-- Frontkontrol: Alt der ender med .do styres af Struts -->

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

Tag Libraries

Et tag library (forkortet taglib) er et bibliotek af HTML-lignende koder.

Ligesom JSP-koderne udføres taglib-koderne på serveren.

Eksempel: JSTL (Java Strandard Tag Library):

Flere taglibs understøtter brug af Runtime Expressions (RE – udtryk der evalueres under kørslen)

Hvad dækker JSF og Struts?

Højniveau

Lavniveau

Åben Dokumentlicens

Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL)

Du har derfor lov til frit at kopiere dette værk

Bruger du dele af værket i et nyt værk, skal de dele, der stammer fra dette værk, igen frigives under ÅDL

Den fulde licens kan ses på
http://www.sslug.dk/linuxbog/licens.html

Web- og serverprogrammering

Forelæsningsnoter til lærebogen http://javabog.dk/JSP/

Værket er omfattet af Åben dokumentlicens (ÅDL).
Licensens ordlyd kan findes herunder eller på http://www.sslug.dk/linuxbog/licens.html
Åben dokumentlicens (ÅDL) version 1.0 (25. januar 2002)
1. Kopiering og distribution af værket i uændret form
Du må frit kopiere dette værk uændret og distribuere det på ethvert medium, forudsat at du sammen med hver kopi bibeholder denne licens og en henvisning til værkets kilde.
Du kan vælge at kræve penge for kopiering og distribution af indholdet, for undervisning i indholdet, for brugerstøtte og garantier i forbindelse med indholdet. Hvis du videregiver værket til andre, har du pligt til at se til, at du selv eller andre giver modtageren gratis adgang i minimum 3 år til en elektronisk udgave af indholdet - i et åbent redigérbart format - for eksempel via internettet, og at der i hvert eksemplar tydeligt angives, hvordan man kan få den elektroniske udgave.
2. Ændring af indholdet
Du må gerne ændre i dette værk eller dele af det (og dermed lave et nyt værk baseret på dette værk) og distribuere det som nævnt ovenfor, forudsat at du opfylder alle følgende krav:
* a) Du skal sørge for at det nye værk indeholder en tydelig anmærkning om at du ændrede det, hvad du ændrede og datoen for ændringerne.
* b) Det skal være omfattet af samme rettigheder og betingelser ("licens"), som det oprindelige værk.
Alternativt kan det nye værk bære en anden licens eller almindelig ophavsretlig beskyttelse, forudsat at samtlige dele, der oprindeligt stammer fra dette værk, tydeligt er markeret (f.eks i sidefoden på hver side) som værende under denne licens, og at licensen følges for disse dele af værket, herunder at der gives gratis elektronisk adgang som nævnt under afsnittet om kopiering og distribution.
3. Pligter
Enhver anvendelse, kopiering eller distribuering betragtes som en accept af denne licens og dens betingelser. Ved overtrædelse af licensbetingelserne, vil almindelig ophavsretlig beskyttelse være gældende for hele værket og vil dermed gøre person eller personer erstatningspligtige for enhver uautoriseret anvendelse.
4. Garanti
Indholdet leveres "som det er", uden nogen form for garanti for købs-, brugs- eller nytteværdi, medmindre der er givet en særskilt skriftlig garanti herom.

2004-08-30T12:23:21