Webprogrammering
med Java og Linux

Jacob Nordfalk

Center for Videreuddannelse

Ingeniørhøjskolen i København

Linuxforum 2004

Lørdag 6. marts 17.00-17.45

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

Program

Om Jacob Nordfalk

Reklame

Intro til Java Server Pages

Opsætning af JSP-server

Udviklingsværktøjer til webudvikling

Borland JBuilder, Oracle JDeveloper

Forbindelse til database (MySQL)

Model 1 og model 2 webudvikling

Model-View-Controller-arkitekturen

Nye strømninger i JSP

JSTL - Java Standard Tag Library

J2EE (Java 2 Enterprise Edition)

Om Jacob Nordfalk

Først cand.scient. i fysik

Så programmør for DSB

rejseplanen.dk og Byens Puls i Java

Nu lektor på Ingeniørhøjskolen i København

... og forfatter til et par Java-bøger

Sprogligt interesseret med holdninger

Træffende begreber på dansk øger forståelsen!

Esperanto (internationalt sprog)

Tilhænger af åben kildekode (Open Source)

Inkarneret Linux-bruger

Bøger er (mest) under Åben Dokumentlicens

Åben Dokumentlicens (ÅDL)

Dette foredragsmateriale er under ÅDL

Du har lov til frit at kopiere dette værk

Ændrer du i værket, skal de dele, der stammer fra dette værk, igen frigives under ÅDL

http://www.sslug.dk/linuxbog/licens.html

Reklame - http://javabog.dk

Indhold:

Komponentbaseret udvikling

20 designmønstre

Javas standardbibliotek

Java-teknologier

85% af bogen er under ÅDL

og er gratis tilgængelig på

http://javabog.dk/VP

Signerede eksemplarer i bogladen :-)

Andre værker:

http://javabog.dk/OOP – grundbog

http://javabog.dk/JSP (på vej)

Reklame: kursus i
Linux serveropsætning

- Opsætning af webserver og andre tjenester (FTP, DHCP, post, proxy, ...)

- Linux som fil/printerserver for Windows-maskiner og andre UNIX-maskiner

- Diskkvoter

- Brugeradministration

- Sikkerhed og firewalls

- Filsystemets struktur

- Logfiler

- Konfiguration af kernen

- Søgning efter hjælp

- De forskellige distributioner af Linux

9 tirsdage 17-20:30 i Ballerup

Starter på tirsdag!

Info: http://cv.ihk.dk og stand L

Java Server Pages

HTML-sider med Java-kode i

Java-koden fortolkes og udføres på serveren

Oversættes til binær (maskin)kode ved første forespørgsel

Interaktive sider

HTML-formular vises for brugeren

Parameter med indtastning sendes med forespørgsel

Java-koden læser indtastning

Indhold genereres afhængig af brugerens indtastning

Interaktive sider

HTML-formular vises for brugeren

Parameter med indtastning sendes med forespørgsel

Java-koden læser indtastning

Indhold genereres afhængig af brugerens indtastning

Sessioner

Hvordan holder man styr på brugerne?

Hver bruger får tildelt et session-objekt når han besøger en JSP-side

Sessionen følger brugeren

lige meget hvilken side han/hun er inde på

er nyttigt til at huske data om brugeren

Man kan knytte sine egne objekter til sessionen

F.eks en ArrayList med navnet "ønsker":
<jsp:useBean id="ønsker" scope="session"
class="java.util.ArrayList" />

Sessioner i JSP

Opsætning af Java-webserver
(Jarkata Tomcat)

Installér Java (JDK)

tjek at java er i stien

Installér og afprøv Tomcat

hent fra http://jakarta.apache.org/binindex.cgi

tar -xzvf jakarta-tomcat-5.0.18.tar.gz

bin/startup.sh

