Uniform Resource Locator (URL) JavaServer Pages - JSP. Webbklienter. Webbserver. Hypertext Transfer Protocol (HTTP) HTTP Request



Relevanta dokument
F8 Webbteknologier 1. Dynamiska webbsidor

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Modul 6 Webbsäkerhet

Webbservrar, severskript & webbproduktion

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Tentamen Nätverksprogrammering Lösningsförslag

Webbprogrammering. Sahand Sadjadee

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

PROV. 13 JSP Standard Tag Library

Statistik från webbplatser

ASP.NET Thomas Mejtoft

F9 Webbteknologier 1. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Internationalisering/lokalisering på webben

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Tentamen Nätverksprogrammering Lösningsförslag

Statistik från webbplatser

Webbtjänster med API er

Webbsidor och webbservrar

Server-kod. TDDD80 Mobila och sociala applikationer

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

TNMK30 - Elektronisk publicering

Nätverk grunder Föreläsning 1: 1: Introduktion till Internet

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Uppgiftskravstjänsten Teknisk anslutning för att hämta uppgiftskrav som öppna data. Version 1.0

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

Webbprogrammering - 725G54 PHP. Foreläsning II

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Services + REST och OAuth

Webbtjänster med API er

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Tentamen Nätverksprogrammering Lösningsförslag

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Nätverk och Java, grunder Föreläsning 0: 0: Introduktion till Internet

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

PHP - Fortsättning. PHP och MySQL

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

DB, DATA, LOGIC, EXPOSURE (WEB)

"HTML5 och relaterade API:er"

Datakommunika,on på Internet

Servlets y JSP Fernando Berzal,

NU! NU! Bygg en webbplats NU! Bygg en webbplats. Swedish Language Edition published by Docendo Sverige AB. Bygg en webbplats.

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

DI Studio nyheter

Repetition. Hypertext. Internet HTTP. Server och klient Text försedd med länkar till andra texter. Många sammankopplade nät

Repetition. Hypertext. Internet HTTP. Server och klient Föreläsning 2. Text försedd med länkar till andra texter. Många sammankopplade nät

Exemple på Tentauppgifter Webbprogrammering

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Objektsamlingar i Java

PHP. Dynamiska webbsidor

Viktigt! Glöm inte att skriva TentamensKod (ditt anonyma student-id) på alla blad du lämnar in.

Webservice tjänsten GetPerson Slagning mot befolkningsregister

Avancerade Webbteknologier

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

F10 Webbteknologier. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

teknisk manual Direktbetalning handelsbanken.se/e-handel

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Dagens föreläsningar

IT för personligt arbete F2

PHP-presentation Dataföreningens Open Source-nätverk

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Laboration 1 XML-RPC

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Webbprogrammering grunder

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

TENTAMEN I DATAVETENSKAP

ASP.NET Web Forms. Copyright Mahmud Al Hakim Vad är Web Forms?

Webbaserade informationssystem med PHP och databaser

Grundläggande datavetenskap, 4p

Voice over IP / SIP. Switching Costs SIP. Motivation for VoIP. Internet Telephony as PBX replacement. Internet Telephony Modes.

Administration: Grundläggande internetprogrammering

Klasshierarkier - repetition

Mål med lektionen! Repetera och befästa kunskaperna.

F02 En första sida. Dagens agenda

JAVASCRIPT. Beteende

MVC med Javascript och Ajax. Filip Ekberg

Essential Php Security Författare: Shiflett, Chris Antal sidor: 124 Förlag: O'Reilly

Android översikt. TDDD80 Mobila och sociala applikationer

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

Komponenter med COM (och COM+/VC++ 7.0)

E12 "Evil is going on"

Webbaserade informationssystem med PHP och databaser

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

F8 Webbteknologier 2. PHP PHP: Hypertext Preprocessor

Hur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka

Transkript:

Uniform Resource Locator (URL) JavaServer Pages - JSP http://www.cs.umu.se:80/kurser/5dv085/ht-10/index.html Består av Protokoll (http) Adress (www.cs.umu.se) Port (80) Sökväg (/kurser/5dv085/ht-11/index.html) Webbklienter Efterfrågar resurser via HTTP Tolkar och presenterar datat den mottar Kan vara vad som helst som efterfrågar data via HTTP Vanligtvis en webbläsare Använder URLer för att referera till resurser Webbserver Tillhandahåller resurser via HTTP Kan vara vad som helst som levererar data via HTTP Vanligtvis en dedikerad servermjukvara Kan bestå av ett antal mjukvarukomponenter som jobbar tillsammans En server kan sköta om flera webbsajter (och vice versa) Stora websajter hanteras ofta av flera webbservrar för att förbättra prestandan Hypertext Transfer Protocol (HTTP) Text-baserat Applikationprotokoll (används mest över TCP) Klient-drivet HTTP Request Request rad (metod + URI + protokoll) Headers (information kring förfrågan) Body (valfri) Klienten frågar servern om något och får ett svar Tillståndslöst (Tillståndsinformation (sessions) kan lagras i cookies eller omskrivna URLer) Kan hantera både text och binärt data (kodat som text)

