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