Webbprogrammering
Provmoment:
Ladokkod:
Tentamen ges för:
Om-Tentamen
NWP011
Systemarkitektprogrammet
7,5 högskolepoäng
Namn:
(Ifylles av student)
Personnummer:
(Ifylles av student)
Tentamensdatum:
Tid:
2013-06-14
09.00 – 14.00
Hjälpmedel:
Inga hjälpmedel
Totalt antal poäng på tentamen:
50 poäng
För att få respektive betyg krävs:
G=28, varav minst 15 på uppgift 1-5
VG=40, varav minst 15 på uppgift 1-5
Allmänna anvisningar:
OBS! Starta den virtuella maskinen via VMWare och gör alla uppgifter där.
Skriv dina svar på svarsblanketten (se nästa sida)
Ange identitet för hårdisk (DISK1 o.s.v.)
Spara alla filer inom den virtuella maskinen i lätt åtkomliga mappar.
PHP filer måste läggas i C:\inetpub\wwwroot\PHPtenta\ för att kunna köras. URL:en blir
http://localhost/PHPtenta/minfil.php .
Rättningstiden är som längst tre veckor
Viktigt! Glöm inte att skriva namn på alla blad du lämnar in.
Lycka till!
Ansvarig lärare:
Telefonnummer:
Håkan Sundell
033 435 4426
Anders Gidenstam
033 435 4214
Svarsblankett
Namn:
(Ifylles av student)
Personnummer:
(Ifylles av student)
Hårddisk:
_____________________________________________________________
(Ifylles av student)
Uppgift 1:
a)
b)
c)
d)
e)
Uppgift 2:
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
Uppgift 4:
a)
b)
c)
d)
e)
b)
c)
d)
e)
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
a)
b)
c)
d)
e)
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
Uppgift 5:
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
Observera:
a)
Uppgift 3:
a)
b)
c)
d)
e)
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
Det minimala resultatet på uppgift 1 till 5 är 15
poäng.
Om detta inte uppnås, kommer inte uppgift 6
till 8 att beaktas och automatiskt få 0 poäng.
2
1. Svara med något eller några av de angivna alternativen på följande frågor.
(a) Vilket eller vilka av följande påståenden gäller för JavaScript?
Alternativ:
i.
ii.
iii.
iv.
JavaScript i ett HTML dokument kan förändra dokumentet medan det visas i
en webbläsare.
JavaScript kan köras som svar på händelser i webbläsaren.
Programspråket JavaScript är en delmängd av programspråket Java.
JavaScript körs enbart när ett HTML dokument skapas.
(b) Vilket eller vilka av följande påståenden gäller för CGI?
Alternativ:
i.
ii.
iii.
iv.
Ett CGI program kan endast skapa dokument av typen text/html.
Ett CGI program anropas av webbservern för att generera svaret till en HTTP
fråga.
Ett CGI program körs i webbläsaren.
Ett CGI program kan skrivas i programspråket C.
(c) Vilken eller vilka av följande påståenden gäller för ett giltigt (eng. valid) XHTML
1.1 dokument?
Alternativ:
i.
ii.
iii.
iv.
Dokumentet måste ha ett <body>-element inuti rotelementet.
Textens formatering måste anges med Cascading Style Sheets (CSS).
Alla element har en start- och en sluttag.
XML namnrymden för dokumentet måste anges som
”http://www.w3.org/1999/xhtml”.
(d) Vilket eller vilka av följande påståenden stämmer för XML 1.0?
Alternativ:
i.
ii.
iii.
iv.
Information som kan innehålla godtyckliga tecken beskrivs som Parsed
Character Data (PCDATA).
Ett XML dokument måste ha ett eller flera rot-element.
Ett giltigt (eng. valid) XML dokument följer garanterat ett givet XML schema.
Ett XML schema uttryckt i formatet XML Schema Definition (XSD) kan göras
mer uttrycksfullt än ett XML schema uttryckt i formatet XML Document Type
Definition (DTD).
(e) Vilket eller vilka av följande påståenden stämmer för PHP?
Alternativ:
i.
ii.
iii.
iv.
Funktioner i PHP kan anropas med ett godtyckligt antal argument.
All PHP kod måste vara innesluten i <?php ?> taggar.
PHP koden körs i webbläsaren.
PHP är ett språk utan statisk typkontroll.
(5p)
3
2. Svara med något av de angivna alternativen på följande frågor.
(a) Texten i ett PHP-dokument tolkas enligt sätten ______ ?
Alternativ:
i.
ii.
iii.
iv.
Output mode och Tag mode
Print mode och Compiler mode
Copy mode och XHTML mode
Copy mode och Interpret mode
(b) Vid användande av session tracking i PHP blir resultatet av funktionen
session_start() att _____ ?
Alternativ:
i.
ii.
iii.
iv.
En ny global variabel med namn $SESSION skapas.
En loginsida genereras och skickas till användaren.
Tillståndet för en pågående session blir tillgängligt för skriptet alternativt om
ingen pågående session finns så skapas en ny session.
En ny session skapas och ersätter eventuell föregående.
(c) Ett PHP-program får flyttalsvärdet 0.0 i en kontext där ett booleskt värde förväntas.
Vad händer?
Alternativ:
i.
ii.
iii.
iv.
PHP har ingen boolesk typ utan värdet konverteras till heltalet 0 som tolkas
som falskt.
Ett typfelsundantag (eng. exception) genereras.
Värdet konverteras till det booleska värdet TRUE.
Värdet konverteras till det booleska värdet FALSE.
(d) Fält (eng. array) i PHP kan indexeras med ______ ?
Alternativ:
i.
ii.
iii.
iv.
Valfri typ men samma för hela fältet.
Endast heltal.
Endast flyttal.
Strängar (bland annat).
(e) Vad blir utskriften från nedanstående program?
<?php
$x = "1.5";
$y = 2;
printf("$x + $y = %d", $x+$y);
?>
Alternativ:
i.
ii.
iii.
iv.
Inget, programmet kompilerar eller kör inte korrekt
1.5 + 2 = 3
1.5 + 2 = 3.5
$x + $y = 3.5
(5p)
4
3. Svara med något av de angivna alternativen på följande frågor.
(a) För att ange att en sida inte skall vara del av en session så används attribut enligt
______.
Alternativ:
i.
ii.
iii.
iv.
<%@ session exclude = this %>
<%@ page isSession = false %>
<%@ session page = false %>
<%@ page session = false %>
(b) Vilket av följande exempel visar en korrekt användning av en JSP predefined
variable (också kallat JSP implicit object)?
Alternativ:
i.
ii.
iii.
iv.
<% HttpServletRequest request = application.getRequest();
string text = request.getParameter(”aText”); %>
<% HttpServletRequest request = session.getRequest();
string text = request.getParameter(”aText”); %>
A text: <%= request.getParameter(“aText”); %>
<% HttpServletRequest request = page.getRequest(); %>
A text: <%= request.getParameter(”aText”); %>
(c) För att kunna köra en Java Servlet krävs specifikt en _______ ?
Alternativ:
i.
ii.
iii.
iv.
Java SE Development Kit (JDK)
Java Virtual Machine (JVM)
Servlet Container
J2SE Java Runtime Environment (JRE)
(d) För att specificera i JSP att en instans av en JavaBean är bunden till en viss
användare så används scope-attributet _______ ?
Alternativ:
i.
ii.
iii.
iv.
request
application
session
page
(e) Databaser blir åtkomliga i koden för en Servlet och JSP via ______ ?
Alternativ:
i.
ii.
iii.
iv.
XML
ADO.NET
JDBC
SQL
(5p)
5
4. Svara med något av de angivna alternativen på följande frågor.
(a) Tillstånd för HTTP-uppkopplingar kan sparas med hjälp av ______ på klienten?
Alternativ:
i.
ii.
iii.
iv.
HTML
Cookies
Sockets
Persistent HTTP
(b) En komponent inom HTMLControl måste alltid ha _______ ?
Alternativ:
i.
ii.
iii.
iv.
Attributen id och server satta till något värde
Attributet runat satt till server
Attributet id satt till ett värde
Attributet name satt till ett värde
(c) Hur väljer man .NET data provider?
Alternativ:
i.
ii.
iii.
iv.
En inställning i Visual Studio under tools.
Genom prefixet på de klasser i Framework Class Library man använder för
datahantering.
Anges i ConnectionString för kommandot.
Via ett argument till SqlConnection och dess Open-metod.
(d) Vad innebär "code-behind" i samband med ASP.NET?
Alternativ:
i.
ii.
iii.
iv.
Koden ligger i en separat fil.
Koden läggs bakom allt annat och körs med lägre prioritet.
Koden släpar efter med ett valfritt intervall.
Koden kan inte använda arv.
(e) Common Language Run-Time är _____ ?
Alternativ:
i.
ii.
iii.
iv.
Ett ramverk för att skapa egna klasser.
Ett klassbibliotek.
En mapp med kodexempel.
Ett program som laddar in och kör .NET-program.
(5p)
6
5. Svara med något av de angivna alternativen på följande frågor om språket C#.
(a) För att definiera om (överskugga) en metod i en klass där en metod med samma
namn och signatur redan finns definierad för bas-klassen, används nyckelordet ____ ?
Alternativ:
i.
ii.
iii.
iv.
hide
new
override
sub
(b) För att definiera en parameter vars värde sätts av metoden och tillåta att en inte
initierad variabel används som respektive argument, så används nyckelordet ____ ?
Alternativ:
i.
ii.
iii.
iv.
ref
out
extern
intern
(c) För att binda en metod till en viss händelse (eng. Event) och på så sätt skapa en
händelsehanterare, görs detta genom att koppla metoden till en specifik _____ ?
Alternativ:
i.
ii.
iii.
iv.
event
delegate
enumerator
iterator
(d) Ett interface är _____ ?
Alternativ:
i.
ii.
iii.
iv.
En klass där alla metoder är implementerade som referenstyper
En implicit implementation av alla metoder som ingår i en klass definierad
explicit
En klass där alla metoder är definierade som abstract
En mall som talar om vilka metoder och egenskaper som en klass måste
implementera
(e) En variabel som representerar en instans av en datastruktur definierad med
nyckelordet class är alltid klassificerad som en ____?
Alternativ:
i.
ii.
iii.
iv.
Referenstyp
Instanstyp
Objekttyp
Värdetyp
(5p)
7
6. Skapa ett PHP skript som ger en enkel sida med följande funktion: sidan har två
inmatningsfält, ett för namn och ett för antal, samt en Ok-knapp enligt bild nedan.
När inmatning skett och Ok-knappen trycks skrivs angivet antal HTML-stycken med
texten ”Hej <namn>!” ut under Ok-knappen som i bilden nedan.
Vid felaktig inmatning (namn saknas eller antal är inte ett heltal) visas röda feltexter
enligt bilden nedan. Eventuell korrekt inmatad information skall bevaras vid fel.
Skapa din lösning i biblioteket C:\inetpub\wwwroot\PHPtenta på den virtuella
maskinen. För att redigera filen kan t.ex. Notepad eller Wordpad användas (t.ex via
höger klick på filen + ’Open with’).
(5p)
8
7. Skapa ett nytt projekt av typen ”Web Application” i NetBeans IDE, utan några valda
frameworks. Skapa en enkel sajt för inmatning av bilinformation för ett bilregister,
som består av två webbsidor i JSP. Startsidan skall innehålla ett formulär för
inmatning av information om en bil (för registrering). Information som skall matas in
är:
* Märke och modellnamn (minst två ord,märke och modelnamn separerat med kolon
”:”)
* Årsmodell (från 1909 och framåt)
* Vridmoment (enligt ”tal Nm”)
* Registreringsnummer (enligt svensk standard, t ex ”123ABC”)
Vid inskickande av information (klick på specificerad knapp) skall informationen
kontrolleras enligt korrekthetsregler givna ovan. Eventuella felaktigheter skall
indikeras vid respektive inmatningsfält och en beskrivande feltext presenteras. Om all
information är korrekt inmatad skall denna registreras och läggas till en lista. Därefter
vidarebefordras användaren till en annan webbsida som presenterar en lista med
hitintills all inmatad bilinformation (av just denna användare), radvis med en
informativt och strukturerad design. På webbsidan med listan skall även finnas en länk
tillbaka till startsidan för inmatning.
Hela sajten skall bestå av två dynamiska webbsidor. Informationen i listan med
bilinformation skall sparas i en sessions-variabel. För full poäng skall JavaBeans
användas för hanteringen av inmatad information.
(10p)
9
8. Skapa ett nytt projekt av typen ”ASP.NET Web Site” med språket C# i Visual Studio.
Skapa en enkel shoppingsajt med varukorg. Varorna skall presenteras dynamiskt med
hjälp av en ”Data”-komponent (ex. DataList), och skall härröra från en statisk typad
lista av egendefinierad typ (ex. class ShopItem) i programmet. Lägger man till fler
instanser i listan så visas fler varor. Vid klick på respektive varas knapp, skall denna
läggas till varukorgen. Varukorgen skall hela tiden vara synlig (som ex. en ListBox)
på sidan. I varukorgen skall man kunna se vilka varor som man har valt, antal av varje
och pris, samt det totala priset på beställningen. Med hjälp utav diverse knappar
kopplade till varukorgen skall man även kunna ta bort enstaka varor från den.
Hela sajten kan bestå av en enda dynamisk sida, men kan också bestå av fler om du
vill. Varukorgens utseende och beteende skall definieras i en master-page.
Vid designen av webbsajten skall relevanta användbarhetsaspekter beaktas. Vidare
skall koden vara kommenterad när så är lämpligt och adekvat namngivning på
variabler med mera tillämpas.
(10p)
10