HTTP GET Request Exampel GET /kurser/5dv085/ht-08/test.html HTTP/1.1 Host: www.cs.umu.se HTTP Response Exempel HTTP/1.1 200 OK Date: Tue, 15 May 2007 14:25:27 GMT Server: Apache/2.0.54 (Unix) Accept-Ranges: bytes Content-Length: 50 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 <html> <head> </head> <body> test </body> </html> HTTP Request Methods Web Applikationer HEAD - simulate a get request GET - retrieve resource POST - submit data to resource PUT - upload resource... Program med ett webbgränssnitt Bra för tunna klienter Lider av begränsningar i webbmediat Kombinerar vanligtvis olika tekniker (e.g., JSP + AJAX) Flera frameworks finns Vanligtvis sessions-orienterade Paketeras ofta i WAR-filer Web Archives (WAR) ZIP-file = compressed archive JAR-file = Java Archive (ZIP file with a manifest) WAR-file = JAR-file with web application information Sessions Används för att lagra data för en serie av HTTP förfrågningar Tex. kundvagn i en ebutik, användar inställningar, historik En identifierare för sessionen skickas med vid varje förfrågan Sessionsidentifieraren används för att hitta sessionen Data lagras i sessions contexten

Tre Lagers Arkitektur Två Lagers Arkitektur 1. Gränssnitt - websidor 2. Logik - mjukvarokomponenter (JavaBeans, EJB) 3. Data - databaser Tydlig uppdelning av ansvar Skalbart Stödjer roll-baserad utveckling Passar bra för stora webbsidor och integration med affärslogik 1. Användargränssnitt (+ Logik) 2. Data + Logik Kräver färre mjukvarukomponenter Kortare utvecklingscykler för mindre utvecklarteam Passar bättre för mindre web-platser JSP 1. En JSP-sida efterfrågas 2. Servern kollar om en Java Servlet existerar för sidan 3. Om ingen Servlet hittas (eller om den hittar en nyare JSPsidan hittas),översätts JSP-sidan till Java (en Servletklass skapas) 4. Java Servleten kompileras Java Servlets Java klasser Implementerar Java Servlet API gränssnittet (fanns innan JSP) Tar emot en förfrågan och genererar ett svar Kan skrivas manuellt Måste vara trådsäkra Genereras vanligtvis automatiskt från JSP Hanteras av en Servlet container 5. Java Servletens service-metod anropas och hanterar förfrågan Java Servlets Web Server Servlet Container Servlet Livscykeln för en Servlet 1. init() - anropas då servleten skapas 2. service() - anropas för varje förfrågan 3. destroy() - anropas då containern stängs

Servlets service()-metod Del av ett service-designmönster Ska inte omdefinieras Ärv istället från basklassen och implementera handlermetoder Separata hanterare för de olika HTTP metoderna (som tex doget()) 1.service() parsar förfrågan och avgör vilken typ av HTTP förfrågan som använts 2.service() anropar en handler-metod för den typen av förfrågan 3.Handler-metoden hanterar förfrågan. JavaServer Pages (JSP) HTML med extra XML-taggar (Scripted server-side) Java för webben Ett sätt att tillhandahålla dynamiskt innehåll på webbsidor XML-taggar fungerar som front-ends för Java-klasser Kan inkludera andra sidor dynamiskt JSPs kompileras till Java Servlets JSP-koden är inte synlig för klienten Genererar HTML dynamiskt Model-View-Controller designmönster rekommenderas JSP Syntax En JSP kan innehålla Statisk HTML-kod Directives Scripting Elements Actions Kommentarer Tag Libraries JSP Script Tags Directives <%@... %> Declarations <%!... %> Scriptlets <%... %> Expressions <%=... %> Comments <%--... --%> Statisk HTML All HTML hanteras av JSP som statisk text HTML kan blandas med JSP kod hur man vill Alla icke-jsp taggar tolkas som HTML Directives <%@... %> Types of JSP directives Page Include Tag Libraries (aka Custom Tags)

