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: 2014-06-13 Tid: 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: Håkan Sundell Telefonnummer: 033 435 4426
Svarsblankett Namn: (Ifylles av student) Personnummer: (Ifylles av student) Uppgift 1: i ii iii iv a) b) c) d) e) Uppgift 4: i ii iii iv a) b) c) d) e) Uppgift 6: Uppgift 2: i ii iii iv a) b) c) d) e) Uppgift 5: i ii iii iv a) b) c) d) e) Uppgift 7: Uppgift 3: i ii iii iv a) b) c) d) e) Uppgift 8: a) A B C D a) A B C D a) A B C D b) b) b) c) c) c) d) d) d) e) e) e) 2
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? i. Dynamiskt skapa XML-dokument på servern med hjälp av C# och ASP. ii. Komma åt delar av ett XHTML-dokument med hjälp av javascript på klienten. iii. Ändra delar av ett XHTML-dokument via programspråket Java på servern. iv. Läsa in och skriva XML-dokument på valfritt filsystem. (b) Ett giltigt (eng. valid) XHTML 1.1-dokument måste ha? i. Minst ett html-element och ett överensstämmande schema. ii. Endast ett rot-element och alla taggar avslutade. iii. Högst ett html-element och inte innehålla tecknen < och >. iv. 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? i. Namnrymder (Namespaces) ii. Character Data (CDATA). iii. Ett datafält med hjälp av taggen <data>. iv. Parsed Character Data (PCDATA). (d) Vilket eller vilka av följande påståenden gäller för JavaScript? i. JavaScript i ett HTML dokument kan förändra dokumentet medan det visas i en webbläsare. ii. JavaScript kan ersätta alla tillämpningar av PHP. iii. Programspråket JavaScript är en delmängd av programspråket Java. iv. JavaScript körs enbart när ett HTML dokument skapas. (e) Programspråket PHP är ett? i. Starkt typat språk. ii. Språk utan några typer alls. iii. Språk utan statisk typkontroll som använder coercing mellan typer. iv. 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? i. Output mode och Tag mode ii. Print mode och Compiler mode iii. Copy mode och XHTML mode iv. Copy mode och Interpret mode (b) Vid användande av session tracking i PHP blir resultatet av funktionen session_start() att? i. En ny global variabel med namn $SESSION skapas. ii. En loginsida genereras och skickas till användaren. iii. 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. iv. 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? i. PHP har ingen boolesk typ utan värdet konverteras till heltalet 0 som tolkas som falskt. ii. Ett typfelsundantag (eng. exception) genereras. iii. Värdet konverteras till det booleska värdet TRUE. iv. Värdet konverteras till det booleska värdet FALSE. (d) Fält (eng. array) i PHP kan indexeras med? i. Valfri typ men samma för hela fältet. ii. Endast heltal. iii. Endast flyttal. iv. Strängar (bland annat). (e) SimpleXML är i PHP? i. Ett lågnivå gränssnitt för XML processing ii. Ett högnivå gränssnitt för XML processing iii. Ett XML filformat för skript iv. 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. i. <%@ session exclude = this %> ii. <%@ page issession = false %> iii. <%@ session page = false %> iv. <%@ page session = false %> (b) Vilket av följande exempel visar en korrekt användning av en JSP predefined variable (också kallat JSP implicit object)? i. <% HttpServletRequest request = application.getrequest(); string text = request.getparameter( atext ); %> ii. <% HttpServletRequest request = session.getrequest(); string text = request.getparameter( atext ); %> iii. A text: <%= request.getparameter( atext ); %> iv. <% HttpServletRequest request = page.getrequest(); %> A text: <%= request.getparameter( atext ); %> (c) För att kunna köra en Java Servlet krävs specifikt en? i. Java SE Development Kit (JDK) ii. Java Virtual Machine (JVM) iii. Servlet Container iv. 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? i. request ii. application iii. session iv. page (e) Databaser blir åtkomliga i koden för en Servlet och JSP via? i. XML ii. ADO.NET iii. JDBC iv. 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? i. HTML ii. Cookies iii. Sockets iv. Persistent HTTP (b) En komponent inom HTMLControl måste alltid ha? i. Attributen id och server satta till något värde ii. Attributet runat satt till server iii. Attributet id satt till ett värde iv. Attributet name satt till ett värde (c) Hur väljer man.net data provider? i. En inställning i Visual Studio under tools. ii. Genom prefixet på de klasser i Framework Class Library man använder för datahantering. iii. Anges i ConnectionString för kommandot. iv. Via ett argument till SqlConnection och dess Open-metod. (d) Vad innebär "code-behind" i samband med ASP.NET? i. Koden ligger i en separat fil. ii. Koden läggs bakom allt annat och körs med lägre prioritet. iii. Koden släpar efter med ett valfritt intervall. iv. Koden kan inte använda arv. (e) Common Language Run-Time är? i. Ett ramverk för att skapa egna klasser. ii. Ett klassbibliotek. iii. En mapp med kodexempel. iv. 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? i. hide ii. new iii. override iv. 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? i. ref ii. out iii. extern iv. 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? i. event ii. delegate iii. enumerator iv. iterator (d) Ett interface är? i. En klass där alla metoder är implementerade som referenstyper ii. En implicit implementation av alla metoder som ingår i en klass definierad explicit iii. iv. 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? i. Referenstyp ii. Instanstyp iii. Objekttyp iv. 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"); (b) Vad blir utskriften från nedanstående program? <?php?> $x = 2; $y = 3; print('$x+$y'); (c) Vad blir utskriften från nedanstående program? <?php?> $x = "2.5"; $y = 3; printf('$x + $y = %d', $x+$y); 8
(d) Vad blir utskriften från nedanstående program? <?php?> $x = "3"; $y = 5; print($x/$y); (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, "); (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 --%> (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); %> (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) %> 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)); %> (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" /> (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(); 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(); 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(); 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(); 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())); e) protected void DropList1_SelectedIndexChanged(object sender, EventArgs Result.Text = DropList1.SelectedValue; (5p) 16