Java-opgraderingskursus

Danmarks Meteorologiske Institut

Gang 2

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

Webprogrammering

Klient-server og forespørgsel/svar

HTML og HTML-formularer

Servletter og JSP-sider

Fælles biblioteker

Programmere i pakker

Lave JAR-fil

Dokumentation

Læse og skrive filer

Formatering og fortolkning af datoer og tal

Formatering og fortolkning af en datafil

Udskrive i kolonner

Regulære udtryk og andre måder at opdele en streng i bidder

HTML: Hypertekst Markup Language

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

HTML: Tekst + HTML-koder (i < og >)

HTML-koder instruerer fremviseren i hvordan tekst skal vises

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

Servletter

En servlet er en Java-klasse der bliver brugt i en webserver.

Servletten skal arve fra HttpServlet

Servletten skal have en doGet(req, resp)-metode

Response-objektet bruges til at skrive HTML-kode i.

Servletter

Servletter

Opsætning af servlet i web.xml

1.Navnet på servletten i <servlet-name>

2.Klassenavnet (incl. pakkenavn) i <servlet-class>

3.Hvilke(n) URL(er) på serveren der skal omdirigeres til servletten i <url-pattern> i en <servlet-mapping>

request-objektet

Formularer og interaktive sider

Formularer og interaktive sider

Klienten laver en forespørgsel

Serveren sender en HTML-side med formular

Klienten viser HTML-side med formular

Bruger udfylder formular og trykker 'OK'

Klienten laver en ny forespørgsel med formularens data

Serveren fortolker formulardata

Serveren sender en ny HTML-side

Formularer og interaktive sider

Formularer og interaktive sider

Eksempel: Login

Eksempel: Login

Eksempel: Login

Mere om JSP: Sessioner

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

Sessionen følger brugeren, lige meget hvilken side han/hun er inde på, og er derfor nyttigt til at huske data, der skal følge brugeren.

Mere om JSP: Sessioner

Implicit definerede objekter

Der findes en række implicit definerede objekter, som man altid har adgang til i en JSP-side:

request - anmodningen fra klienten

response - svaret til klienten

out - skrive tekst til klienten

session - objekt der følger den enkelte bruger

application - fælles for hele webapplikationen

logning

konfigurations-parametre fra web.xml

kan også gemme attributter ligesom session-objektet

config - den enkelte websides konfiguration

page - selve JSP-siden

exception - undtagelse opstået under kørsel

pageContext - alle objekterne samlet i ét

Model 1 og model 2 i
webserverprogrammering

Model-View-Controller

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

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

Fælles biblioteker

Programmere i pakker

Lave JAR-fil

Dokumentation

Programmere i pakker

En pakke: En samling af relaterede klasser

En klasse svarer til en fil på filsystemet

En pakke svarer til et underkatalog på filsystemet

// Filnavn: src/minPakke/Klasse1.java

package minPakke;

import java.util.*;

public class Klasse1

{

public void snak()

{

System.out.println("Dette er Klasse1, der taler!");

}

}

// Filnavn: src/BenytPakker.java

import minPakke.*;

import java.util.*;

public class BenytPakker

{

public static void main(String[] arg)

{

Klasse1 a = new Klasse1();

a.snak();

}

}

Lave JAR-fil

JAR-fil er en ZIP-fil med klasser

jar cf program.jar BenytPakker.class minPakke

zip -r program.jar BenytPakker.class minPakke

Værktøjet kan lave den for en!

Dokumentation

Javadoc

/**

* Eksempel på en kommenteret klasse.

*/

public class EnKommenteretKlasse

{

/**

* Et eksempel på en metode. Metoden tjener

* til at vise hvordan javadoc virker.

*

* @param enStreng strengen

* @param etTal tallet

*

* @return strengen og tallet sat sammen

*/

public String enMetode(String enStreng,

int etTal)

{

return enStreng+etTal;

}

}

javadoc EnKommenteretKlasse.java

De vigtigste klasser bør være

dokumenteret med Javadoc!

Formatering og fortolkning af datoer og tal

package dmi;

import DMI.VU.util.DateTime;

public class TalOgDatoer

{

public static void main(String[] args)

{

DateTime t = new DateTime();

System.out.println(t.getDateTimeString("dd-MM-yy"));

System.out.println(t.getDateTimeString("dd,MM,yy"));

System.out.println(t.getDateTimeString("dd/MM HH:mm"));

}

}

10-11-04

10,11,04

10/11 07:11

Formatering og fortolkning
af en datafil

Udskrive i kolonner

Regulære udtryk og andre måder at opdele en streng i bidder

Javakursus på DMI

Præsentatoner fra kurset

2004-08-30T12:23:21