Page Directives <%@ page attribute="..." %> Instructs the JSP engine how to process the JSP Attributes determine directive content Page Directive Attributes language - selects scripting language (Java) extends - base class for generated Servlet import - Java class / package import session - enable session tracking (default: true) buffer - set output buffer size autoflush - enable auto flushing of output buffer isthreadsafe - thread safe marker info - page information (author, version, copyright etc) errorpage - set default error page iserrorpage - enable exception tracking on page contenttype - set response mime type Include Directive <%@ include file="page.jsp" %> inkluderar en annan sida vid kompileringen Den inkluderade sidan blir en del av servleten Tag Libraries <%@ taglib uri="taglib.tld" prefix="prefix" %> Loads a tag library Tags are usable via the specified tag prefix The JSP version of language extension Directive Examples <%@ page import="examples.*, examples.tags.*" %> <%@ taglib uri="/web-inf/examples-taglib.tld" prefix="examples" %> <%@ include file="/includes/head.jsp" %>... <examples:validateparameters parameters="name,age"/>... <%@ include file="/includes/foot.jsp" %> Scripting Elements Declarations <%!... %> Scriptlets <%... %> Expressions <%=... %>

Declarations Scriplets Innehållet hamnar i kroppen på servleten Används för att deklarera attribut och metoder Kanan sedan användas i Scriptlets eller expressions <%! public int getsum (int x, int y) { return x + y; } %> <jsp:declaration> public int getsum (int x, int y) { return x + y; } </jsp:declaration> Innehållet hamnar i servletens _jspservice()-metod Används för att bädda in Java-kod direkt i sidan. Kan producera html-utdata (via out.println()) <% int x = 1; int y = 2; int sum = x + y; %> <jsp:scriptlet> int x = 1; int y = 2; int sum = x + y; </jsp:scriptlet> Expressions Resultatet av uttrycket skrivs ut till HTML Används som ett alias för out.println()-satser Kode mmåste innehålla ett uttryck (eg tex inga semikolon på slutet av raden) Actions include - include another page forward - forward request to another resource param - specify parameters when calling or forwarding... 1 + 2 = <%= 1 + 2 %> 1 + 2 = <jsp:expression> 1 + 2 </jsp:expression> Include Action <jsp:include page="page.jsp"/> Inkluderar en annan sida vid en förfrågan Ignoreras om sidan inte hittas Används vanligtvis för att anropa deklarerade metoder Kontrollen återgår till sidan med anropet. Forward Action <jsp:forward page="page.jsp"/> Skickar vidare förfrågan till en annan sida Kontrollen återgår inte till den anropande sidan Med parameter: <jsp:forward page="page.jsp"> <jsp:param name="name" value="value"/> </jsp:forward>

Kommentarer <!-- HTML comment --> Med i svaret från servern Synlig i webbläsaren om man väljer att visa html-koden <%-- JSP comment --%> Inte del i svaret från servern Inte synlig i webbläsaren om man väljer att visa htmlkoden Tag Libraries Java klasser Implementerar JSP Tag Extension API interfacen Användbara som JSP taggar Java klass kopplad till en tag via XML Supports rollbaserad webutveckling (en programmerare kan skriva koden och en webbutvecklare behöver sedan bara använda tagarna) Objekt Ett antal objekt finns tillgängliga i alla JSP-sidor request Representerar HTTP förfrågan Innehåller all info från förfrågan Tillhandahåller ett API för att undersöka data från förfrågan Ger ett uniformt sätt att läsa datat oavsett metod response HTTP svaret out Ström för att skriva ut till svaret session lagrar sessionsinformationen... Läsa Parametrar request.getparameter("name") request.getparametervalues("name") request.getparameternames() request.getparametermap() Kolla alltid för null Returneras om parametern ej fanns med i requesten Tillhandahåll defaultvärden (om lämpligt) Cookies HTTP anslutningar kan stängas när som helst Vi behöver ett sätt att identifiera förfrågningar från samma klient Cookies är små textfragment som skicka i headers Cookies lagras på klientens filsystem och används för att identifiera besökare till sajten Webbläsare & Cookies Max storlek: 4096 bytes Max antal per sajt: 20 Max 300 cookies totalt Går att stänga av lagring av Cookies i webbläsare Cookies kan tas bort från klienten Cookies kan förändras Lagra inte känsligt data i cookies Använd cookies, men var inte beroende av dem

Sessions Data lagrade på webbservern och delad mellan förfrågningar från samma användare Kan lagra vad som helst Kan tex serialiceras till databaser eller vara mer kortlivade Vi behöver ett sätt att identifiera sessionen vid nya förfrågningar Cookies URL omskrivningar Dolda formulär fält JSP-sessions API:t döljer hur sessions identifikationen sker