



<html>
<head>
  <title>javabog.dk - Webprogrammering med Java Server Pages - Webprogrammering med Java Server Pages</title>
  <link rev="stylesheet" type="text/css" href="../typografi.css">
  <meta name="description" content="Lærebog i Java. Af Jacob Nordfalk. Udkommet hos Forlaget Globe">
  <meta name="keywords" content="designmønster, programmering, OOP, objekter, klasser, objektorienteret programmering, Java, JSP, lærebog, UML, IT">
</head>
<body bgcolor="#ffffff">



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

</body>
</html>