tail -f logs/*

mozilla http://localhost:8080/

Udforsk webapps/

Samspil mellem
Apache og Tomcat

Godt ved stor serverbelastning/høj sikkerhed

Apache klarer statisk indhold (f.eks. billeder)

Apache bruger Tomcat til dynamisk indhold

Lidt besværligt at sætte op

Gør det kun hvis det er nødvendigt

Flere forskellige måder det kan ske på (connectors)

Apache-konfiguration (eksempel)

Find mod_jk2 et sted, f.eks. www.jpackage.org

Indlæs modul fra Apaches httpd2.conf

Redigér workers2.properties

Angiv hvilke stier Tomcat skal tage sig af

Nem installation af en webapplikation

WAR-fil (Web ARchive)

= ZIP-fil med hel applikation

Hent WAR-fil

Læg i webapps/ og den installeres automatisk

Al opsætning findes i WEB-INF/web.xml

Udviklingsværktøjer til webudvikling

Borland JBuilder

Udviklingsværktøjer til webudvikling

Oracle JDeveloper

Forbindelse til database (MySQL)

Installér MySQL

test-database god i starten

MySQLCC - grafisk værktøj

Installér JDBC-driver

Connector/J fra mysql.com

Læg JAR-fil i java/jre/lib/ext/

Kontakt fra Java-kode:

Model 1

Programlogikken sammen med HTML-koden

Nemt at starte med

Simpel struktur

Godt til små projekter

Programmør =
HTML-designer

Svært at adskille logik og HTML

Redundant kode

Model 2

Programlogikken adskilt fra HTML-koden

Sværere at starte med

Mere omfattende struktur

Godt til større projekter

Programmør og HTML-designer har hver sit felt

Programlogik og HTML (relativt) adskilt

Programlogik ét sted

Adskil tekstligt indhold og programkode fra hinanden, sådan at en HTML-designer kan koncentrere sig om HTML-layout og indhold, mens en programmør koncentrerer sig om logikken og programkoden.

Webudvikling
model 1 og model 2

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 med handlingerne 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

Nye strømninger i JSP

JSTL - Java Standard Tag Library

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

Overholder XML-syntaks

Taglib-koderne udføres på serveren ligesom JSP

Udkom i slutningen af 2003

Muligt at programmere JSP-sider i rent JSTL

Kraftfuldt værktøj i præsentationslaget

Vision for JSTL

'gammeldags' JSP:

JSTL:

HTML-designer bruger JSTL

Nemmere (behøver ikke lære Java)

Virker 'velkendt' for en HTML-programmør

JSTL-kode overlever i diverse HTML-værktøjer

Java 2 Enterprise Edition
(J2EE) - til store servere

J2EE-platformen

Webserver

EJB (Enterprise JavaBeans)

CORBA - fjernkald af objekter (ikke kun Java)

JTS (Java Transaction Service) - transaktioner

JMS (Java Message Service) - til MQ-systemer.

JavaMail, XML-behandling, ...

Sun varetager 'kun' J2EE-specifikationen

Mange uafhængige udbydere af J2EE-platforme

Borland AppServer

Oracle

Bea Weblogic

JBoss (med åben kildekode)

Sun (referenceimplementation)

...

Enterprise JavaBeans
(EJB) - objekter i serveren

J2EE-container varetager EJB-objekter

Persistens, transaktioner, sikkerhed

Kald kan ske lokalt eller over netværket

F.eks. fra JSP-sider!

EJB koncentrerer sig om programlogik

Serveren sørger for al 'benarbejdet'

Sessionsbønner repræsenterer et forløb

Entitetsbønner repræsenterer data fra en tabel

Containerstyret persistens (CMP)

Al databasekode bliver genereret af containeren (!)

Bønnestyret persistens (BMP)

Programmøren skriver selv databasekoden

Meddelelses-drevne bønner

Platforms- og serveruafhænighed

Java er platformsuafhængigt

kører på Linux, Mac, Windows, Unix, ...

JSP-webapplikaton er derfor platformsuafhængig

Standarder for struktur på webapplikation

Konfiguration f.eks. altid i WEB-INF/web.xml

Standard er del af J2EE-specifikationen

Tomcat er referenceimplementation

Mange alternativer

Tomcat, Oracle (OC4J), BEA Weblogic, Sun ONE, Resin, ...

Resultat: Frit valg af platform og server

Webprogrammering med Java og Linux

Foredrag på LinuxForum 2004

2003-09-01T01:07:29