Webprogrammering med Java Server Pages
Indholdsfortegnelse
0 Forord 13
0.1 Bogens opbygning 13
0.1.1 Hvert kapitels opbygning 14
0.1.2 Til underviseren 14
0.2 Netudgaven af bogen 15
0.3 Tak 15
0.4 Åben Dokumentlicens (ÅDL) 16
1 Introduktion 17
1.1 Hvad er HTML? 18
1.2 Hvad er JSP? 19
1.2.1 Princippet i serverside-teknologier 19
1.3 Udviklingsværktøjer til JSP 20
1.3.1 Oracle JDeveloper 20
1.3.2 Netbeans og Sun Java Studio Creator 21
1.3.3 Borland JBuilder 21
1.3.4 Eclipse og IBM WebSphere Studio 22
1.4 Installation af en server 23
1.4.1 Tomcat 23
1.4.2 Resin 25
1.5 PHP og ASP - JSPs fætre 25
1.5.1 JSP fremfor PHP og ASP - fordele og ulemper 26
1.6 Videre læsning 26
2 Grundelementer i JSP 27
2.1 JSP-programkode 28
2.1.1 En simpel side med HTML-kode 28
2.1.2 Lægge JSP-serverkode ind i siden 28
2.1.3 Eksempel: Dags dato og tid 29
2.1.4 Hvis du ikke har en server til rådighed 29
2.1.5 JSTL - en ny måde at arbejde på 29
2.2 Variabler 30
2.2.1 Indlejrede java-udtryk 31
2.2.2 Variabler med objekter 31
2.2.3 Importere klassedefinitioner (pakker) 32
2.3 Blanding af HTML og Java - to stilarter 33
2.3.1 Blandet Java og HTML 33
2.4 Data om klienten (request-objektet) 34
2.5 Kommentarer 35
2.6 Test dig selv 36
2.7 Resumé 36
2.8 Avanceret 37
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 Interaktive sider 45
3.1 Parametre til sider 47
3.1.1 Aflæse en parameter fra URLen 47
3.1.2 Arbejde med parametrene 48
3.2 HTML-formularer 49
3.2.1 Et lidt større eksempel 50
3.2.2 Opgave 51
3.2.3 Lave HTML og behandle input med samme side 52
3.2.4 De almindelige typer af formularfelter 53
3.2.5 Aflæse alle parametre i en formular 55
3.2.6 Videre læsning 56
3.2.7 Opgaver 56
3.3 Appendiks: Typer af formularfelter 57
3.4 Test dig selv 58
3.5 Resumé 58
3.6 Avanceret 59
3.6.1 Indkode data i en URL (URL-indkodning) 59
3.6.2 Skjulte felter i formularer 60
3.6.3 Bruge skjulte felter til at etablere et forløb 61
3.6.4 Skjule parametrene (POST-metoden) 61
3.6.5 Cookier 62
3.6.6 Sætte cookier 62
3.6.7 Aflæse cookier 63
3.7 Avanceret: HTTP-protokollen 65
3.7.1 Eksempel på kommunikation 65
3.7.2 Formulardata med GET-metoden 66
3.7.3 Formulardata med POST-metoden 66
3.7.4 Cookier 67
3.7.5 Øvelse 67
3.7.6 Sende mere data til klienten løbende 67
3.7.7 Eksempel: Syvtabellen langsomt 68
3.7.8 Eksempel: Følge med i serverens logfil 68
4 Videre med JSP 70
4.1 Sessioner 71
4.1.1 Eksempel: En ønskeseddel 71
4.1.2 Sessioner er individuelle 72
4.1.3 At kassere en session 72
4.1.4 Avanceret: URL Rewriting 72
4.2 Eksempel: Login med adgangskode 73
4.2.1 Inkludering af kodefragmenter 75
4.3 Omdirigering 77
4.3.1 Klient-omdirigering (response.sendRedirect()) 77
4.3.2 Server-omdirigering (<jsp:forward />) 78
4.4 Appendiks: Almindelige JSP-koder 79
4.5 Appendiks: Implicit definerede objekter 80
4.5.1 request - anmodningen fra klienten 80
4.5.2 response - svaret til klienten 81
4.5.3 out - skrive tekst til klienten 81
4.5.4 session - objekt der følger den enkelte bruger 82
4.5.5 application - fælles for hele webapplikationen 83
4.5.6 config - den enkelte websides konfiguration 84
4.5.7 page - selve JSP-siden 85
4.5.8 exception - undtagelse opstået under kørsel 85
4.5.9 pageContext - alle objekterne samlet i ét 85
4.6 Opgaver 86
4.7 Test dig selv 86
4.8 Resumé 86
4.9 Avanceret: Fejlfinding i JSP 87
4.9.1 Del og hersk 87
4.9.2 Tjek om blokparenteser er balancerede 87
4.9.3 Kigge på den oversatte servlet 87
4.9.4 Kigge i log-filerne 87
4.9.5 Forstå staksporet 88
4.9.6 Hvis klasse(bibliotek)er ikke kan findes 88
5 Brug af databaser 91
5.1 Strategier til databaseadgang 92
5.1.1 Hvilken database skal man vælge 92
5.2 I gang med databaser og MySQL 92
5.2.1 SQL-kommandoer og forespørgsler 93
5.2.2 Administrere databasen fra kommandolinjen 93
5.2.3 Administrere databasen med MySQLCC 95
5.2.4 Administrere fra et udviklingsværktøj 95
5.3 Kontakt til database fra Java (JDBC) 97
5.3.1 Kontakt gennem ODBC under Windows 97
5.3.2 Kontakt til MySQL-database 97
5.3.3 Kontakt til en Oracle-database 98
5.4 Kommunikation med database fra Java 98
5.4.1 SQL-kommandoer og forespørgsler fra Java 99
5.4.2 På forhånd forberedt SQL 100
5.5 Eksempel - gæstebog 102
5.5.1 Oprette tabellen i databasen 102
5.5.2 Visning af gæstebogen (gaestebog.jsp) 103
5.5.3 Indskrivning (indskriv_i_gaestebog.jsp) 104
5.6 Test dig selv 105
5.7 Resumé 105
5.8 Avanceret: Optimering 106
5.8.1 Bruge den rigtige databasedriver 106
5.8.2 På forhånd forberedt SQL 106
5.8.3 Lægge opdateringer i kø (batch) 107
5.8.4 Lægge 'stored procedures' i databasen 107
5.8.5 Forbindelsespuljer (Connection pooling) 108
5.8.6 Metadata 108
5.8.7 Eksempel: Webgrænseflade til database 108
5.9 Avanceret: JDBC RowSet 110
5.9.1 JdbcRowSet 110
5.9.2 CachedRowSet 110
5.9.3 FilteredRowSet og JoinRowSet 111
5.9.4 WebRowSet 112
5.9.5 Mere information 114
6 JSTL - JSP Standard Tag Library 116
6.1 Kernefunktionalitet (<c: >) 117
6.1.1 Regneudtryk med EL - Expression Language 118
6.1.2 Variabler 118
6.1.3 Virkefelter 119
6.1.4 Sikkerhed og behandling af formularer 119
6.1.5 Løkker 120
6.1.6 Oversigt 121
6.2 Internationalisering og formatering (<fmt: >) 122
6.2.1 Oversigt 122
6.2.2 Eksempel på brug 123
6.3 JSTL og databaser (<sql: >) 124
6.3.1 Oversigt 125
6.4 XML-behandling (<x: >) 125
6.4.1 Syndikering med XML-funktionerne i JSTL 125
6.4.2 Caching af nyhedskilder 127
6.4.3 WebRowSet og XML-transformering med JSTL 127
6.4.4 Oversigt 129
6.5 Forskellige funktioner (<fn: >) 129
6.5.1 Oversigt 130
6.6 Installation af JSTL og EL 130
6.6.1 Versionsproblemer med JSTL og EL 131
6.7 JSTL versus almindelig javakode i JSP 132
6.8 Kommunikation mellem JSTL og Java 132
6.8.1 Javabønner 133
6.8.2 Implicit definerede objekter i EL 133
6.9 Mere læsning 133
7 Inde i webserveren 134
7.1 Servletter 135
7.1.1 Anmodningsmetoder 137
7.1.2 Hvornår bruge JSP og hvornår bruge servletter 137
7.2 Installation af en servlet 138
7.2.1 Flere URLer til samme servlet 138
7.2.2 Avanceret: Automatisk binding af servletter 139
7.3 Avanceret: JSP-siders interne virkemåde 139
7.3.1 Kigge i de genererede servletter 139
7.3.2 Eksempel 139
7.3.3 JSP-siders livscyklus 141
7.4 Webapplikationer 142
7.4.1 Pakkede webapplikationer (WAR-filer) 142
7.5 Samlet driftsbeskrivelse (web.xml) 143
7.6 Test dig selv 146
7.7 Resumé 146
8 Sikkerhed og adgangskontrol 147
8.1 Kryptering og SSL 148
8.1.1 I gang med HTTPS 148
8.1.2 HTTPS-standardporten 149
8.2 Adgangskontrol 149
8.2.1 Containerstyret adgangskontrol 150
8.2.2 Hurtigt i gang med adgangskontrol 150
8.3 Datakilder til adgangskontrol 151
8.3.1 Brugerdata fra tekstfil 151
8.3.2 Andre datakilder 152
8.3.3 Brugerdata fra database 153
8.4 Former for brugeridentifikation 154
8.4.1 Kryptering af brugerdata (transportgarantier) 154
8.4.2 Eksempel: Formularbaseret login 154
8.5 Sikkerhed i en webapplikation 157
8.5.1 HTML-injektion 157
8.5.2 SQL-injektion 157
8.5.3 Cross-site scripting (XSS) og sessionskapring 157
8.5.4 Eksempel på sessionskapring 158
8.5.5 Måder at beskytte sig mod sessionskapring 158
8.5.6 Bortfiltrering af ulovlige tegn 159
8.5.7 Opgave: Lave en sikker gæstebog 159
8.5.8 Løsning: Sikker gæstebog 160
9 Javabønner i JSP-sider 163
9.1 Javabønner 164
9.1.1 Bruge javabønner fra en JSP-side 164
9.1.2 Ønskeseddel med ArrayList som javabønne 165
9.2 At definere en javabønne og bruge den 166
9.2.1 Pakker og filplaceringer for klasser 166
9.2.2 Egenskaber på en javabønne 166
9.2.3 Sætte egenskaber fra en JSP-side 167
9.2.4 Aflæse bønnens egenskaber 168
9.2.5 Virkefelter for javabønner 168
9.2.6 Avanceret: Virkemåden af <jsp:useBean... /> 169
9.2.7 Initialisering af javabønner 170
9.2.8 Avanceret: Virkemåden af <jsp:setProperty .../> 170
9.3 Egenskaber på en javabønne 171
9.3.1 Indekserede egenskaber 171
9.4 Eksempel: En dagskalender 173
9.4.1 Udseende 173
9.4.2 Programmets virkemåde 174
9.4.3 HTML-siden (kalender.jsp) 175
9.4.4 Bruger-bønnen (Bruger.java) 176
9.4.5 Kalender-objektet (Kalender.java) 177
9.5 Eksempel: Login og brugeroprettelse 179
9.5.1 Brug af eksemplet 179
9.5.2 Login-bønnen 179
9.5.3 Login-siden 185
9.5.4 Brugeroprettelsen 186
9.5.5 En beskyttet side 188
9.5.6 Før eksemplet kan køre på din egen server 188
9.5.7 Opgaver 189
9.6 Test dig selv 190
9.7 Resumé 190
10 Arkitekturer i webprogrammering 191
10.1 Trelagsmodellen 192
10.2 Model 1 og model 2-arkitekturer 192
10.2.1 Model 1-arkitektur: Logik sammen med HTML 192
10.2.2 Model 2-arkitektur: Logik adskilt fra HTML 192
10.3 Model-View-Controller-arkitekturen 193
10.3.1 Modellen 193
10.3.2 Præsentationen 194
10.3.3 Kontrolløren 194
10.3.4 Informationsstrøm gennem MVC 194
10.4 Eksempel på MVC: Bankkonti 196
10.4.1 Model (Bankmodel.java og Kontomodel.java) 196
10.4.2 Javabønnen (Brugervalg.java) 197
10.4.3 Præsentationen (JSP-siderne) 199
10.4.4 Kontrolløren (kontrol.jsp) 202
10.4.5 Fejlhåndtering (fejl.jsp) 204
10.4.6 Hvordan præsentation henviser til kontrollør 205
10.5 Designmønster: Frontkontrol 205
10.5.1 Variationer (til større applikationer) 205
10.5.2 Implementering af en Frontkontrol 206
10.5.3 Eksempel på en Frontkontrol 206
10.6 Test dig selv 208
10.7 Resumé 208
10.8 Rammer for webarkitekturer 209
10.8.1 Jakarta Struts 209
10.8.2 JSF - Java Server Faces 209
10.9 Mere læsning 210
11 XML, indholdssyndikering og webtjenester 211
11.1 Introduktion til XML 212
11.1.1 XML-formatet 212
11.1.2 DOM - Dokumentets objektmodel 213
11.1.3 XPath - stier i XML-dokumenter 214
11.1.4 Transformering af XML-data (XSL) 214
11.1.5 XML-behandling (SAX og DOM) 215
11.1.6 Dokumenttypedefinitionen 215
11.2 XML-behandling i Java 216
11.2.1 Brug af DOM og XPath 216
11.2.2 Nem generering af XML fra Java-objekter 218
11.3 Syndikering (nyhedsfødning) 219
11.3.1 Nyhedskildernes format 220
11.3.2 Fremvisning med RSS-taglib 222
11.3.3 Fremvisning med Java 223
11.3.4 Syndikering med JSTL 225
11.3.5 Mere information og nyhedskilder på nettet 226
11.4 Principper i metodekald over netværk 227
11.4.1 Systemer til metodekald over netværk 227
11.5 Webtjenester 228
11.5.1 SOAP - kommunikation med webtjenesten 228
11.5.2 WSDL - beskrivelsen af webtjenesten 229
11.5.3 UDDI - offentlige lister over webtjenester 229
11.5.4 Bruge Googles webtjenester til søgninger 229
11.5.5 Genere Java-API fra webtjeneste (WSDL) 230
11.5.6 Generere webtjeneste (WSDL) fra Java-klasse 231
11.5.7 Avanceret: Strukturen i WSDL- og SOAP-filer 232
11.5.8 Yderligere læsning 235
11.6 Test dig selv 235
11.7 Resumé 236
12 Enterprise JavaBeans 238
12.1 J2EE-platformen 239
12.2 EJB-bønner 239
12.2.1 Kildeteksten i en bønne 240
12.2.2 Eksempel: Veksler 240
12.2.3 EJB-Containerens information om Veksler 241
12.3 Bruge en EJB-bønne 242
12.3.1 JNDI (Java Naming and Directory Interface) 242
12.3.2 Brug af Veksler-bønnen fra en klient 243
12.3.3 Brug af Veksler fra en webapplikation 244
12.3.4 Avanceret: Lokale interfaces 245
12.4 Typer af EJB-bønner 245
12.4.1 Sessionsbønner 245
12.4.2 Entitetsbønner 246
12.4.3 Meddelelses-drevne bønner 247
12.4.4 Tilstandsfuld sessionsbønne: Brugeradgang 247
12.4.5 Guide til sessionsbønner i Oracle JDeveloper 248
12.5 Entitetsbønner 250
12.5.1 Eksempel på en entitetsbønne 251
12.5.2 Fremfindingsmetoder 251
12.5.3 Idriftsætte bønnen 252
12.5.4 Bruge bønnen 254
12.5.5 Fremfindingsmetoder og EJB Query language 254
12.5.6 EJB 2.0 og EJB Query language (EJBQL) 255
12.5.7 Opgaver 256
12.5.8 Entitetsbønne med CMP fra tabel i JDeveloper 256
12.5.9 Øvelse i EJBQL 257
12.6 Transaktioner 258
12.6.1 Transaktioner i JDBC (resumé) 258
12.6.2 Transaktioner i en EJB-container 258
12.6.3 Deklarativ transaktionsstyring af metodekald 259
12.7 Test dig selv 261
12.8 Resumé 261
13 Internationale sider 262
13.1 Internationale programmer 263
13.1.1 Formatering af tidspunkter 263
13.1.2 Formatering af tal og beløb 264
13.1.3 Bruge Locale-objekter 264
13.1.4 De mulige lokalindstillinger 265
13.2 Eksempel: Webside med alle sprog 266
13.3 Tegnsæt og HTML-entiteter 268
13.4 Tekstindhold i resursefiler 268
13.4.1 Hvordan der søges efter resurser 269
13.4.2 Avanceret: Binære resursefiler 270
13.4.3 Avanceret tekstformatering 270
13.5 En international fælleskalender 272
13.5.1 Slutbrugerens oplevelse 272
13.5.2 Fuld separation mellem layout og sprog 273
13.6 Yderligere læsning 276
Stikordsregister 277
14 Rettelser og tilføjelser 283
14.1 Vigtige rettelser til 1. udgave 283
14.2 Større tilføjelser til 1. udgave 284
14.2.1 Sende mere data til klienten løbende 284
14.2.2 Eksempel: Syvtabellen langsomt 284
14.2.3 Eksempel: Følge med i serverens logfil 284
14.2.4 Metadata 285
14.2.5 Eksempel: Webgrænseflade til database 285
15 Java Server Faces 288
15.1 Kernefunktionalitet (<f: >) 289
15.2 HTML-funktionalitet (<h: >) 289
15.3 Visning af gæstebog fra JSF 290
15.4 Opdatering af gæstebog fra JSF 292
15.4.1 Avanceret: Validatorer 293
15.4.2 Avanceret: Fejlmeddelelser 293
15.4.3 Avanceret: Resursebundter 293
15.4.4 At gemme data i en javabønne 294
15.4.5 Avanceret: Startværdier for egenskaber 294
15.5 Aflæsning af JSF-bønnes egenskab 295
15.5.1 Adgang til de implicitte objekter fra JSF 295
15.6 JSF - anbefalet praksis 296
15.6.1 At gemme midlertidige data i en HashMap 296
15.7 Resumé 298
15.7.1 JSF og JDeveloper 298
15.7.2 Måder at aktivere JSF-komponenter 298
15.8 Kilder til JSF-komponenter 299
15.8.1 Oracle ADF Faces 299
15.8.2 Apache MyFaces 299
15.8.3 Andre kilder 300
15.9 EL - Expression Language 300
15.10 Om associative tabeller (HashMap) 300
http://javabog.dk/ - Webprogrammering med Java Server Pages af Jacob Nordfalk.
Licens og kopiering under Åben Dokumentlicens (ÅDL)
hvor intet andet er nævnt (72% af værket).
Ønsker du at se de sidste 28% af dette værk (275315 tegn)
skal du købe bogen. Så får du pæne figurer og layout, stikordsregister og en trykt bog med i købet.