backaskapat 02:02:05 editerat 02:02:05Morotens Konstnärsbibliotek

Internetprogrammering II

Under hösten 2001/våren 2002 gick jag en av DSV's roligaste kurser. Pierre Wijkman håller i IPkurserna som är enastående, jag tror tom. Pierre fått pris för pedagogiken. Kursen var då upplagd såatt man kunde välja serverspråk själv. Mest supportades Perl men jag valde att implementera det hela med Java (JSP och servlets).

att söka sak efter genre

att söka sak efter genre

x

Funktioner

Galleri Moroten låg i Gamla Stan och hade många konstnärer och deras verk knuntna till sig. Jag tänkte att det var en brautgångspunt för ett gesällarbete fokuserat på serverprogrammering och databaslösningar. Meningen var att man i 'konstnärsbanken' skulle kunna sepå olika konstverk/föremål och även de personer som skapat dem. Man kanske också var intresserad av att veta om saken fortfarande fanns att köpaeller om det fanns möjlighet att producera fler, likadana objekt. Tanken med biblioteket var:

Självklart kan aldrig en databas ersätta objekten i verkligheten, men möjligheten fanns att köpare även från andra länder hittade till webbsidan.Under arbetet fokuserade jag på displaydelen av biblioteket, att söka sak/person efter genre/namn.

Biblitekets framtid

Det hade varit kul att färdigställa projektet med ett administratörsgränsnitt, även det webbaserat.Utan dylikt gränssnitt stod sig applikationen slätt. Man skulle lätt kunna lägga till/ändra/ta bort bilder och information,utan synbar kontakt med vare sig html eller sql. Dessutom skulle det kunna göras varifrån som helst.

Arkitektur

En central servlet fungerar som sluss mellan requests från browsern till databasen (mySQL på DSV).Databaskopplingen sker med tre olika klasser. Dessa skapar en kopplingspool som sedan servleten kan använda sig av när en request kommer in.Poolen kan ställas in efter maximalt möjliga simultana kopplingar och är vackert trådad.

att söka sak efter sakNamn

att söka sak efter sakNamn

x

Klasser

Av inkommande parametrar skapas ett query utifrån kriteriet man sökt på, ex: 'sök person namn x' eller 'sök genre x', etc.En connection tas från poolen och en instans av Transaction skapas - resultatet av det sökta som vidarebefordras till klienten.Två klasser är primära - class Sak och class Person, vilka var och en representeras av varsin tabell i db, likadant benämnda.En Sak har titel, nummer, material, genre och en referens till den Person som skapat Sak (plus fler egenskaper).En Person har namn, atelje, genrer, födelseår och en liten presentationstext (plus fler egenskaper). Personen har även referenser tillde olika objekt som finns i db skapade av honom.I fasen då en Transaction skapas läggs olika instanser av både Sak och Person in i samlingar (ArrayList), så många som kom ut från sökresultatetoch ev. några dummies för displayändamål.Transaction läggs in i request objektet (egentligen är detta en response, men framförliggande kod i .jsp sidorna tar emot ett request,dessa sänder sedan ett response) och sänds vidare till passande .jsp sida där intrikata javataggar sorterar och stuvar om i Transaction.Om resultatet tar mer än en (begränsat utrymme - det finns inga scrollbars!) sida i anspråk för att visas upp placeras alltihop i pageContextobjektet för att kunna skyfflas mellan olika fram och bakåtklickningar - utan kontakt med db. Här fungerer servleten åter som en sluss mellande olika delresultaten. .jsp sidorna vet själva hur mycket som ska visas åt gången och skapar sig referenser för 'nästa sida', etc.Hur ska då det som man kan söka på komma till browsern? Alla personnamn, genrer, föremål? Just nu har jag löst det så att tre olikapropertiesfiler läses in, ett Prop objekt skapas och detta hakas på svaret till browsern. Inläsningen görs en gång och sedan finnslistorna laddade i servleten. I en framtida implementation vore det kanske klokare att göra en databassökning på kolumnnamn men jagvalde att inte göra det i nu, delvis därför att jag var nyfiken på hur Propertiesfiler funkade. Och de funkar ju bra upptäckte jag.Ett kommande administratörsgränsnitt skulle kunna skriva saker i en propsfil såväl som i en db.. Känns bättre så, onödigt att göra endbsökning bara för detta.

att söka person efter genre

att söka person efter genre

x

Output

All output i browsern sköts av taggar, itererande över Transactions olika ArrayListor. Detta har fördelen attdesignkodandet inte så mycket behöver bry sig om hur saker kommer in, dessa passas in där de ska. Dock upptäckte jag att detvar ganska klurigt att få till utskrift i olika nästlade rows och cols, designen på html sidorna är komplex och här krävdes attjavataggarna skrev ut lite html.Meningen är att varje sak som visas skall vara klickbar - såvida bilden är i 'ikonformat'; klickar man på en sak ska dess 'huvudsida'öppnas i ett nytt popup - med tillhörande information om saken.

att söka person efter personNamn

att söka person efter personNamn

x
backa.