27.07.2013 Views

Webprogrammering med Java og Linux

Webprogrammering med Java og Linux

Webprogrammering med Java og Linux

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Webpr<strong>og</strong>rammering</strong><br />

<strong>med</strong> <strong>Java</strong> <strong>og</strong> <strong>Linux</strong><br />

Jacob Nordfalk<br />

Center for Videreuddannelse<br />

Ingeniørhøjskolen i København<br />

<strong>Linux</strong>forum 2004<br />

Lørdag 6. marts 17.00-17.45


Pr<strong>og</strong>ram<br />

● Om Jacob Nordfalk<br />

● Reklame<br />

● Intro til <strong>Java</strong> Server Pages<br />

● Opsætning af JSP-server<br />

● Udviklingsværktøjer til webudvikling<br />

● Borland JBuilder, Oracle JDeveloper<br />

● Forbindelse til database (MySQL)<br />

● Model 1 <strong>og</strong> model 2 webudvikling<br />

● MVC, ...<br />

● Nye strømninger i JSP<br />

● JSTL - <strong>Java</strong> Standard Tag Library<br />

● J2EE (<strong>Java</strong> 2 Enterprise Edition)


Om Jacob Nordfalk<br />

● Først cand.scient. i fysik<br />

● Så pr<strong>og</strong>rammør for DSB<br />

● rejseplanen.dk <strong>og</strong> Byens Puls i <strong>Java</strong><br />

● Nu lektor på Ingeniørhøjskolen i København<br />

● ... <strong>og</strong> forfatter til et par <strong>Java</strong>-bøger<br />

● Spr<strong>og</strong>ligt interesseret <strong>med</strong> holdninger<br />

● Esperanto (internationalt spr<strong>og</strong>)<br />

● Træffende begreber på dansk øger forståelsen!<br />

● Tilhænger af åben kildekode (Open Source)<br />

● Inkarneret <strong>Linux</strong>-bruger<br />

● Bøger er (mest) under Åben Dokumentlicens


Åben Dokumentlicens (ÅDL)<br />

● Dette foredragsmateriale er under ÅDL<br />

● Du har lov til frit at kopiere dette værk<br />

● Ændrer du i værket, skal (i hvert fald) de<br />

dele, der stammer fra dette værk, igen<br />

frigives under ÅDL<br />

● Licensens fulde ordlyd findes på<br />

http://www.sslug.dk/linuxb<strong>og</strong>/licens.html


Reklame - http://javab<strong>og</strong>.dk<br />

Indhold:<br />

● Komponentbaseret udvikling<br />

● 20 designmønstre<br />

● <strong>Java</strong>s standardbibliotek<br />

● <strong>Java</strong>-teknol<strong>og</strong>ier<br />

85% af b<strong>og</strong>en er under ÅDL<br />

<strong>og</strong> er gratis tilgængelig på<br />

http://javab<strong>og</strong>.dk/VP<br />

Andre værker:<br />

http://javab<strong>og</strong>.dk/OOP – grundb<strong>og</strong><br />

http://javab<strong>og</strong>.dk/JSP – om web


Reklame - kursus i<br />

<strong>Linux</strong> serveropsætning<br />

- Opsætning af lokalnet<br />

- Opsætning af webserver<br />

- Opsætning af andre<br />

tjenester (FTP, DHCP,<br />

post, proxy, ...)<br />

- <strong>Linux</strong> som fil- <strong>og</strong><br />

printerserver for<br />

Windows-maskiner<br />

- <strong>Linux</strong> som filserver for<br />

andre UNIX-maskiner<br />

- Diskkvoter<br />

- Brugeradministration<br />

- Sikkerhed <strong>og</strong> firewalls<br />

- Filsystemets struktur<br />

- L<strong>og</strong>filer<br />

- Konfiguration af kernen<br />

- Søgning efter hjælp<br />

- De forskellige<br />

distributioner af <strong>Linux</strong><br />

9 tirsdage 17-20:30 i Ballerup<br />

Starter på tirsdag!<br />

Info på stand L<br />

eller http://cv.ihk.dk


<strong>Java</strong> Server Pages<br />

● HTML-sider <strong>med</strong> <strong>Java</strong>-kode i<br />

● <strong>Java</strong>-koden fortolkes <strong>og</strong> udføres på serveren<br />

● Oversættes til (maskin)kode ved første<br />

forespørgsel<br />

<br />

Syvtabellen<br />

<br />

Her er syv-tabellen:<br />

<br />

<br />

<br />


Interaktive sider<br />

● HTML-formular vises for brugeren<br />

● Parameter <strong>med</strong> indtastning sendes <strong>med</strong> forespørgsel<br />

● <strong>Java</strong>-koden læser indtastning<br />

● Indhold genereres afhængig af brugerens indtastning<br />

<br />

Løsning: Tabel fra parameter<br />

<br />

<br />

Indtast hvilken tabel du ønsker at få vist:<br />

<br />

<br />

<br />

<br />


Sessioner<br />

● Hver bruger får tildelt et session-objekt<br />

