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:
2014-06-13
09.00 – 13.00
Hjälpmedel:
Inga hjälpmedel
Totalt antal poäng på tentamen:
För att få respektive betyg krävs:
G=23
VG=33
40 poäng
Allmänna anvisningar:
Skriv dina svar på svarsblanketten (se nästa sida)
Markera och ange alla svar tydligt och entydigt efter instruktionerna.
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
Svarsblankett
Namn:
(Ifylles av student)
Personnummer:
(Ifylles av student)
Uppgift 1:
a)
b)
c)
d)
e)
Uppgift 2:
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
a)
b)
c)
d)
e)
Uppgift 4:
a)
b)
c)
d)
e)
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
a)
b)
c)
d)
e)
Uppgift 6:
a)
b)
c)
d)
e)
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
a)
b)
c)
d)
e)
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
Uppgift 5:
i
A
B
Svar:
Uppgift 3:
i
ii
iii
iv
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
Uppgift 7:
C
D
□
a)
Svar:
□
b)
Svar:
□
c)
Svar:
□
d)
Svar:
□
e)
Uppgift 8:
A
B
Svar:
C
D
□
a)
Svar:
□
b)
Svar:
□
c)
Svar:
□
d)
Svar:
□
e)
2
A
B
Svar:
C
D
□
Svar:
□
Svar:
□
Svar:
□
Svar:
□
1. Svara med något eller några av de angivna alternativen på följande frågor.
(a) Document Object Model (DOM) används i huvudsak för att _____ ?
Alternativ:
i.
ii.
iii.
iv.
Dynamiskt skapa XML-dokument på servern med hjälp av C# och ASP.
Komma åt delar av ett XHTML-dokument med hjälp av javascript på klienten.
Ändra delar av ett XHTML-dokument via programspråket Java på servern.
Läsa in och skriva XML-dokument på valfritt filsystem.
(b) Ett giltigt (eng. valid) XHTML 1.1-dokument måste ha_____ ?
Alternativ:
i.
ii.
iii.
iv.
Minst ett html-element och ett överensstämmande schema.
Endast ett rot-element och alla taggar avslutade.
Högst ett html-element och inte innehålla tecknen < och >.
Innehålla en <?xml ?>-tagg och ett html-element innehållande ett head- och
ett body-element.
(c) Information i XML som kan innehålla godtyckliga tecken beskrivs som _____ ?
Alternativ:
i.
ii.
iii.
iv.
Namnrymder (Namespaces)
Character Data (CDATA).
Ett datafält med hjälp av taggen <data>.
Parsed Character Data (PCDATA).
(d) 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 ersätta alla tillämpningar av PHP.
Programspråket JavaScript är en delmängd av programspråket Java.
JavaScript körs enbart när ett HTML dokument skapas.
(e) Programspråket PHP är ett _____ ?
Alternativ:
i.
ii.
iii.
iv.
Starkt typat språk.
Språk utan några typer alls.
Språk utan statisk typkontroll som använder ”coercing” mellan typer.
Språk med endast en typ av variabler och värden.
(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) SimpleXML är _____ i PHP?
Alternativ:
i.
ii.
iii.
iv.
Ett lågnivå gränssnitt för XML processing
Ett högnivå gränssnitt för XML processing
Ett XML filformat för skript
En modul för att visa XML dokument som HTML
(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. Studera följande givna PHP-program. Svara kortfattat på var och en av frågorna med
ett av de givna alternativen, alternativt ett specifikt värde.
(a) Vad blir utskriften från nedanstående program?
<?php
$x = 2;
$y = 3;
print("$x+$y");
?>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(b) Vad blir utskriften från nedanstående program?
<?php
$x = 2;
$y = 3;
print('$x+$y');
?>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(c) Vad blir utskriften från nedanstående program?
<?php
$x = "2.5";
$y = 3;
printf('$x + $y = %d', $x+$y);
?>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
8
(d) Vad blir utskriften från nedanstående program?
<?php
$x = "3";
$y = 5;
print($x/$y);
?>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(e) Vad blir utskriften från nedanstående program?
<?php
$x = array('a' => 1, 'b' => 5, 2.0);
foreach($x as $y => $z) {
print("$y: $z, ");
}
?>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(5p)
9
7. Studera följande givna JSP-program. Svara kortfattat på var och en av frågorna med
ett av de givna alternativen, alternativt ett specifikt värde.
(a) Vad blir utskriften från nedanstående programavsnitt, givet att hela skriptet körs
via en URL med en ändelse av ”?a=4&b=3” ?
<%-- int a = Integer.parseInt(request.getParameter("a"))
--%>
+
<%-- int b = Integer.parseInt(request.getParameter("b"))
--%>
=
<%-- a+b --%>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(b) Vad blir utskriften från nedanstående programavsnitt, givet att hela skriptet körs
via en URL med en ändelse av ”?a=2&b=1” ?
<% String a = request.getParameter("a"); %>
+
<% String b = request.getParameter("b"); %>
=
<% Integer.parseInt(a)+Integer.parseInt(b); %>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(c) Vad blir utskriften från nedanstående programavsnitt, givet att hela skriptet körs
via en URL med en ändelse av ”?a=3&b=2” ?
<% String a = request.getParameter("a"); %>
+
<% String b = request.getParameter("b"); %>
=
<%= Integer.parseInt(a)+Integer.parseInt(b) %>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
10
(d) Vad blir utskriften från nedanstående programavsnitt, givet att hela skriptet körs
via en URL med en ändelse av ”?a=3&b=2” ?
<% String a = request.getParameter("a"); %>
+
<% String b = request.getParameter("b"); %>
=
<% out.print(Integer.parseInt(a)+Integer.parseInt(b)); %>
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(e) Vad blir utskriften från nedanstående programavsnitt, givet att hela skriptet körs
via en URL med en ändelse av ”?a=2&b=1” ?
<%@taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<c:out value="${param.a}" />
+
<c:out value="${param.b}" />
=
<c:out value="${param.a+param.b}" />
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(5p)
11
8. Studera följande givna ASP.NET/C#-programavsnitt. Anta att övrig kod som är
nödvändig för att köra programavsnitten finns tillgänglig. Svara kortfattat på var och
en av frågorna med ett av de givna alternativen, alternativt ett specifikt värde.
(a) Vad får Sum.Text för värde efter att man fyllt i värden 2 och 3 i fälten samt tryckt
på knappen med texten += ?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="Value1" RunAt="server" />
<asp:TextBox ID="Value2" RunAt="server" />
<asp:Button ID="Button1" Text=" += " OnClick="Button2_Click"
RunAt="server" />
<asp:Button ID="Button2" Text=" -= " OnClick="Button1_Click"
RunAt="server" />
<asp:Label ID="Sum" RunAt="server" />
</form>
</body>
</html>
namespace WebApplication1
{
public partial class UppgiftA : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(Value1.Text);
int b = Convert.ToInt32(Value2.Text);
Sum.Text = (a - b).ToString();
}
protected void Button2_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(Value1.Text);
int b = Convert.ToInt32(Value2.Text);
Sum.Text = (a + b).ToString();
}
}
}
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
12
(b) Vad får Sum.Text för värde efter att man fyllt i värden 1 och 2 i fälten samt tryckt
på knappen med texten = ?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="Value1" RunAt="server" />
+
<asp:TextBox ID="Value2" RunAt="server" />
<asp:Button ID="Button1" Text=" = " OnClick="Button2_Click"
RunAt="server" />
<asp:Label ID="Sum" RunAt="server" />
</form>
</body>
</html>
namespace WebApplication1
{
public partial class UppgiftB : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Value1.Text += "0";
}
protected void Button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(Value1.Text);
int b = Convert.ToInt32(Value2.Text);
Sum.Text = (a + b).ToString();
}
}
}
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
13
(c) Vad får Result.Text för värde efter att man fyllt i värdet 5 i fältet samt tryckt på
knappen med texten = ?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="Value1" RunAt="server" />
<asp:Button ID="Button1" Text=" = " OnClick="Button1_Click"
RunAt="server" />
<asp:Label ID="Result" RunAt="server" />
</form>
</body>
</html>
namespace WebApplication1
{
public partial class UppgiftC : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Cache["0"]=Value1.Text;
}
protected void Button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(Cache["0"]);
Result.Text = (a*2).ToString();
}
}
}
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
14
(d) Vad får Result.Text för värde efter att man fyllt i värdet 4 i fältet samt tryckt på
knappen med texten = ?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="client">
<asp:TextBox ID="Value1" RunAt="server" />
<asp:Button ID="Button1" Text=" = " OnClick="Button1_Click"
RunAt="server" />
<asp:Label ID="Result" RunAt="server" />
</form>
</body>
</html>
namespace WebApplication1
{
public partial class UppgiftD : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["0"]=Value1.Text;
}
protected void Button1_Click(object sender, EventArgs e)
{
string v1 = (string)(Session["0"]);
int a = Convert.ToInt32(v1);
Result.Text = (a*2).ToString();
}
}
}
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
15
(e) Vad får Result.Text för värde efter att man valt siffran 3 i multiväljaren?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:DropDownList ID="DropList1"
OnSelectedIndexChanged="DropList1_SelectedIndexChanged" AutoPostBack="True"
runat="server" />
<asp:Label ID="Result" RunAt="server" />
</form>
</body>
</html>
namespace WebApplication1
{
public partial class UppgiftE : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
for (int i = 0; i < 10; i++)
DropList1.Items.Add(new ListItem((i + 1).ToString(),
i.ToString()));
}
protected void DropList1_SelectedIndexChanged(object sender, EventArgs
e)
{
Result.Text = DropList1.SelectedValue;
}
}
}
Alternativ:
A. <ange värde>
B.
C.
D. Inget, programmet kompilerar eller kör inte korrekt
(5p)
16