{"id":455,"date":"2011-11-08T08:40:25","date_gmt":"2011-11-08T06:40:25","guid":{"rendered":"http:\/\/www.kristiansborg.dk\/bibliotek\/?page_id=455"},"modified":"2011-11-08T08:55:57","modified_gmt":"2011-11-08T06:55:57","slug":"kapitel-1-introduktion","status":"publish","type":"page","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/","title":{"rendered":"Kapitel 1 Introduktion"},"content":{"rendered":"<p>I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.<\/p>\n<h1>Fra statisk til dynamisk indhold<\/h1>\n<p>I starten af World Wide Webs liv var alle web-steder statiske. Webbet blev kun brugt til at pr\u00e6sentere information i form af rapporter, unders\u00f8gelser, forskningsresultater og s\u00e5 videre. Denne opgave kunne markeringssproget HTML sagtens h\u00e5ndtere, og det var da ogs\u00e5 den mest udbredte web-teknologi p\u00e5 det tidspunkt.<\/p>\n<div style=\"border: 1px solid red; color: red\">\n<p><b>Du l\u00e6ser en gammel bog<\/b><\/p>\n<p>Den bog, du l\u00e6ser her, er fra 1999, og mange ting kan have \u00e6ndret sig siden da.<br \/>\nVi h\u00e5ber, at du stadig kan finde relevant information i den.<br \/>\nHvis du vil l\u00e6se aktuelle oplysninger om den aktuelle version af ASP.NET, anbefaler vi<br \/>\nbogen <a href=\"http:\/\/clk.tradedoubler.com\/click?p(197229)a(2029446)g(19172914)url(http:\/\/www.adlibris.com\/dk\/product.aspx?isbn=0735643385)\" onclick=\"javascript:pageTracker._trackPageview('\/outbound\/article\/http:\/\/clk.tradedoubler.com\/click?p(197229)a(2029446)g(19172914)url(http:\/\/www.adlibris.com\/dk\/product.aspx?isbn=0735643385)');\"  target=\"_blank\">Programming ASP.NET 4.0<\/a><img decoding=\"async\" src=\"http:\/\/impdk.tradedoubler.com\/imp?type(inv)g(19172914)a(2029446)\" \/>\n<\/div>\n<p>&nbsp;<\/p>\n<h2>Programmer p\u00e5 serveren<\/h2>\n<p>Efterh\u00e5nden som webbet blev brugt til flere og flere ting, opstod der et \u00f8nske om at kunne mere end blot at vise information. Man ville gerne kunne vise udtr\u00e6k fra databaser p\u00e5 web-stederne, og man ville ogs\u00e5 gerne give de bes\u00f8gende muligheder for at indtaste oplysninger, der kunne gemmes i databasen.<\/p>\n<p>For at l\u00f8se denne opgave blev CGI-standarden (Common Gateway Interface) defineret. CGI beskriver, hvordan web-servere og andre programmer snakker sammen. Fra brugerens synspunkt er et CGI-program blot en Internet-adresse (for eksempel http:\/\/www.mitsted.dk\/cgi-bin\/indsend.pl). Web-serveren, ved at denne adresse ikke angiver en HTML-side, der skal vises, men i stedet et CGI-program. Derfor starter web-serveren programmet og giver det oplysninger om den foresp\u00f8rgsel, der skal behandles. Herefter udf\u00f8rer programmet sin opgave, som eksempelvis kan v\u00e6re at gemme oplysninger i en database eller at udtr\u00e6kke oplysninger fra en database. Det resultat, programmet genererer, er formateret i HTML-format, og det er dette resultat, web-serveren sender tilbage til brugeren, som f\u00e5r det vist i sin browser.<\/p>\n<p>Da CGI blev opfundet, var hovedparten af alle web-servere Unix-baserede, og CGI-programmer blev derfor hovedsagelig skrevet i de sprog, der var udbredte i Unix-verdenen. Det drejer sig for eksempel om Perl\u00a0og TCL. Fordi mange af de sprog, der blev benyttet, er scriptsprog, kaldes CGI-programmer ofte for CGI-scripts. Det er dog ogs\u00e5 muligt at lave CGI-programmer, der er skrevet i andre programmeringssprog, og som er kompileret til maskinkode. Dette bruges blandt andet p\u00e5 Windows-platformen, hvor mange CGI-programmer findes som exe- eller dll-filer.<\/p>\n<p>Teknologien bag CGI-programmer har imidlertid nogle ulemper. Det st\u00f8rste problem er, at programmerne afvikles p\u00e5 serveren. Umiddelbart virker det meget fornuftigt at lade serveren, der jo ofte er en meget kraftfuld maskine, udf\u00f8re programmerne, og det er ogs\u00e5 tit n\u00f8dvendigt, hvis programmerne skal have adgang til oplysninger gemt i en database p\u00e5 serveren. Problemet med denne fremgangsm\u00e5de er bare, at programmerne har uanede muligheder p\u00e5 serveren. For eksempel kan man skrive et program, der formaterer serverens harddisk, eller p\u00e5 anden m\u00e5de \u00f8del\u00e6gger serveren. Dette problem var ikke s\u00e5 stort, da CGI blev opfundet i starten af webbets historie, men efterh\u00e5nden som flere og flere brugere kom p\u00e5 nettet, og flere og flere brugere havde deres hjemmesider p\u00e5 den samme server, blev det et problem, at en bruger kunne \u00f8del\u00e6gge det for de andre. Mange Internet-udbydere valgte ligefrem at forbyde deres brugere at benytte CGI-programmer, mens andre begr\u00e6nsede adgangen til nogle f\u00e5 programmer, som udbyderen selv stillede til r\u00e5dighed.<\/p>\n<p>&nbsp;<\/p>\n<h2>Programmer p\u00e5 klienten<\/h2>\n<p>Denne udvikling gjorde, at det blev sv\u00e6rt for mange brugere at lave dynamiske hjemmesider, fordi deres Internet-udbyder simpelthen ikke tillod det. Derudover var der et \u00f8nske om at lave web-siderne mere interessante for brugerne. Mange valgte derfor at skifte fra at lade programmerne k\u00f8re p\u00e5 serveren til at lade dem k\u00f8re p\u00e5 klientens computer. Det var Netscape, der definerede den teknologi, der gjorde dette muligt. Teknologien gjorde det muligt at skrive programmer, der kunne inkluderes i HTML-sider, og derefter blive udf\u00f8rt p\u00e5 klientens maskine. Netscape definerede et sprog, man kunne skrive programmerne i. Dette sprog blev kaldt JavaScript\u00a0(og det m\u00e5 ikke forveksles med Java\u00a0fra Sun, som er noget helt andet). JavaScript blev i f\u00f8rste omgang inkluderet i Netscapes egen browser, Navigator, men blev senere ogs\u00e5 inkluderet i Microsoft Internet Explorer. Her blev sproget dog kaldt Jscript, og det var ikke helt magen til JavaScript fra Netscape. Nogle ting kunne man kun g\u00f8re i JavaScript, og andre ting kunne kun g\u00f8res i Jscript. Derudover valgte Microsoft at definere sit eget sprog, som kun kunne afvikles i Internet Explorer. Dette sprog blev baseret p\u00e5 Microsoft Visual Basic, og kom derfor til at hedde VBScript.<\/p>\n<p>Dette viser en af svaghederne ved at afvikle programmerne p\u00e5 klienten \u2013 man kan ikke v\u00e6re sikker p\u00e5, at programmet virkeligt bliver afviklet. Skriver man for eksempel sit program i JavaScript, kan man ikke v\u00e6re sikker p\u00e5, at det bliver afviklet korrekt i Internet Explorer. Derudover har man et problem, hvis brugeren har en browser, der er s\u00e5 gammel, at den slet ikke kender til JavaScript eller Jscript \u2013 s\u00e5 bliver ens program med garanti ikke udf\u00f8rt.<\/p>\n<p>Derudover har man ikke l\u00f8st det sikkerhedsproblem, CGI-script gav p\u00e5 serveren, men i stedet flyttet det til klientens computer. Skr\u00e6khistorierne om, hvad det var muligt at g\u00f8re ved klientens computer ved hj\u00e6lp at JavaScript, Jscript eller VBScript har v\u00e6ret utallige, og det har f\u00e5et mange sikkerhedsnerv\u00f8se brugere til at sl\u00e5 scriptfunktionerne i browseren helt fra. Derved er der endnu flere brugere, der ikke f\u00e5r programmerne afviklet.<\/p>\n<p>En anden svaghed ved klientscriptene ligger i teknologiens natur. Eftersom scriptene skal afvikles p\u00e5 klientens computer, er det n\u00f8dvendigt at overf\u00f8re dem til den. Som n\u00e6vnt tidligere bliver scriptene overf\u00f8rt som en del af de HTML-sider, brugeren v\u00e6lger at f\u00e5 vist \u2013 det betyder, at brugeren nemt kan se, hvordan scriptet er opbygget, og uden videre kopiere det til sit eget web-sted. Dette er naturligvis ikke lovligt, men det har ikke forhindret mange mennesker i at g\u00f8re det, og det er da ogs\u00e5 s\u00e6rdeles sv\u00e6rt \u2013 hvis ikke umuligt \u2013 at bevise, hvem der har ophavsretten til et script, der ligger p\u00e5 nettet, og som kan v\u00e6re blevet hentet af flere millioner brugere. Dette problem har lagt en stor begr\u00e6nsning p\u00e5 m\u00e6ngden af kommercielle scripts udviklet af professionelle programm\u00f8rer. Der er ikke mange, der vil give penge for et script, n\u00e5r man ved, at man selv kan kopiere det p\u00e5 5 minutter uden at skulle give en \u00f8re for det.<\/p>\n<p>Endeligt er der det problem, at det ikke er alting, det er muligt at g\u00f8re fra klienten. Man kan eksempelvis ikke l\u00e6se eller skrive i en database, der ligger p\u00e5 serveren, fra et program, der afvikles p\u00e5 klienten.<\/p>\n<p>Alle disse problemer fandtes ikke, da man lod programmerne blive afviklet p\u00e5 serveren. Brugeren havde ingen mulighed for at forhindre programmerne i at blive k\u00f8rt, og man var sikker p\u00e5, at brugeren kunne se resultatet, ligegyldigt hvilken browser han benyttede, for svaret blev jo bare returneret som et ganske almindeligt HTML-dokument.<\/p>\n<p>Der var derfor et udbredt \u00f8nske om at f\u00e5 flyttet programafviklingen tilbage serveren, men p\u00e5 en m\u00e5de, der var mere sikker end CGI.<\/p>\n<p>&nbsp;<\/p>\n<h2>ASP<\/h2>\n<p>Det er her ASP, kommer ind i billedet. ASP blev opfundet af Microsoft som en mulighed for at afvikle programmer sikkert p\u00e5 serveren. I praksis har ASP dog mange af de samme risici, som fandtes ved CGI, men ASP har dog en lang r\u00e6kke andre fordele over CGI.<\/p>\n<p>CGI-programmer er selvst\u00e6ndige programmer, der selv skal generere hele resultatet. Med ASP er det muligt at skrive hovedparten af resultatet som almindelig HTML, mens den dynamiske del af siden kan skrives i et scriptsprog.<\/p>\n<p>Derudover bliver ASP afviklet inde i web-serveren, hvilket giver web-serveren mulighed for at kontrollere programmet, n\u00e5r det bliver afviklet. I forhold til CGI har ASP ogs\u00e5 den fordel, at programmerne skrives i scriptsprog, der typisk er lettere at l\u00e6re, end de mere komplicerede programmeringssprog. Denne medalje har dog ogs\u00e5 en bagside: der er mange ting, der ikke kan g\u00f8res fra scriptsprogene i ASP, men som sagtens kan g\u00f8res fra CGI-programmer.<\/p>\n<p>Fordelene ved ASP er dog st\u00f8rre end ulemperne, og derfor er ASP ogs\u00e5 blevet meget udbredt p\u00e5 forholdsvis kort tid.<\/p>\n<h1>Sprogene<\/h1>\n<p>ASP er ikke i sig selv et <em>programmeringssprog<\/em>. Det er en <em>standard<\/em>, som g\u00f8r det muligt at skrive programmer, der kan afvikles fra web-servere. Standarden siger intet om, hvilket sprog programmerne skal v\u00e6re skrevet i. Der er dog mange ting i standarden, der antyder, at ASP bedst kan kombineres med scriptsprog.<\/p>\n<p>Et scriptsprog skal ses i mods\u00e6tning til \u201drigtige\u201d programmeringssprog som Java, C++, Visual Basic og s\u00e5 videre. Den v\u00e6sentligste forskel p\u00e5 et scriptsprog og et af de andre sprog er, at scriptsproget bliver fortolket. Det vil sige, at programmer skrevet i et scriptsprog ikke skal kompileres, f\u00f8r de udf\u00f8res. Dette kan umiddelbart virke som en fordel \u2013 det er jo trods alt hurtigere at skrive et program, hvis man ikke skal bruge tid p\u00e5 at kompilere det \u2013 men der er en r\u00e6kke ulemper ved det. Den v\u00e6sentligste ulempe er nok, at man mister compilerens kontrol af ens program. Hvis man ved, at det program, man har skrevet, kan kompileres, s\u00e5 er man i det mindste sikker p\u00e5, at der ikke er syntaktiske fejl i programmet. Ved at undv\u00e6re compileren mister man ogs\u00e5 muligheden for at kontrollere, at sprogets typer bruges korrekt \u2013 groft sagt kan man uden en compiler l\u00e6gge \u00e6bler og bananer sammen.<\/p>\n<p>En tredje ulempe ved et ikke-kompileret program er, at det er langsommere at afvikle end et kompileret program. For i virkeligheden skal programmet jo kompileres \u2013 det er bare et sp\u00f8rgsm\u00e5l om, hvorn\u00e5r det sker. V\u00e6lger man et scriptsprog, sker kompileringen f\u00f8rst, n\u00e5r programmet skal udf\u00f8res. Det betyder, at brugeren skal vente, b\u00e5de p\u00e5 at programmet bliver udf\u00f8rt, og at programmet bliver kompileret.<\/p>\n<p>P\u00e5 den baggrund kunne man tro, at det er fuldst\u00e6ndigt h\u00e5bl\u00f8st at arbejde med scriptsprog. Men der er imidlertid ogs\u00e5 nogle fordele. I forrige afsnit n\u00e6vntes det godt nok, at det var en ulempe, at programmet f\u00f8rst skulle kompileres, n\u00e5r det skulle udf\u00f8res \u2013 og selvom det er sandt, er der dog ogs\u00e5 muligheder for at optimere udf\u00f8rslen af et scriptprogram. For eksempel er der en masse ting, man ved, n\u00e5r programmet bliver udf\u00f8rt, som man ikke ved, n\u00e5r man normalt kompilerer et program. Ved udf\u00f8rsel af et program ved man for eksempel pr\u00e6cis, hvilke dele af programmet, der skal udf\u00f8res. Man kan afg\u00f8re resultatet af de fleste betingelser i programmet. For eksempel er et udtryk som \u201dhvis brugeren er over 16 \u00e5r, s\u00e5\u2026\u201d sv\u00e6rt at afg\u00f8re, n\u00e5r man normalt kompilerer programmer, fordi man ikke p\u00e5 det tidspunkt har kendskab til brugeren. Til geng\u00e6ld er det let at afg\u00f8re, n\u00e5r programmet afvikles, for da har brugeren allerede indtastet sin alder. N\u00e5r man ved, hvilke dele af programmet, der skal udf\u00f8res, kan man naturligvis n\u00f8jes med at kompilere de dele, der bliver brug for, og det er lige n\u00f8jagtigt det, der sker.<\/p>\n<p>Der er dog ogs\u00e5 en anden fordel, som nok er den, der er den v\u00e6sentligste grund til, at det er scriptsprog, der anvendes i samarbejde med ASP. Den grund er, at n\u00e5r man ikke kompilerer et program, kan man egentligt v\u00e6re ligeglad med, hvad der st\u00e5r i det, indtil man skal udf\u00f8re det. Det betyder, at man kan blande programkode med alt muligt andet \u2013 for eksempel HTML-kode.<\/p>\n<p>De scriptsprog, der oftest bruges sammen med ASP, er JavaScript og VBScript. Disse vil kort blive gennemg\u00e5et i det f\u00f8lgende. Gennemgangen er t\u00e6nkt som en kort introduktion til sprogene og ikke som en grundig gennemgang.<\/p>\n<p>Der er ikke s\u00e6rlig stor forskel p\u00e5, hvilke muligheder de to sprog stiller til r\u00e5dighed, og man kan s\u00e5ledes ikke sige, at det ene sprog er bedre end det andet. I denne bog har vi valgt at skrive eksemplerne i JavaScript.<\/p>\n<p>Ligesom virkelige sprog udvikler sig, og der kommer nye udtryk til, udvikler scriptsprogene sig ogs\u00e5. Derfor findes der i \u00f8jeblikket to forskellige udgaver af sprogene. De nye versioner (VBScript 5 og JScript 5) kan kun bruges, n\u00e5r serveren er Windows 2000. Der er dog ikke indf\u00f8rt megen ny funktionalitet i de nye udgaver, og derfor behandles de i hovedparten af denne bog ens. Enkelte steder, bliver der dog gjort opm\u00e6rksom p\u00e5, at en given fremgangsm\u00e5de kun kan benyttes af en bestemt udgave af sproget.<\/p>\n<p>&nbsp;<\/p>\n<h2>JavaScript<\/h2>\n<p>Som det blev n\u00e6vnt tidligere, er JavaScript et sprog, der blev udviklet af Netscape for at g\u00f8re det lettere at lave sp\u00e6ndende hjemmesider. F\u00f8rste gang sproget blev n\u00e6vnt i denne bog, var i forbindelse med programmer p\u00e5 klienten, og man kunne s\u00e5ledes forledes til at tro, at JavaScript ikke havde noget at g\u00f8re p\u00e5 serveren. Dette er imidlertid ikke sandt, for JavaScript er et generelt sprog \u2013 klientprogrammer er blot en af dets mange anvendelser; Netscape bruger for eksempel JavaScript i de fleste af deres serverprogrammer, og det kan ogs\u00e5 anvendes i forbindelse med ASP.<\/p>\n<p>JavaScript m\u00e5 ikke forveksles med Java fra Sun. Java er et egentligt programmeringssprog, som skal kompileres, og som man kan skrive selvst\u00e6ndige programmer i. JavaScript derimod er et scriptsprog, som kun kan bruges til at skrive sm\u00e5programmer (scripts), som udf\u00f8res i andre programmer (for eksempel web-servere). Derudover er JavaScript typel\u00f8st (alle variable er af den samme type), mens Java har st\u00e6rkt typecheck og indeholder flere hundrede forskellige typer og klasser. Ligeledes er Java et fuldst\u00e6ndigt objektorienteret sprog, mens JavaScript kun giver mulighed for at benytte de objekter, der i forvejen er defineret af den standard, scriptet skal afvikles under \u2013 det kan eksempelvis v\u00e6re ASP.<\/p>\n<p>Med det p\u00e5 plads skal det dog n\u00e6vnes, at der er visse ligheder mellem Java og JavaScript, men det g\u00e6lder kun selve opbygningen af sproget. For eksempel er mange af kontrolstrukturerne i de to sprog ens, og hvis man i forvejen kender til Java, er det nok en fordel at v\u00e6lge JavaScript som sit programmeringssprog.<\/p>\n<p>JavaScript er blevet standardiseret af ECMA (European Computer Manufacturer Association) og hedder derfor ECMAScript. B\u00e5de JavaScript, som det er defineret af Netscape, og JScript, som det er defineret af Microsoft, opfylder ECMAScript-standarden \u2013 men de indeholder ogs\u00e5 nogle tilf\u00f8jelser. Der er alts\u00e5 stadig forskel p\u00e5 JavaScript og JScript, men s\u00e5 l\u00e6nge man kun bruger de muligheder, der er standadiserede, er man p\u00e5 den sikre side.<\/p>\n<p>For at mindske navneforvirringen bliver alle tre JavaScript-varianter i denne bog kaldt JavaScript, selvom det egentligt er JScript, der benyttes, da ASP \u2013 ligesom JScript \u2013 er opfundet af Microsoft.<\/p>\n<p>&nbsp;<\/p>\n<h3>Generel syntaks<\/h3>\n<p>I JavaScript er der forskel p\u00e5 store og sm\u00e5 bogstaver. Det vil sige, at variablen Tal ikke er det samme som variablen tal.<\/p>\n<p>For hver kodes\u00e6tning er det god skik at s\u00e6tte et semikolon, men det er ikke strengt n\u00f8dvendigt. Semikoloner kan v\u00e6re med til at g\u00f8re programmet lettere at l\u00e6se, men hvis man ikke er rutineret i et programmeringssprog, der anvender semikolon, kan det v\u00e6re besv\u00e6rligt at f\u00e5 dem sat rigtigt.<\/p>\n<p>&nbsp;<\/p>\n<h3>Metoder<\/h3>\n<p>Nogle programmeringssprog skelner mellem funktioner og procedurer. En funktion er en metode, der returnerer en v\u00e6rdi, mens en procedure er en metode, der ikke returnerer en v\u00e6rdi. Et eksempel p\u00e5 en funktion kunne v\u00e6re kvadratrod, som returnerer kvadratroden af et tal. Et eksempel p\u00e5 en procedure kunne v\u00e6re udskriv, der udskriver noget tekst, men intet returnerer.<\/p>\n<p>I JavaScript benyttes denne skelnen ikke. Her bliver funktioner og procedurer under \u00e9t kaldt funktioner. Man erkl\u00e6rer en funktion ved at bruge ordet function, der efterf\u00f8lges af funktionens navn. Herefter angiver man navnene p\u00e5 de parametre, funktionen skal bruge, i parentes. Eksempelvis<\/p>\n<p>&nbsp;<\/p>\n<p>function areal(len, bredde) {<\/p>\n<p>return len * bredde;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>Eksemplet viser lidt mere end blot, hvordan man erkl\u00e6rer en funktion. Den viser ogs\u00e5, at alle de kommandoer, der er en del af funktionen, skal samles mellem { og }. Eksemplet viser ogs\u00e5, hvordan man returnerer en v\u00e6rdi. Det g\u00f8r man ved at skrive return efterfulgt af den v\u00e6rdi, der skal returneres. I dette eksempel er det arealet, der skal returneres, og det findes som bekendt ved at gange l\u00e6ngde med bredde.<\/p>\n<p>I JavaScript best\u00e5r et program ikke kun af funktioner. Det er ogs\u00e5 muligt at skrive kode, der ikke er del af en funktion. Da JavaScript som n\u00e6vnt er et fortolket sprog, vil den del af programmet, der st\u00e5r uden for funktioner, blive udf\u00f8rt, n\u00e5r fortolkeren n\u00e5r til det, mens funktionerne kun vil blive udf\u00f8rt, n\u00e5r de bliver kaldt eksplicit. Hvis et program kun best\u00e5r af funktioner, vil der s\u00e5ledes intet ske, n\u00e5r det bliver udf\u00f8rt.<\/p>\n<p>&nbsp;<\/p>\n<h3>Kontrolstrukturer<\/h3>\n<p>Kontrolstrukturer er de strukturer i et sprog, der g\u00f8r det muligt at kontrollere afviklingen af programmet. Det kan for eksempel v\u00e6re l\u00f8kker, der gentager dele af programmet, eller betingelser, der afg\u00f8r, hvilke dele af programmet, der skal udf\u00f8res.<\/p>\n<p>I JavaScript bruges tegnene { og } til at samle flere linier kode i en blok. Det vil sige, at hvis der er flere linier kode, der kun skal udf\u00f8res, hvis en bestemt betingelse er opfyldt, skal disse linier omkranses af { og }.<\/p>\n<p>JavaScript indeholder to forskellige former for l\u00f8kker. Det er for-l\u00f8kker og while-l\u00f8kker. Det er ikke direkte forkert at bruge den ene l\u00f8kke fremfor den anden, for de kan det samme. Der er dog typisk en af l\u00f8kkerne, det er mere hensigtsm\u00e6ssigt at bruge end andre.<\/p>\n<p>For-l\u00f8kker bruges typisk, n\u00e5r en sektion skal l\u00f8bes igennem et bestemt antal gange. Hvis man eksempelvis vil summere tallene fra 1 til 9, kan man skrive<\/p>\n<p>&nbsp;<\/p>\n<p>sum = 0;<\/p>\n<p>for (tal = 1; tal &lt; 10; tal = tal + 1) {<\/p>\n<p>sum = sum + tal;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>Umiddelbart ser for-strukturen lidt kompliceret ud. Lad os f\u00f8rst konstatere, at indholdet af parentesen i for-s\u00e6tningen best\u00e5r af tre dele, der er adskilt af semikolon. Den f\u00f8rste del indeholder initialisering \u2013 denne del bliver udf\u00f8rt, f\u00f8r l\u00f8kken k\u00f8res f\u00f8rste gang. Den n\u00e6ste del kaldes k\u00f8rselsbetingelsen, fordi det er en betingelse, der skal v\u00e6re sand, for at l\u00f8kken bliver k\u00f8rt. I dette tilf\u00e6lde er betingelsen tal &lt; 10, hvilket betyder, at l\u00f8kken bliver k\u00f8rt, s\u00e5 l\u00e6nge tal er mindre end 10. Den sidste del kaldes t\u00e6llerskridtet \u2013 her bliver tal talt op. T\u00e6llerskridtet udf\u00f8res for hver gang, l\u00f8kken er blevet udf\u00f8rt. Det vil alts\u00e5 sige, at tal ender med at v\u00e6re 10. Sidste gang l\u00f8kken k\u00f8res, er tal 9, men t\u00e6llerskridtet udf\u00f8res som det sidste, og derfor bliver tal talt op til 10.<\/p>\n<p>While-l\u00f8kker bruges, hvis en l\u00f8kke skal udf\u00f8res, s\u00e5 l\u00e6nge et givent udtryk er sandt. Det kan for eksempel v\u00e6re, s\u00e5 l\u00e6nge der ikke er ny e-post.<\/p>\n<p>&nbsp;<\/p>\n<p>while\u00a0(antal_beskeder == 0) {<\/p>\n<p>\u2026<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>JavaScript har ogs\u00e5 et udtryk, der hedder <em>enumerator<\/em>. Det er en samling af oplysninger. Enumerator-objektet bruges ofte i ASP, n\u00e5r man skal have oplysninger om en r\u00e6kke elementer \u2013 det kan for eksempel v\u00e6re elementerne i en HTML-formular.<\/p>\n<p>Enumerator-objektet bruges s\u00e5ledes:<\/p>\n<p>&nbsp;<\/p>\n<p>enum = new Enumerator(<em>elementer<\/em>);<\/p>\n<p>while (!enum.atEnd()) {<\/p>\n<p>element =\u00a0 enum.item();<\/p>\n<p>enum.moveNext();<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>Det, eksemplet viser, er, at man kan oprette et Enumerator-objekt ved at skrive new Enumerator og derefter angive et objekt, der indeholder en r\u00e6kke elementer. Dette kan v\u00e6re et objekt eller en funktion, der returnerer et objekt. Hvis man vil genneml\u00f8be alle elementerne i Enumerator, kan man lave en l\u00f8kke, der k\u00f8rer s\u00e5 l\u00e6nge atEnd() returnerer falsk.<\/p>\n<p>N\u00e5r man vil have det objekt, enumeratoren peger p\u00e5 lige i \u00f8jeblikket, skal man kalde metoden item(). For at g\u00e5 videre til det n\u00e6ste objekt skal man bruge metoden moveNext().<\/p>\n<p>&nbsp;<\/p>\n<h3>Operatorer<\/h3>\n<p>Operatorer er de tegn eller udtryk, man kan s\u00e6tte imellem to udtryk. Det kan for eksempel v\u00e6re de almindelige regneoperatorer (+, -, *, \/), eller nogle mere avancerede operatorer, der sammenligner eller tildeler v\u00e6rdier.<\/p>\n<p>I JavaScript anvendes et enkelt lighedstegn til at tildele v\u00e6rdier, mens dobbelte lighedstegn bruges til at sammenligne v\u00e6rdier:<\/p>\n<p>&nbsp;<\/p>\n<p>tal = 2;<\/p>\n<p>if (tal == 2) {<\/p>\n<p>&#8230;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>Derudover har JavaScript to operatorer til at opt\u00e6lle og nedt\u00e6lle en v\u00e6rdi. Det er henholdsvis ++ og &#8211;.<\/p>\n<p>&nbsp;<\/p>\n<p>Nedenst\u00e5ende eksempel tildeler variablen tal v\u00e6rdien 5, hvorefter den t\u00e6lles en op (til 6), hvorefter den t\u00e6lles en ned (til 5).<\/p>\n<p>&nbsp;<\/p>\n<p>tal = 5;<\/p>\n<p>tal++;<\/p>\n<p>tal&#8211;;<\/p>\n<p>&nbsp;<br \/>\n<script type=\"text\/javascript\"><!--\ngoogle_ad_client = \"ca-pub-3400894606969585\";\n\/* Bibliotek - ASP *\/\ngoogle_ad_slot = \"2386722770\";\ngoogle_ad_width = 336;\ngoogle_ad_height = 280;\n\/\/-->\n<\/script><br \/>\n<script type=\"text\/javascript\"\nsrc=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\n<\/script><\/p>\n<h3>Exceptions<\/h3>\n<p>Med introduktionen af Windows 2000 er der foretaget en opdatering af de scriptsprog, der underst\u00f8ttes i forbindelse med ASP. JavaScript-fortolkeren er blevet opgraderet til version 5, hvilket betyder, at man nu har mulighed for at h\u00e5ndtere <em>exceptions<\/em>. Exceptions er en m\u00e5de at angive, at der er opst\u00e5et en fejl. Nedenst\u00e5ende eksempel viser, hvordan man kan bruge exceptions i JavaScript.<\/p>\n<p>&nbsp;<\/p>\n<p>try {<\/p>\n<p>\/\/ g\u00f8r noget<\/p>\n<p>} catch (exception) {<\/p>\n<p>\/\/ g\u00f8r dette, hvis der opst\u00e5r en fejl<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>De programlinier, der kan medf\u00f8re en exception, skal skrives i en try-blok. Hvis der opst\u00e5r en exception, afbrydes udf\u00f8rslen af try-blokken, og i stedet udf\u00f8res catch-blokken.<\/p>\n<p>Man kan ogs\u00e5 selv skrive kode, der kan give en exception. S\u00e5 skal man f\u00f8rst lave en exception-metode, som skal se s\u00e5ledes ud:<\/p>\n<p>&nbsp;<\/p>\n<p>function MinException (nummer, beskrivelse, info) {<\/p>\n<p>this.Number = nummer;<\/p>\n<p>this.Description = beskrivelse;<\/p>\n<p>this.CustomInfo = info;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>N\u00e5r der opst\u00e5r en fejl, kan man <em>kaste<\/em> den p\u00e5g\u00e6ldende exception. Det g\u00f8res s\u00e5ledes:<\/p>\n<p>&nbsp;<\/p>\n<p>enException = new MinException(10, &#8220;Kan ikke dividere med 0&#8221;, &#8220;Fejl&#8221;);<\/p>\n<p>throw enException;<\/p>\n<p>&nbsp;<\/p>\n<p>Som det ses af ovenst\u00e5ende, er exception-systemet i JavaScript stort set det samme som i programmeringssproget Java.<\/p>\n<p>&nbsp;<\/p>\n<h2>VBScript<\/h2>\n<p>Som n\u00e6vnt tidligere er VBScript Microsofts svar p\u00e5 JavaScript. Hvor VBScripts udbredelse p\u00e5 klientsiden er begr\u00e6nset, fordi det kun underst\u00f8ttes af Microsofts egen browser, er der ingen problemer i at anvende det p\u00e5 serversiden, da det er web-serveren, der udf\u00f8rer scriptene, og ikke browseren.<\/p>\n<p>Som sprog minder VBScript meget om Microsoft Visual Basic \u2013 dog er der en lang r\u00e6kke ting, man ikke kan i VBScript, som er mulige i Visual Basic. Man kan sige, at VBScript er til Visual Basic som JavaScript er til Java. Visual Basic er det sprog, der bruges til at skrive fuldst\u00e6ndige applikationer, mens VBScript bruges til at skrive sm\u00e5programmer, der udf\u00f8res af andre programmer. P\u00e5 linie med JavaScript er VBScript typel\u00f8st \u2013 det vil sige, at alle variable er af den samme type: Variant.<\/p>\n<p>&nbsp;<\/p>\n<h3>Generel syntaks<\/h3>\n<p>I VBScript\u00a0er der ikke forskel p\u00e5 store og sm\u00e5 bogstaver \u2013 det er i tr\u00e5d med sproget BASIC, hvor store og sm\u00e5 bogstaver ogs\u00e5 opfattes ens. I mods\u00e6tning til JavaScript er det i VBScript forbudt at bruge semikolon for enden af en linie. Hver kommando afsluttes i VBScript med et linieskift, og fortolkeren h\u00e5ndterer selv kommandoer, der str\u00e6kker sig over mere end en linie.<\/p>\n<p>&nbsp;<\/p>\n<h3>Metoder<\/h3>\n<p>N\u00e5r man bruger VBScript, skal man v\u00e6re opm\u00e6rksom p\u00e5, at der er stor forskel p\u00e5 funktioner og procedurer. Funktioner er som n\u00e6vnt metoder, der returnerer en v\u00e6rdi, mens procedurer intet returnerer. Nedenst\u00e5ende eksempel viser, hvordan man laver en procedure \u2013 i VBScript kaldes procedurer for Subs.<\/p>\n<p>&nbsp;<\/p>\n<p>Sub udskriv<\/p>\n<p>&#8230;<\/p>\n<p>End Sub<\/p>\n<p>&nbsp;<\/p>\n<p>Funktioner kaldes I VBScript for functions (ligesom i JavaScript), og en funktion kan defineres s\u00e5ledes:<\/p>\n<p>&nbsp;<\/p>\n<p>Function areal(len, bredde)<\/p>\n<p>areal = len * bredde<\/p>\n<p>End Function<\/p>\n<p>&nbsp;<\/p>\n<p>Eksemplet viser ogs\u00e5, hvordan man returnerer en v\u00e6rdi fra en funktion. Hvor man i JavaScript bruger det reserverede ord return, g\u00f8r man i VBScript det, at man tildeler funktionen den v\u00e6rdi, der skal returneres. I dette eksempel skal v\u00e6rdien af udtrykket len * bredde returneres, og da funktionen hedder areal, skriver man simpelthen areal = len * bredde.<\/p>\n<p>Allerede nu begynder en del af forskellene p\u00e5 JavaScript og VBScript at blive tydelige. Ikke alene returnerer man v\u00e6rdier p\u00e5 forskellige m\u00e5der, man samler ogs\u00e5 kommandoer i blokke p\u00e5 forskellige m\u00e5der.<\/p>\n<p>Hvor man i JavaScript bruger { og } til at angive blokke, bruger man i VBScript reserverede ord. I ovenst\u00e5ende eksempel er det Function, som automatisk starter en blok, og End Function, der afslutter den. Det samme princip anvendes ved betingelser, hvor If\u00a0automatisk starter en blok, og End If\u00a0automatisk afslutter den.<\/p>\n<p>&nbsp;<\/p>\n<h3>Kontrolstrukturer<\/h3>\n<p>Kontrolstrukturerne i VBScript er v\u00e6sentligt anderledes end i JavaScript. Ligesom JavaScript har VBScript b\u00e5de For-l\u00f8kker og While-l\u00f8kker. Selvom l\u00f8kkerne har samme navn som l\u00f8kkerne i JavaScript, er deres syntaks meget anderledes.<\/p>\n<p>For-l\u00f8kken i VBScript ser s\u00e5ledes ud:<\/p>\n<p>&nbsp;<\/p>\n<p>Sum = 0<\/p>\n<p>For Tal = 1 To 10<\/p>\n<p>Sum = Sum + Tal<\/p>\n<p>Next<\/p>\n<p>&nbsp;<\/p>\n<p>Denne l\u00f8kke g\u00f8r pr\u00e6cis det samme som den tilsvarende l\u00f8kke i JavaScript-afsnittet: den summerer alle tal mellem 1 og 10. Umiddelbart ser VBScripts udgave af For-konstruktionen simplere ud end JavaScripts. Det skyldes, at man ikke har s\u00e5 mange muligheder i VBScripts For-l\u00f8kker som i JavaScripts for-l\u00f8kker.<\/p>\n<p>Initialiseringen af variablen Tal sker umiddelbart efter det reserverede ord For. Efter initialiseringen f\u00f8lger det reserverede ord To. Det tal, der st\u00e5r efter To, angiver den st\u00f8rste v\u00e6rdi Tal vil f\u00e5. I dette eksempel er det 10.<\/p>\n<p>I JavaScript var opt\u00e6llingen af Tal ogs\u00e5 en del af For-s\u00e6tningen \u2013 det er ikke tilf\u00e6ldet i VBScript. Her bliver Tal f\u00f8rst talt op, n\u00e5r man n\u00e5r til udtrykket Next, der afslutter For-blokken. Det vil sige, at det er kommandoerne mellem For og Next, der bliver udf\u00f8rt i l\u00f8kken.<\/p>\n<p>Som det ses, er der adskillige ting, der var simpelt i JavaScript, som man ikke umiddelbart kan g\u00f8re i VBScript. Det g\u00e6lder for eksempel at lave en For-l\u00f8kke, hvor k\u00f8rselsbetingelsen ikke afh\u00e6nger af Tal\u2019s v\u00e6rdi. Det g\u00e6lder ogs\u00e5 at \u00e6ndre Tal\u2019s v\u00e6rdi med andet end +1 for hver gennemk\u00f8rsel af l\u00f8kken.<\/p>\n<p>While-l\u00f8kkerne i VBScript minder en del om de tilsvarende While-l\u00f8kker i JavaScript. Hvis man vil implementere l\u00f8kken fra JavaScript-afsnittet i VBScript, ville den se s\u00e5ledes ud:<\/p>\n<p>&nbsp;<\/p>\n<p>While (Antal_Beskeder = 0)<\/p>\n<p>. . .<\/p>\n<p>Wend<\/p>\n<p>&nbsp;<\/p>\n<p>Ovenst\u00e5ende l\u00f8kke k\u00f8rer, s\u00e5 l\u00e6nge variablen Antal_Beskeder har v\u00e6rdien 0. Ordet While starter en blok i koden, mens ordet Wend slutter den. Det er alts\u00e5 med andre ord linierne mellem While og Wend, der udf\u00f8res i l\u00f8kken.<\/p>\n<p>&nbsp;<\/p>\n<h3>Operatorer<\/h3>\n<p>VBScript har ikke lige s\u00e5 mange avancerede operatorer som JavaScript. Der er naturligvis de almindelige, matematiske operatorer (+, -, * og \/). Derudover er der selvf\u00f8lgelig sammenligningsoperatorer og en operator til tildeling. I mods\u00e6tning til JavaScript bruger VBScript den samme operator til sammenligning og tildeling \u2013 operatoren er =. Det betyder, at nedenst\u00e5ende eksempel er korrekt:<\/p>\n<p>&nbsp;<\/p>\n<p>Tal = 5<\/p>\n<p>If Tal = 5<\/p>\n<p>. . .<\/p>\n<p>End If<\/p>\n<p>&nbsp;<\/p>\n<p>Hvis man skal sammenligne for forskellighed, skal man bruge operatoren &lt;&gt;. Eksempelvis s\u00e5dan:<\/p>\n<p>&nbsp;<\/p>\n<p>Tal = 7<\/p>\n<p>If Tal &lt;&gt; 5<\/p>\n<p>. . .<\/p>\n<p>End if<\/p>\n<h1>Visuelle v\u00e6rkt\u00f8jer<\/h1>\n<p>Da World Wide Web og HTML begyndte at blive popul\u00e6rt, blev der udviklet masser af sm\u00e5 HTML-redigeringsprogrammer (HTML-editorer), der skulle g\u00f8re det lettere at skrive HTML. Inden l\u00e6nge fik disse dog h\u00e5rd konkurrence af de grafiske HTML-v\u00e6rkt\u00f8jer, der gjorde det muligt at lave en HTML-side uden at forst\u00e5 en brik HTML \u2013 den eneste evne man skulle have, var at kunne betjene et program med en grafisk brugergr\u00e6nseflade. Microsoft Frontpage\u00a0er et eksempel p\u00e5 den slags programmer.<\/p>\n<p>Udviklingen indenfor ASP tager den samme retning. Der findes allerede en r\u00e6kke programmer, der kan generere ASP-sider automatisk. De mest udbredte til Windows-platformen er nok Drumbeat 2000\u00a0fra Macromedia og Microsoft Visual InterDev. Microsoft Access fra pakken Microsoft Office er dog ogs\u00e5 i stand til at generere nogle standardiserede ASP-sider.<\/p>\n<p>Ved at bruge disse visuelle v\u00e6rkt\u00f8jer kan man lave en m\u00e6ngde ASP-sider i en fart, og hvis udviklingstiden er det eneste succeskriterium, er det klart, at man skal v\u00e6lge at bruge et af de visuelle v\u00e6rkt\u00f8jer.<\/p>\n<p>Der er imidlertid ogs\u00e5 en r\u00e6kke ulemper ved de visuelle v\u00e6rkt\u00f8jer. Den st\u00f8rste ulempe ligger nok begravet i selve konceptet bag et visuelt v\u00e6rkt\u00f8j. V\u00e6rkt\u00f8jet er intet v\u00e6rd, hvis det ikke er generelt. Der er ikke ret meget ved et v\u00e6rkt\u00f8j, hvis det kun kan udf\u00f8re en bestemt opgave \u2013 det skal naturligvis kunne tilpasses den enkelte bruger, og generere ASP-sider med pr\u00e6cis det indhold, designeren vil have. For at kunne dette skal v\u00e6rkt\u00f8jet tage h\u00f8jde for en hel masse ting \u2013 en masse ting, som i de fleste tilf\u00e6lde er s\u00e6rdeles overfl\u00f8dige. Derfor genererer v\u00e6rkt\u00f8jerne ofte en masse overfl\u00f8dig programkode. Overfl\u00f8dig programkode optager ikke bare un\u00f8digt meget plads p\u00e5 web-serveren, men det belaster ogs\u00e5 serveren un\u00f8digt, n\u00e5r siderne skal hentes frem og fortolkes, ligesom det giver l\u00e6ngere svartider til brugeren, fordi store sider tager l\u00e6ngere tid at fortolke end sm\u00e5.<\/p>\n<p>Et andet problem er, at selvom v\u00e6rkt\u00f8jerne som regel er ret generelle, kan man let l\u00f8be ind i en problemstilling, som v\u00e6rkt\u00f8jet ikke kan klare. I s\u00e5 fald er man n\u00f8dt til at have et vist kendskab til ASP, da man enten selv skal skrive det hele fra bunden, eller fordi man skal tilpasse det, v\u00e6rkt\u00f8jet har genereret. I det sidste tilf\u00e6lde f\u00e5r man derudover det problem, at de ASP-sider, der bliver genereret af de visuelle v\u00e6rkt\u00f8jer, oftest er s\u00e6rdeles uoverskuelige.<\/p>\n<p>&nbsp;<\/p>\n<h2>Drumbeat 2000<\/h2>\n<p>I forhold til tidligere versioner af Drumbeat er Drumbeat 2000 st\u00e6rkt forbedret. Programmet findes i flere forskellige udgaver \u2013 i dette afsnit beskrives ASP-versionen.<\/p>\n<p>Drumbeat 2000\u00a0kan dels bruges som designerv\u00e6rkt\u00f8j til hjemmesider p\u00e5 linie med eksempelvis Microsoft Frontpage. En mere interessant anvendelse af produktet er dog muligheden for at lave ASP-sider med udgangspunkt i en database.<\/p>\n<p>Til at foretage dette findes en guide. Denne guide skal man fort\u00e6lle, hvilken database man vil benytte, samt hvilken SQL-foresp\u00f8rgsel som udv\u00e6lger de data, der skal arbejdes p\u00e5.<\/p>\n<p>Dern\u00e6st kan man v\u00e6lge, hvilke funktioner man skal have. Der er muligheder for s\u00f8gning, sletning, oprettelse og \u00e6ndring. Systemet bygges op om en s\u00f8gning eller en total oversigt over posterne og med knapper til at g\u00e5 til n\u00e6ste og forrige post.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.kristiansborg.dk\/bibliotek\/wp-content\/uploads\/2011\/11\/01011.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-458\" title=\"0101\" src=\"http:\/\/www.kristiansborg.dk\/bibliotek\/wp-content\/uploads\/2011\/11\/01011-300x219.png\" alt=\"\" width=\"300\" height=\"219\" srcset=\"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-content\/uploads\/2011\/11\/01011-300x219.png 300w, https:\/\/www.kristiansborg.dk\/bibliotek\/wp-content\/uploads\/2011\/11\/01011.png 506w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Figur 1.1: Det er simpelt at lave ASP-sider med databaseadgang fra Drumbeat 2000.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Systemet er forholdsvis let tilg\u00e6ngeligt. Designet af siderne er s\u00e6rdeles simpelt, men det er kun en fordel. Det g\u00f8r siderne hurtigere at indl\u00e6se, og man kan altid bruge nogle af Drumbeats avancerede funktioner til at lave et p\u00e6nere design.<\/p>\n<p>En anden ting, der g\u00f8r Drumbeat 2000 interessant, er, at man har fors\u00f8gt at tage h\u00f8jde for de forskellige browsere. Man kan s\u00e5ledes v\u00e6lge, hvilken browser ens web-sted skal henvende sig til. I et vist omgang s\u00f8rger Drumbeat 2000 for at tilpasse siderne den browser, men p\u00e5 visse punkter m\u00e5 den melde pas og sige, at den p\u00e5g\u00e6ldende funktion ikke kan udf\u00f8res p\u00e5 grund af den valgte browser.<\/p>\n<p>Et andet eksempel p\u00e5 fleksibiliteten i Drumbeat 2000 er, at man selv kan v\u00e6lge, hvilke scriptsprog der skal vendes. Drumbeat 2000 er i stand til at generere ASP-sider i s\u00e5vel JavaScript som VBScript. Dette er en fordel, hvis man selv skal tilpasse siderne efterf\u00f8lgende \u2013 og det skal man sandsynligvis.<\/p>\n<p>Det st\u00f8rste problem ved Drumbeat 2000 er, at de ASP-sider, der genereres, er s\u00e6rdeles store. Det vil sige, at de b\u00e5de optager plads p\u00e5 web-serveren, og at de tager en del tid at afvikle, hvilket naturligvis ogs\u00e5 belaster web-serveren. Eksempelvis inkluderes skrupell\u00f8st JavaScript-filer p\u00e5 53 KB, hvortil sidernes st\u00f8rrelse p\u00e5 cirka 7 KB skal l\u00e6gges. Alt i alt en hel del for at kunne tr\u00e6kke data ud af en database og tilf\u00f8je og redigere.<\/p>\n<p>Alt i alt er Drumbeat dog et godt v\u00e6rkt\u00f8j til at generere administrationssider til at opdatere databasen p\u00e5 web-stedet, men det kan ikke anbefales til udvikling af selve web-stedet.<\/p>\n<p>Web-sted: www.macromedia.com\/software\/drumbeat\/.<\/p>\n<p>&nbsp;<\/p>\n<h2>Microsoft Visual InterDev<\/h2>\n<p>Microsoft Visual InterDev er ikke umiddelbart s\u00e5 simpelt at g\u00e5 til som Drumbeat 2000. Hvis man ikke i forvejen har kendskab til Microsofts udviklingsv\u00e6rkt\u00f8jer, vil man nok synes, at produktet er lidt omst\u00e6ndeligt at bruge de f\u00f8rste par gange.<\/p>\n<p>Grunden til dette er, at Microsoft Visual InterDev\u00a0indeholder en lang r\u00e6kke avancerede funktioner. Alt lige fra at l\u00e6gge dokumenterne op p\u00e5 web-serveren til generering af s\u00f8gesider og meget andet h\u00e5ndteres automatisk af programmet.<\/p>\n<p>Ligesom Drumbeat 2000 giver Microsoft Visual InterDev mulighed for, at man selv kan v\u00e6lge, hvilket scriptsprog, der skal bruges. Man skal dog specifikt v\u00e6lge JavaScript, hvis man vil bruge det i stedet for VBScript.<\/p>\n<p>Som det er kendetegnende for automatiske v\u00e6rkt\u00f8jer som Microsoft Visual InterDev, er den kildetekst, der genereres, temmelig omfattende. N\u00e5r man bruger projektguiden til at oprette et nyt projekt, genererer den automatisk 281 KB kildetekst. Denne kildetekst indeholder alle de funktioner, der \u2013 m\u00e5ske \u2013 skal bruges p\u00e5 web-stedet, alt efter hvor mange af Visual InterDevs avancerede muligheder man v\u00e6lger at anvende.<\/p>\n<p>N\u00e5r man f\u00f8rst kommer i gang med at benytte Microsoft Visual InterDev er v\u00e6rkt\u00f8jet dog behageligt at arbejde med, og det indeholder en r\u00e6kke guides, der hj\u00e6lper en med at l\u00f8se en r\u00e6kke af de mest almindelige opgaver i forbindelse med web-udvikling.<\/p>\n<p>Web-sted: msdn.microsoft.com\/vinterdev\/.<\/p>\n<p>&nbsp;<\/p>\n<h2>Microsoft Access<\/h2>\n<p>De seneste versioner af Microsoft Office har koncentreret sig mere og mere om integration med Internet. Det har betydet, at alle programmerne kan gemme deres dokumenter i HTML-format \u2013 det har ogs\u00e5 betydet, at databaseprogrammet Microsoft Access har f\u00e5et indbygget muligheden for at lave ASP-sider.<\/p>\n<p>I mods\u00e6tning til de andre programmer, der er blevet beskrevet, er Access st\u00e6rkt begr\u00e6nset. Hvor form\u00e5let med de andre programmer er at udvikle ASP-sider, er Microsoft Access hovedsageligt et databaseprogram.<\/p>\n<p>De ASP-sider, der kan genereres med Microsoft Access, er meget simple, og uden manuel tilpasning vil de ikke v\u00e6re egnede til at l\u00e6gge p\u00e5 Internet. Fra Microsoft Access er det ikke muligt at kombinere ASP-koden med flot design \u2013 det er tydeligt, at det her er dataene, der er i h\u00f8js\u00e6det, og ikke udseendet.<\/p>\n<p>Fra Microsoft Access kan man for eksempel gemme en foresp\u00f8rgsel som en ASP-side. Det vil sige, at man kan f\u00e5 den samme foresp\u00f8rgsel udf\u00f8rt ved at kalde en ASP-side. Det dynamiske i dette er, at indholdet af ASP-siden naturligvis \u00e6ndrer sig, n\u00e5r indholdet af databasen \u00e6ndrer sig. Det er dog ikke muligt at f\u00e5 foresp\u00f8rgslen til at \u00e6ndre sig baseret p\u00e5 brugerens valg. Alle foresp\u00f8rgslerne skal designes i Microsoft Access p\u00e5 forh\u00e5nd.<\/p>\n<p>Dette betyder, at anvendeligheden af Microsoft Access\u00a0som ASP-generator er st\u00e6rkt begr\u00e6nset. Hvem kunne for eksempel forestille sig at lave en s\u00f8gemaskine, hvor brugeren ikke selv kunne indtaste, hvilke ord der skulle s\u00f8ges efter, men var n\u00f8dt til at v\u00e6lge fra en liste af ord. Dette kunne blive konsekvensen, fordi alle foresp\u00f8rgsler skal genereres p\u00e5 forh\u00e5nd.<\/p>\n<p>Der er dog nogle tilf\u00e6lde, hvor det kan v\u00e6re ganske fornuftigt at bruge Microsoft Access til at lave ASP-sider. Det kan eksempelvis v\u00e6re en statistikfunktion, hvor foresp\u00f8rgslerne er forholdsvis konstante \u2013 det vil typisk v\u00e6re antal bes\u00f8gende fordelt p\u00e5 dage. Denne foresp\u00f8rgsel vil med fordel kunne skrives i Microsoft Access og derefter gemmes som ASP-fil. Et andet eksempel er en fuldst\u00e6ndig og ufiltreret visning af indholdet af en tabel \u2013 her er det v\u00e6sentligt lettere at bede Microsoft Access om at lave en ASP-fil, der viser indholdet af tabellen, end selv at lave den.<\/p>\n<p>&nbsp;<\/p>\n<h3>Sammenfatning<\/h3>\n<p>Hvis man skal udvikle et st\u00f8rre web-sted og har brug for et integreret udviklingsmilj\u00f8 til alle dele af udviklingen, er Microsoft Visual InterDev et godt valg. Har man i stedet kun behov for automatisk generering af ASP-sider med databaseadgang og lignende, b\u00f8r man nok v\u00e6lge Drumbeat 2000, der er noget lettere at g\u00e5 til. Endeligt kan man jo ogs\u00e5 spare pengene, og selv skrive al den n\u00f8dvendige kode \u2013 dette ender sandsynligvis med et web-sted, der fylder mindre og er hurtigere.<\/p>\n<h1>Alternativer til ASP<\/h1>\n<p>Selvom denne bog omhandler ASP, er vi ikke blinde for, at der findes en r\u00e6kke alternativer til ASP. Disse alternativer har hver deres fordele og ulemper, som kort vil blive beskrevet i dette afsnit.<\/p>\n<p>&nbsp;<\/p>\n<h2>JavaServer Pages\u00a0(JSP)<\/h2>\n<p>JavaServer Pages blev lanceret i 1999 af Sun som et direkte modstykke til Active Server Pages. Hoved\u00e5rsagen til at Sun har valgt at genopfinde den dybe tallerken, skal nok findes i, at ASP ikke har kunnet implementeres p\u00e5 Sun-Netscape-alliancens web-servere, og at det i s\u00e6rdeleshed ikke har kunnet installeres p\u00e5 Suns egen Java Web Server. Tidligere har den eneste m\u00e5de at lave dynamik p\u00e5 disse servere v\u00e6ret CGI eller Java-servletter. Det er tidligere i denne bog blevet omtalt, hvorfor mange gerne vil undg\u00e5 CGI, og Java Servlets er forholdsvis komplicerede at programmere \u2013 i hvert fald i forhold til ASP. Udvikling af Java Servlets kr\u00e6ver som minimum installation af Sun Java Development Kit, og selvom det produkt er gratis, er det un\u00f8digt besv\u00e6rligt (for slet ikke at tale om, hvad det koster at hente 20 MB via et modem). Med ASP er der ingen krav til udstyret \u2013 ASP-siderne kan skrives fra en hvilken som helst editor \u2013 for eksempel Notesblok, som f\u00f8lger gratis med Windows.<\/p>\n<p>Sun har naturligvis indset dette problem og har set sig n\u00f8dsaget til at opfinde en tilsvarende teknologi, f\u00f8r Microsofts web-servere blev alt for udbredte \u2013 denne teknologi blev JSP.<\/p>\n<p>JSP er s\u00e6rdeles t\u00e6t integreret med Java. Hvor ASP blot beskriver, hvilke objekter, der kan bruges og hvordan, men ikke stiller krav til det sprog, programmerne skrives i, kr\u00e6ver JSP at der bruges Java som programmeringssprog. Grunden til dette krav er, at JSP-sider \u2013 i mods\u00e6tning til ASP-sider \u2013 bliver kompileret. Resultatet af denne kompilering er en Java-servlet. En servlet kan i grove tr\u00e6k sammenlignes med et CGI-program, der afvikles p\u00e5 serveren. At JSP-siderne bliver kompilerede betyder, at de kan afvikles hurtigere end ASP-sider.<\/p>\n<p>At udvikle JSP-sider svarer meget til at udvikle ASP-sider. I sit program kan man uden problemer blande HTML-kode og Java. Selve overs\u00e6ttelsen til en Java-servlet foreg\u00e5r automatisk bag programm\u00f8rens ryg. Dette er som regel en fordel, men kan v\u00e6re et problem, n\u00e5r man skal fors\u00f8ge at finde fejl i sin JSP-side. S\u00e5 er det ikke ret anvendeligt at f\u00e5 at vide, at der er en fejl i linie 200 i den kompilerede servlet, n\u00e5r det linienummer ikke har nogen sammenh\u00e6ng med linienumrene i ens egen JSP-side.<\/p>\n<p>Den store fordel ved at anvende JSP fremfor ASP er, at man har adgang til alle mulighederne i Java \u2013 og det er v\u00e6sentligt flere end scriptsprogene i ASP giver mulighed for. Derudover kan man uden videre bruge eksisterende Java-klasser og JavaBeans direkte fra JSP-siderne \u2013 der skal ikke foretages konfiguration for at indl\u00e6se dem. Dette er i skarp kontrast til ASP, hvor man skal bruge COM-objekter, hvis man vil foretage ting, der ikke umiddelbart er mulige fra scriptsproget.<\/p>\n<p>En anden fordel ved at anvende JSP er, at det \u2013 ligesom Java selv \u2013 er platformsuafh\u00e6ngigt. Selvom JSP er en meget ny teknologi, er der allerede nu mange web-server-producenter, der lover at underst\u00f8tte den. Derudover er det let selv at udvide en eksisterende web-server med JSP-funktionalitet. Man beh\u00f8ver simpelthen bare at starte et program p\u00e5 web-serveren. Blandt de web-servere, der kommer til at underst\u00f8tte JSP, er Apache, der er den mest brugte web-server p\u00e5 Internet.<\/p>\n<p>Der er imidlertid ogs\u00e5 en r\u00e6kke ulemper ved JSP. Den st\u00f8rste er nok, at det ikke er s\u00e6rligt let at g\u00e5 til, hvis man ikke allerede har kendskab til Java.<\/p>\n<p>En anden ting, man skal v\u00e6re opm\u00e6rksom p\u00e5, er, at JSP er en relativt ny teknologi. Selvom JSP er baseret p\u00e5 de samme principper som ASP, der efterh\u00e5nden er forholdsvis gennempr\u00f8vet, har systemet stadig en r\u00e6kke b\u00f8rnesygdomme, der skal kureres.<\/p>\n<p>Web-sted: java.sun.com\/products\/jsp<\/p>\n<p>&nbsp;<\/p>\n<h2>PHP3<\/h2>\n<p>PHP3 blev udviklet f\u00f8r ASP og var udsprunget af en desperat web-designers \u00f8nske om at lave noget avanceret p\u00e5 en m\u00e5de, der var simplere end CGI. Han opfandt en teknologi, som han kaldte Personal Home Page Tools. Navnet blev senere \u00e6ndret til Professional Home Page Tools.<\/p>\n<p>Princippet i PHP3 er stort set det samme som i ASP, og den v\u00e6sentligste forskel er, at PHP3 er taget ud af Unix-milj\u00f8et, hvor ASP er taget ud af Windows-milj\u00f8et. Det betyder, at de sprog, der kan anvendes sammen med ASP er de, som normalt anvendes fra Windows \u2013 VBScript og JavaScript \u2013 mens PHP3 i stedet anvender de sprog, der er kendte i Unix \u2013 Perl, Python og lignende.<\/p>\n<p>PHP3 er p\u00e5 nuv\u00e6rende tidspunkt ikke liges\u00e5 udbredt som ASP, der anvendes p\u00e5 en lang r\u00e6kke af de st\u00f8rste web-steder p\u00e5 Internet.<\/p>\n<p>Web-sted: www.php.net.<\/p>\n<h1>Afrunding<\/h1>\n<p>I dette kapitel er den historiske baggrund for udviklingen af ASP blevet gennemg\u00e5et. Derudover er der blevet gennemg\u00e5et nogle grundl\u00e6ggende ting, det er godt at have p\u00e5 plads, f\u00f8r man begynder at udvikle ASP. Det er ogs\u00e5 blevet beskrevet i hvilke tilf\u00e6lde, man med fordel kan anvende nogle af de visuelle ASP-v\u00e6rkt\u00f8jer, der findes p\u00e5 markedet.<\/p>\n<div style=\"border: 1px solid red; color: red\">\n<p><b>Du l\u00e6ser en gammel bog<\/b><\/p>\n<p>Den bog, du l\u00e6ser her, er fra 1999, og mange ting kan have \u00e6ndret sig siden da.<br \/>\nVi h\u00e5ber, at du stadig kan finde relevant information i den.<br \/>\nHvis du vil l\u00e6se aktuelle oplysninger om den aktuelle version af ASP.NET, anbefaler vi<br \/>\nbogen <a href=\"http:\/\/clk.tradedoubler.com\/click?p(197229)a(2029446)g(19172914)url(http:\/\/www.adlibris.com\/dk\/product.aspx?isbn=0735643385)\" onclick=\"javascript:pageTracker._trackPageview('\/outbound\/article\/http:\/\/clk.tradedoubler.com\/click?p(197229)a(2029446)g(19172914)url(http:\/\/www.adlibris.com\/dk\/product.aspx?isbn=0735643385)');\"  target=\"_blank\">Programming ASP.NET 4.0<\/a><img decoding=\"async\" src=\"http:\/\/impdk.tradedoubler.com\/imp?type(inv)g(19172914)a(2029446)\" \/>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":452,"menu_order":10,"comment_status":"closed","ping_status":"open","template":"","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-455","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"keywords\" content=\"asp,html,web,introduktion,tutorial,bog,e-bog,ebog\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Biblioteket | Samling af artikler og b\u00f8ger\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Introduction | Active Server Pages | Biblioteket\" \/>\n\t\t<meta property=\"og:description\" content=\"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2011-11-08T06:40:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2011-11-08T06:55:57+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Introduction | Active Server Pages | Biblioteket\" \/>\n\t\t<meta name=\"twitter:description\" content=\"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-1-introduktion\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/#listItem\",\"name\":\"B\\u00f8ger\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/#listItem\",\"position\":2,\"name\":\"B\\u00f8ger\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/#listItem\",\"name\":\"Active Server Pages\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/#listItem\",\"position\":3,\"name\":\"Active Server Pages\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-1-introduktion\\\/#listItem\",\"name\":\"Kapitel 1 Introduktion\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/#listItem\",\"name\":\"B\\u00f8ger\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-1-introduktion\\\/#listItem\",\"position\":4,\"name\":\"Kapitel 1 Introduktion\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/#listItem\",\"name\":\"Active Server Pages\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#organization\",\"name\":\"Biblioteket\",\"description\":\"Samling af artikler og b\\u00f8ger\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-1-introduktion\\\/#webpage\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-1-introduktion\\\/\",\"name\":\"Introduction | Active Server Pages | Biblioteket\",\"description\":\"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.\",\"inLanguage\":\"da-DK\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-1-introduktion\\\/#breadcrumblist\"},\"datePublished\":\"2011-11-08T08:40:25+02:00\",\"dateModified\":\"2011-11-08T08:55:57+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#website\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/\",\"name\":\"Biblioteket\",\"description\":\"Samling af artikler og b\\u00f8ger\",\"inLanguage\":\"da-DK\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Introduction | Active Server Pages | Biblioteket","description":"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.","canonical_url":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/","robots":"max-image-preview:large","keywords":"asp,html,web,introduktion,tutorial,bog,e-bog,ebog","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek#listItem","position":1,"name":"Home","item":"https:\/\/www.kristiansborg.dk\/bibliotek","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/#listItem","name":"B\u00f8ger"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/#listItem","position":2,"name":"B\u00f8ger","item":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/#listItem","name":"Active Server Pages"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/#listItem","position":3,"name":"Active Server Pages","item":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/#listItem","name":"Kapitel 1 Introduktion"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/#listItem","name":"B\u00f8ger"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/#listItem","position":4,"name":"Kapitel 1 Introduktion","previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/#listItem","name":"Active Server Pages"}}]},{"@type":"Organization","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#organization","name":"Biblioteket","description":"Samling af artikler og b\u00f8ger","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/"},{"@type":"WebPage","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/#webpage","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/","name":"Introduction | Active Server Pages | Biblioteket","description":"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.","inLanguage":"da-DK","isPartOf":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#website"},"breadcrumb":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/#breadcrumblist"},"datePublished":"2011-11-08T08:40:25+02:00","dateModified":"2011-11-08T08:55:57+02:00"},{"@type":"WebSite","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#website","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/","name":"Biblioteket","description":"Samling af artikler og b\u00f8ger","inLanguage":"da-DK","publisher":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#organization"}}]},"og:locale":"da_DK","og:site_name":"Biblioteket | Samling af artikler og b\u00f8ger","og:type":"article","og:title":"Introduction | Active Server Pages | Biblioteket","og:description":"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.","og:url":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/","article:published_time":"2011-11-08T06:40:25+00:00","article:modified_time":"2011-11-08T06:55:57+00:00","twitter:card":"summary","twitter:title":"Introduction | Active Server Pages | Biblioteket","twitter:description":"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP."},"aioseo_meta_data":{"post_id":"455","title":"Introduction | Active Server Pages | #site_title","description":"I dette kapitel vil der blive givet en generel introduktion til ASP. Kapitlet indeholder blandt andet en historisk gennemgang af udviklingen fra statisk til dynamisk indhold p\u00e5 web-stederne, og fordele og ulemper ved henholdsvis programmering p\u00e5 klient- og serversiden. I denne introduktion vil de forskellige programmeringssprog, man kan bruge sammen med ASP, ogs\u00e5 blive forklaret kort, ligesom det vil blive forklaret, hvordan man kan lave ASP uden selv at programmere. Der afrundes med en kort beskrivelse af alternativerne til ASP.","keywords":[{"label":"ASP","value":"ASP"},{"label":"HTML","value":"HTML"},{"label":"web","value":"web"},{"label":"introduktion","value":"introduktion"},{"label":"tutorial","value":"tutorial"},{"label":"bog","value":"bog"},{"label":"e-bog","value":"e-bog"},{"label":"ebog","value":"ebog"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 06:59:15","updated":"2025-06-04 02:18:22","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/\" title=\"B\u00f8ger\">B\u00f8ger<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/\" title=\"Active Server Pages\">Active Server Pages<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tKapitel 1 Introduktion\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.kristiansborg.dk\/bibliotek"},{"label":"B\u00f8ger","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/"},{"label":"Active Server Pages","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/"},{"label":"Kapitel 1 Introduktion","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-1-introduktion\/"}],"_links":{"self":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/comments?post=455"}],"version-history":[{"count":5,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/455\/revisions"}],"predecessor-version":[{"id":461,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/455\/revisions\/461"}],"up":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/452"}],"wp:attachment":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/media?parent=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}