når han besøger en JSP-side<br />

● Sessionen følger brugeren<br />

● lige meget hvilken side han/hun er inde på<br />

● er nyttigt til at huske data om brugeren


Sessioner i JSP<br />

<br />

Ønskeseddel<br />

<br />

Dette eksempel demonstrerer, hvordan session-objektet kan bringes til at<br />

huske brugerens indtastninger.<br />

<br />

Skriv et ønske<br />

Skriv n<strong>og</strong>et, du ønsker.<br />

<br />

<br />

<br />

0) { // udskriv ønsker i listen<br />

%><br />

Ønskeseddel<br />

Indtil nu har du følgende ønsker:<br />


Opsætning af <strong>Java</strong>-webserver<br />

(Jarkata Tomcat)<br />

● Installér <strong>Java</strong> (JDK)<br />

● tjek at java er i stien<br />

● Installér <strong>og</strong> afprøv Tomcat<br />

● hent fra http://jakarta.apache.org/binindex.cgi<br />

● tar -xzvf jakarta-tomcat-5.0.18.tar.gz<br />

● bin/startup.sh<br />

● tail -f l<strong>og</strong>s/*<br />

● mozilla http://localhost:8080/<br />

● Udforsk webapps/


Samspil mellem<br />

Apache <strong>og</strong> Tomcat<br />

● Godt ved stor serverbelastning/høj sikkerhed<br />

● Apache klarer statisk indhold (f.eks. billeder)<br />

● Apache bruger Tomcat til dynamisk indhold<br />

● Lidt besværligt at sætte op<br />

● Gør det kun hvis det er nødvendigt<br />

● Flere forskellige måder det kan ske på<br />

(connectors)<br />

● Apache-konfiguration (eksempel)<br />

● Find mod_jk2 et sted, f.eks. www.jpackage.org<br />

● Indlæs modul fra Apaches httpd2.conf<br />

● Redigér workers2.properties<br />

● Angiv hvilke stier Tomcat skal tage sig af


Nem installation af en<br />

webapplikation<br />

● WAR-fil (Web ARchive)=ZIP-fil <strong>med</strong> hel<br />

applikation<br />

● Hent WAR-fil<br />

● Læg i webapps/ <strong>og</strong> den installeres automatisk<br />

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


Udviklingsværktøjer til<br />

webudvikling<br />

● Borland JBuilder


Udviklingsværktøjer til<br />

webudvikling<br />

● Oracle JDeveloper


Forbindelse til database<br />

(MySQL)<br />

● Installér MySQL<br />

● test-database god i starten<br />

● MySQLCC - grafisk værktøj<br />

● Installér JDBC-driver<br />

● Connector/J fra mysql.com<br />

● Læg JAR-fil i java/jre/lib/ext/<br />

Kontakt fra <strong>Java</strong>-kode:<br />

Class.forName("com.mysql.jdbc.Driver");<br />

Connection forb = DriverManager.getConnection("jdbc:mysql:///test");<br />

Statement stmt = forb.createStatement();<br />

stmt.executeUpdate("CREATE TABLE kunder (navn varchar(32), kredit float)" );<br />

stmt.executeUpdate("INSERT INTO kunder VALUES('Jacob', -1799)");<br />

stmt.executeUpdate("INSERT INTO kunder VALUES('Brian', 0)");


● Model 1<br />

● Pr<strong>og</strong>raml<strong>og</strong>ikken sammen<br />

<strong>med</strong> HTML-koden<br />

● Nemt at starte <strong>med</strong><br />

● Simpel struktur<br />

● Godt til små projekter<br />

● Pr<strong>og</strong>rammør =<br />

HTML-designer<br />

● Svært at adskille l<strong>og</strong>ik <strong>og</strong><br />

HTML<br />

● Redundant kode<br />

Webudvikling<br />

model 1 <strong>og</strong> model 2<br />

● Model 2<br />

● Pr<strong>og</strong>raml<strong>og</strong>ikken adskilt<br />

fra HTML-koden<br />

● Sværere at starte <strong>med</strong><br />

● Mere omfattende struktur<br />

● Godt til større projekter<br />

● Pr<strong>og</strong>rammør <strong>og</strong> HTMLdesigner<br />

har hver sit felt<br />

● Pr<strong>og</strong>raml<strong>og</strong>ik <strong>og</strong> HTML<br />

(relativt) adskilt<br />

● Pr<strong>og</strong>raml<strong>og</strong>ik ét sted<br />

Adskil tekstligt indhold <strong>og</strong> pr<strong>og</strong>ramkode fra hinanden, sådan at en<br />

HTML-designer kan koncentrere sig om HTML-layout <strong>og</strong> indhold, mens<br />

en pr<strong>og</strong>rammør koncentrerer sig om l<strong>og</strong>ikken <strong>og</strong> pr<strong>og</strong>ramkoden.


Model-View-Controller<br />

Pr<strong>og</strong>rammer <strong>med</strong> en brugergrænseflade kan inddeles i tre dele:<br />

1.Modellen (data <strong>og</strong> de bagvedliggende beregninger)<br />

En bankkonto har navn på ejer, kontonummer, kort-ID, saldo, bevægelser, etc.<br />

Saldo kan ikke ændres direkte, men <strong>med</strong> handlingerne overførsel, udbetaling <strong>og</strong> indbetaling.<br />

2.Præsentationen af data over for brugeren,<br />

Bankkonti præsenteres meget forskelligt.<br />

I en pengeautomat vises ingen personlige oplysninger overhovedet.<br />

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

3.Mulighederne for at ændre i data gennem handlinger<br />

I en pengeautomat kan man kun hæve penge.<br />

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

Ved skranken kan <strong>med</strong>arbejderen derudover foretage ind- <strong>og</strong> udbetalinger.<br />

Præ sentation<br />

Fremviser modellen<br />

Model<br />

dataforespørgsel<br />

Indkapsler pr<strong>og</strong>rammets tilstand/data<br />

Giver adgang til at spørge på data<br />

Giver adgang til at foretage handlinger<br />

handling<br />

Kontrol­del<br />

Definerer pr<strong>og</strong>rammets opførsel<br />

Omsæ tter brugerinput til handlinger på modellen


Model-View-Controller<br />

Præsentation<br />

(fremvisning af data)<br />

Model<br />

(data <strong>og</strong><br />

forretningsl<strong>og</strong>ik)<br />

Kontrol<br />

(ændring<br />

af model)<br />

Bruger


Nye strømninger i JSP<br />

● JSTL - <strong>Java</strong> Standard Tag Library<br />

● Et tag library (forkortet taglib) er et bibliotek af<br />

HTML-lignende koder<br />

● Overholder XML-syntaks<br />

● Taglib-koderne udføres på serveren ligesom JSP<br />

● Udkom i slutningen af 2003<br />

● Muligt at pr<strong>og</strong>rammere JSP-sider i rent JSTL<br />

● Kraftfuldt værktøj i præsentationslaget


Her er syv-tabellen:<br />

Vision for JSTL<br />

<br />

● HTML-designer bruger JSTL<br />

● Nemmere (behøver ikke lære <strong>Java</strong>)<br />

● Virker 'velkendt' for en HTML-pr<strong>og</strong>rammør<br />

● JSTL-kode overlever i diverse HTML-værktøjer<br />

'gammeldags' JSP:<br />

if (ønsker.size()>0) {<br />

%> Ønskeseddel<br />

Indtil nu har du følgende ønsker:<br />


<strong>Java</strong> 2 Enterprise Edition<br />

(J2EE) - til store servere<br />

● J2EE-platformen<br />

● Webserver<br />

● EJB (Enterprise <strong>Java</strong>Beans)<br />

● CORBA - fjernkald af objekter (ikke kun <strong>Java</strong>)<br />

● JTS (<strong>Java</strong> Transaction Service) - transaktioner<br />

● JMS (<strong>Java</strong> Message Service) - til MQ-systemer.<br />

● <strong>Java</strong>Mail - sende <strong>og</strong> modtage elektronisk post<br />

● XML-behandling, ...<br />

● Sun varetager 'kun' J2EE-specifikationen<br />

● Mange uafhængige udbydere af J2EE-platforme<br />

● Borland AppServer<br />

● Oracle<br />

● Bea Webl<strong>og</strong>ic<br />

● JBoss (<strong>med</strong> åben kildekode)<br />

● Sun (referenceimplementation)<br />

● ...


Enterprise <strong>Java</strong>Beans<br />

(EJB) - objekter i serveren<br />

● J2EE-container varetager EJB-objekter<br />

● Persistens, transaktioner, sikkerhed<br />

● Kald kan ske lokalt eller over netværket<br />

● F.eks. fra JSP-sider!<br />

● EJB koncentrerer sig om pr<strong>og</strong>raml<strong>og</strong>ik<br />

● Serveren sørger for al 'benarbejdet'<br />

● Sessionsbønner repræsenterer et forløb<br />

● Entitetsbønner repræsenterer data fra en tabel<br />

● Containerstyret persistens (CMP)<br />

● Al databasekode bliver genereret af containeren (!)<br />

● Bønnestyret persistens (BMP)<br />

● Pr<strong>og</strong>rammøren skriver selv databasekoden<br />

● Meddelelses-drevne bønner


Platforms- <strong>og</strong><br />

serveruafhænighed<br />

● <strong>Java</strong> er platformsuafhængigt<br />

● kører på <strong>Linux</strong>, Mac, Windows, Unix, ...<br />

● JSP-webapplikaton er derfor<br />

platformsuafhængig<br />

● Standarder for struktur på webapplikation<br />

● Konfiguration f.eks. altid i WEB-INF/web.xml<br />

● Standard er del af J2EE-specifikationen<br />

● Tomcat er referenceimplementation<br />

● Mange alternativer<br />

● Tomcat, Oracle (OC4J), BEA Webl<strong>og</strong>ic, Sun ONE,<br />

Resin, ...<br />

Resultat: Frit valg af platform <strong>og</strong> server

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!