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
En overfladisk forståelse af dette kapitel forudsættes i det meste af bogen.
Java Server Pages (forkortet JSP) giver dig en lang række af muligheder for at gøre din hjemmeside mere levende.
JSP benyttes i mange sammenhænge, hvor man ønsker dynamiske indhold i HTML-sider, bl.a. i debatfora, postlister, afstemninger og e-handels-løsninger.
Målet med denne bog er, at give en grundig indførsel i, hvordan du kommer i gang med at bruge JSP. Den starter fra bunden, men kræver dog, at du i forvejen har et godt kendskab til HTML. JSP er mere avanceret end HTML og det er en stor fordel hvis du allerede har prøvet at programmere i Java (eller et sprog med samme syntaks, f.eks. JavaScript eller C/C++), da man kan bruge Java som programmeringssprog i JSP. Databasekendskab er også en fordel, da man ofte har brug for at gemme nogle oplysninger.
Hvis du undervejs får brug for hjælp kan du besøge nogle af henvisningerne i afsnit 1.6. Der finder du svar på spørgsmål lige fra helt banale begynderproblemer til de meget avancerede spørgsmål.
Hjemmesider er skrevet i sproget HTML (HyperText Markup Language). Det forudsættes at du har rimeligt kendskab til HTML i forvejen, så hvis nedenstående kommer som en overraskelse for dig, bør du nok starte med en HTML-vejledning i stedet.
Her er et eksempel på en HTML-side:
<html> <head><title>Simpel hjemmeside</title></head> <body> <h1>En simpel hjemmeside</h1> <p>Velkommen til min lille <i>hjemmeside</i>. </p> <p>Jeg hedder <b>Jacob</b> og underviser på <a href="http://www.cv.ihk.dk"> Center for Videreuddannelse</a> på <a href="http://ihk.dk"> Ingeniørhøjskolen i København</a>. </p> <p>Her kan du se hvordan jeg ser ud:<br> <img src="jacob.jpg"></p> </body> </html>
Til højre ses hvordan en netlæser (eng.: web browser), her Konqueror under Linux, viser siden. Det, der ikke er indkapslet i < og > er tekst, der bliver vist på skærmen.
Koderne mellem < og > kaldes HTML-koder (eng.: tags) og fortæller netlæseren hvordan den skal vise teksten. Eksempelvis markerer <h1> at der kommer en overskrift, der skal vises med større skrift end resten.
De fleste koder skal afsluttes med en slut-kode (f.eks skal <h1> afsluttes med </h1>). Koderne kan have attributter, der giver ekstra information (f.eks har koden <img>, der bruges til at vise et billede, attributten src, der angiver filnavnet på billedet, der skal vises det pågældende sted: <img src="jacob.jpg">).
En JSP-side er en en HTML-side med endelsen .jsp, som udover HTML også indeholder noget programkode, der er skrevet i Java. Javakoden afvikles på webserveren, og resultatet sendes til klienten, dvs. brugerens netlæser (eng.: web browser).
JSP (Java Server Pages) er udviklet af Sun Microsystems og fællesskabet omkring Java.
Den bedste måde at forklare, hvordan en serverside-teknologi (og dermed JSP) fungerer på er at sammenligne det med almindelig HTML.
Forestil dig at du i din netlæsers adresselinje taster adressen (URL1) på et HTML-dokument, f.eks. http://minesider.dk/dokument.html. Det kaldes at anmode (eng.: request) om en HTML-side. Da sker der det følgende:
Serveren finder HTML-filen
Serveren sender filen til klienten
Serveren sender altså bare HTML-filen afsted til klienten.
Hvis du i stedet taster en URL på en JSP-side, f.eks. http://minesider.dk/dokument.jsp, og dermed anmoder om et JSP-dokument, kommer serveren på arbejde:
Serveren finder JSP-filen
Serveren kigger filen igennem for Java-kode
Serveren udfører de beregninger, Java-koden foreskriver
Serveren sender resultatet til klienten
Det er vigtigt at forstå at klienten kun ser resultatet af serverens beregninger - ikke selve instrukserne. JSP stiller derfor ikke krav til hvilken netlæser dine besøgende har, men til serveren som dine sider ligger på.
Hvis du vælger "vis kilde" (eng.: View Source) når du anmoder om at se et JSP-dokument, kan du ikke se JSP-koderne - kun almindeligt HTML. Du kan altså ikke se, hvordan en JSP-side er lavet, men er nødt til at lære JSP på andre måder - f.eks. ved at læse denne bog.
Denne bog handler om at skrive kode, der udføres på serveren, og det betyder at du skal installere et program på din computer, som gør den i stand til at fungere som en server. Der er naturligvis også den mulighed, at du bruger en eksisterende server, der understøtter JSP(f.eks. et webhotel), og at du så lægger dine sider der, når du vil prøve dem.
Det antages at du allerede har et redigeringsværktøj til HTML og ved hvordan det bruges.
Desuden har du brug for adgang til en PC eller en webserver, som kan afvikle JSP.
Den mest skrabede løsning, man kan vælge at redigere JSP-siderne i, er et ikke-Java-orienteret program, som for eksempel Notesblok under Windows eller kedit (eller emacs) under Linux. Så er det nødvendigt at installere en server, som kan afvikle JSP (se afsnit 1.4).
Når man programmerer synes de fleste dog, at det er rarere at benytte et Java-udviklingsmiljø, der kan hjælpe en med:
Redigering af kildetekster (skrevet i HTML, JSP og Java).
Oversættelse af kildeteksten og tjek for om den er syntaktisk korrekt.
Nem kørsel og fejlfinding (i udviklingsmiljøets indbyggede webserver).
De fleste udviklingværktøjer er opbygget med en menulinje øverst, der indeholder tilgang til filhåndtering, projektstyring og alle nødvendige værktøjer, hvoraf den vigtigste er "Run". "Run" oversætter først kildeteksten og starter derefter fortolkeren. Uddata kan ses i den nederste ramme. "Debug" (der findes under "Run") bruges til fejlfinding af programmer og giver mulighed for at udføre programkoden trinvist.
Databaseproducenten Oracle udgiver udviklingsværktøjet JDeveloper:
JDeveloper kan en masse meget avancerede ting, men kan for begyndere være indviklet at bruge, på grund af de mange muligheder.
JDeveloper er skrevet i Java, kræver 256 MB RAM og fås bl.a. til Windows og Linux.
Den fulde udgave kan hentes gratis til privat- og undervisningsbrug på http://oracle.com. Til kommercielt brug skal man købe en licens.
Sun har udgivet sit eget udviklingsmiljø, Sun Java Studio Creator (tidligere kaldet Forte og Sun ONE Studio), også skrevet i Java, til Windows, Linux og Sun Solaris.
Udviklingsværktøjet understøtter udvikling af JSP (sørg for at have alle web-moduler installeret):
Vælg først File|New...|JSP & Servlets|Web Module og vælg en mappe du vil have dine JSP-filer, og derefter File|New...|JSP & Servlets|JSP og vælg mappen du lige har oprettet og giv et filnavn til JSP-siden (uden .jsp-endelse, det gør værktøjet selv). Højreklik på filen og vælg 'Execute' for at køre JSP-filen i værktøjets interne webserver.
En basisudgave af programmet har fået Åben Kildekode (Open Source) under navnet NetBeans og kan hentes gratis på http://netbeans.org. En prøveudgave af Sun Java Studio Creator kan hentes gratis på http://developers.sun.com/prodtech/javatools/jscreator/
JBuilder fra Borland er et af de mest populære Java-udviklingsmiljøer. JBuilder er skrevet i Java og kører på både Macintosh, Windows, Linux og Sun Solaris. Det anbefales at have 256 MB RAM.
En basisversion af JBuilder, der desværre ikke tillader udvikling i JSP, kan hentes gratis fra http://borland.com/jbuilder. Ønsker man adgang til de mere avancerede funktioner, herunder udvikling i JSP, skal programmet købes eller man må nøjes med en prøveversion, der kun virker i 30 dage.
IBM WebSphere Studio - baseret på Open Source-initiativet Eclipse (http://eclipse.org) er et andet stærkt udviklingsmiljø til bl.a. JSP. En gratis prøveversion kan hentes på IBMs hjemmeside: http://www-306.ibm.com/software/awdtools/studioappdev/.
De fleste udviklingsværktøjer understøtter udvikling af JSP-sider og har en server indbygget.
Har du et Java-udviklingsmiljø der understøtter webprogrammering behøver du ikke installere en server for at prøve at programmere JSP-sider
Er du begynder foretrækker du sandsynligvis at lade udviklingsmiljøet tage sig af detaljerne og bruge dens server.
Vil du installere din egen server skal du have et Java-udviklingskit (kaldet JDK eller J2SE) installeret på din maskine. Java kan hentes fra http://java.sun.com, men har du allerede et Java-relateret udviklingsmiljø (f.eks JBuilder, JDeveloper, Netbeans/Forte, ...) på din maskine, er Java allerede installeret2.
Er du i tvivl kan det sjældent skade at installere Java en gang til :-)
Der findes rigtig mange Java-webservere på markedet, lige fra helt små (endda en, der kun fylder 2 megabyte) til kæmpeprogrammer fra store firmaer som Borland, Oracle og IBM:
Apache Tomcat - http://jakarta.apache.org/tomcat/
Resin - http://www.caucho.com/
IBM Websphere - http://www-4.ibm.com/software/webservers/
Oracle Application Server - http://www.oracle.com/appserver/java_edition.html
BEA WebLogic - http://www.bea.com/products/weblogic/
Borland Enterprise AppServer - http://www.borland.com/besappserver/
Macromedia JRun - http://www.macromedia.com/software/jrun/
Orion Application Server - http://www.orionserver.com/
Jetty - http://jetty.mortbay.com/jetty/
Blazix Java Application Server - http://www.blazix.com/
Kun de første to vil blive beskrevet i det følgende.
Jakarta Tomcat (http://jakarta.apache.org/tomcat/) er Suns officielle implementering af en JSP-server. Den har for programudviklere en speciel status som reference-implementering, sådan at den, i tvivlstilfælde, definerer hvordan en JSP-webserver bør fungere, og viser dermed de andre producenter af JSP-servere, hvad de har at rette sig efter.
Tomcat har Åben Kildekode (eng.: Open Source) og er gratis at bruge både til ikke-kommercielle og kommercielle formål.
Den kan hentes på adressen http://jakarta.apache.org/builds/jakarta-tomcat/. Hjemmesiden er lidt svær at finde rundt i, men du skal ende med at stå med en fil der hedder f.eks. jakarta-tomcat-5.0.27.exe (installationsprogram - anbefales hvis du bruger Windows) eller jakarta-tomcat-5.0.27.zip (kan bruges under både Linux, Windows og andre styresystemer).
Versionsnummeret kan selvfølgelig variere, men til de ting du kommer til at bruge her gør det ikke den store forskel hvilken version du bruger.
Bruger du ZIP-filen er der et par skridt du skal ordne selv:
Pak ZIP-filen med Tomcat ud, f.eks. i din hjemmemappe og gå ind i bin-mappen:
cd jakarta-tomcat-5.0.27/bin
Miljøvariablen JAVA_HOME skal være sat til at pege på din Java-installation.
Det kan du gøre ved at skrive (erstat stien med der, hvor Java er installeret)
export JAVA_HOME=/usr/local/jdk1.4
på kommandolinjen eller ved at redigere filen catalina.sh eller setclasspath.sh og indsætte linjen øverst. Sørg også for at alt i bin-mappen kan eksekveres (chmod a+x *).
Start derefter Tomcat:
./startup.sh
Pak ZIP-filen med Tomcat ud, f.eks. i C:\ (roden på C-drevet). Derefter skal du ind i kontrolpanelet og definere miljøvariablen JAVA_HOME til at pege på der, hvor JDK er installeret (f.eks. C:\JBuilderX\jdk1.4). Du kan også gå ind i Tomcats bin-mappe og redigere filen catalina.bat eller setclasspath.bat og sætte linjen
set JAVA_HOME=C:\JBuilderX\jdk1.4
ind øverst i filen (erstat stien med der, hvor Java er installeret). Det kan være du også skal højreklikke på startup.bat og under Egenskaber vælge at reservere mere hukommelse til miljøvariabler.
Start derefter Tomcat, ved at dobbeltklikke på startup.bat.
Du kan nu gå i gang med at lege med Tomcat og prøve JSP-eksemplerne, der følger med Tomcat. Det er også en god idé at udforske filstrukturen (med f.eks. Stifinder) og blive fortrolig med mappestrukturen (vist til højre).
Tjek først at Tomcat kører ved at åbne http://localhost:8080/. Gør den ikke det, må du læse installationsvejledningen der følger med Tomcat nøjere og evt. kigge på log-filerne (der ligger i undermappen logs/).
Websiderne er opdelt i grupper, der kaldes webapplikationer. Hver webapplikation ligger under dens eget navn i en mappe under webapps/.
F.eks. ligger JSP-eksemplerne under webapps/jsp-examples/ på filsystemet og kan tilsvarende findes i gennem webserveren på adressen http://localhost:8080/jsp-examples/.
Webapplikationer forklares nærmere i afsnit 7.4.
Hvis JSP-eksemplerne ikke virker (men du i øvrigt godt kan se almindelige HTML-sider og servletter gennem din Tomcat på http://localhost:8080/) så er det nok fordi Tomcat ikke kan finde filen tools.jar (der findes i din Java-installation, sandsynligvis under jdk1.4/lib/tools.jar). Så får du nok fejlen "java.lang.NoClassDefFoundError: sun/tools/javac/Main", når du forsøger at se en JSP-side.
Sørg da for, at Tomcat kender jdk1.4/lib/tools.jar fra JDKet, f.eks. ved at indføje den i CLASSPATH eller kopiere den ind i ext/-mappen for din JDK (jdk1.4/jre/lib/ext/). Se evt. afsnit 4.9.6, Hvis klasse(bibliotek)er ikke kan findes.
Bemærk at du skal have JDK (Java Developers Kit, også kaldet J2SE - Java 2 Standard Edition) installeret. JRE (Java Runtime Environment) er ikke tilstrækkeligt.
En anden populær webserver er Resin fra Caucho (http://caucho.com). Den er der mange der synes er betydeligt lettere at installere og bruge end Tomcat.
Resin skal blot hentes fra http://caucho.com og pakkes ud, hvorefter httpd.exe (Windows) eller httpd.sh (Linux), der ligger inde i bin-mappen, startes.
Derefter kan man prøve den ved at åbne http://localhost:8080/, klikke på Demo og prøve JSP-eksemplerne (de ligger som filer i doc/examples/basic/).
Resin har Åben Kildekode og er gratis at bruge til ikke-kommercielle formål. Til kommercielle formål skal en licens købes.
Den rareste ting ved Resin i forhold til Tomcat viser sig først, når man begynder at arbejde med servletter og separate java-klasser: Resin oversætter selv automatisk .java-kildetekstfilerne til binære .class-filer og indlæser dem. I Tomcat skal man selv sørge for at oversætte .java-kildetekst til .class-filer.
JSP er, som vi vil se i næste kapitel, HTML-sider med noget ekstra programkode, der udføres på serveren. Dette princip er også brugt i en række andre web-programmeringssprog, såsom det ekstremt populære PHP (der står for PHP: Hypertext Preprocessor) og det mindre populære ASP (Active Server Pages) fra Microsoft.
Kender man allerede Java er JSP det nemmeste at gå til.
Kender man ikke Java er JSP sværere at
lære end PHP eller ASP. JSP bruger de almindelige Java-klasser
og følger Java-syntaksen, som bl.a. skelner mellem store og
små bogstaver, og det kan være svært for
begyndere.
Man kan dog anvende JSTL i sine JSP-sider i stedet.
JSTL (der er beskrevet i afsnit 2.1.5) er et HTML-lignende sprog,
der er betydeligt lettere at lære end Java.
JSP (og Java) er platformsuafhængigt, så man kan frit vælge om ens server skal køre på Windows, Linux, Mac eller andre UNIX'er (PHP kører også næsten alle platforme, mens ASP i praksis kun kører på Microsoft Windows).
Webapplikationer skrevet i JSP kan køre på en række forskellige webservere som f.eks. Apache Tomcat, BEA WebLogic, IBM WebSphere, Oracle Application Server, Resin og en snes andre. Populære webservere som Apache og IIS (Microsoft Internet Information Server) kan nemt udvides til at understøtte JSP via et plugin.
JSP er ikke så udbredt til små projekter som PHP eller ASP. Du vil sandsynligvis finde flere på nettet, der kan hjælpe dig med disse sprog end med JSP.
Der er også flere webhoteller, der understøtter PHP eller ASP end JSP. Hvis du planlægger at bruge et webhotel (i stedet for at installere din egen server) skal du lige tjekke, om du kan finde et der passer til dine behov og understøtter JSP.
JSP er meget udbredt til større projekter, som det er meget velegnet til.
JSP er en velintegreret del af J2EE (Java 2 Enterprise Edition), som er et meget udbredt serversystem der findes bred understøttelse for i industrien.
Som tommelfingerregel er det en god idé at vælge JSP hvis du kender Java i forvejen eller hvis du gerne vil lære et sprog og en metodik, der også fungerer sammen med store serversystemer.
http://html.dk har en glimrende introduktion til HTML og relaterede sprog som CSS (typografier i hjemmesiden - eng: Cascading Style Sheets) og JavaScript (kode der køres i klientens netlæser).
Man kan læse mere om JSP på de følgende sider:
Har du brug for hjælp til JSP eller installation af serverne så kig forbi
Diskussionsgruppen dk.edb.programmering.java
(kan findes på
http://groups.google.dk/groups?q=dk.edb.programmering.java)
På http://java.sun.com/products/jsp/jsp-asp.html kan du se en sammenligning mellem JSP og ASP.
1 URL - Uniform Resource Locator - den adresse, som en hjemmeside har på internettet.
2I det tilfælde kan du bruge JDKet der følger med udviklingsmiljøet. I de fleste ligger JDKet i en mappe med navnet JDK, f.eks. ligger Borlans JBuilders JDK i mappen JBuilderX/jdk1.4/)