H.p protokol, request response

Podobné dokumenty
Java technologie pro webové aplikace

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition vývoj webových aplikací

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

X33EJA Enterprise Java

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

X36WWW. Technologie aplikačních serverů. Miroslav Bureš,, Martin Klíma. X36WWW: 12. přednáška 1

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

WWW technologie. HTTP protokol

Nainstalujte zvolený server s podporou servletů a JSP, např. Jakarta/Tomcat nebo JBOSS.

Java Server-side. Štěpán Kuchař. VŠB-TUO FEI Katedra informatiky

Semináˇr Java XI Servlety, JSP Semináˇr Java XI p.1/38

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

Tvorba informačních systémů

BI-AWD. Administrace Webového a Databázového serveru Úvod do problematiky HTTP serveru

Tvorba informačních systémů

Tvorba informačních systémů

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

HTTP: Hyper Text Transfer Protocol

Čipové karty Lekařská informatika

Tvorba informačních systémů

API pro volání služby kurzovního lístku KB

Principy fungování WWW serverů a browserů. Internetové publikování

<Insert Picture Here> Vývoj portálových řešení v Javě

Web Services na SOAP

KIV/PIA 2013 Jan Tichava

Tvorba informačních systémů

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Služba World Wide Web

Administrace Unixu a sítí

JAVA. Webové aplikace Servlety, JSP

HTTP protokol. Zpracoval : Petr Novotný

Základy programování v jazyce JAVA

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Testování webových aplikací Seznam.cz

Protokol HTTP. Ondřej Dolejš

Koláčky, sezení. Martin Klíma

RMI Remote Method Invocation

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

České vysoké učení technické v Praze. Fakulta elektrotechnická. Katedra řídící techniky. Internetové rozhraní do Matlabu.

Webové služby. Martin Sochor

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

Diagnostika webových aplikací v Azure

(Enterprise) JavaBeans. Lekce 7

Zranitelnosti webových aplikací. Vlastimil Pečínka, Seznam.cz Roman Kümmel, Soom.cz

KIV/PIA Semestrální práce

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Hitparáda webhackingu nestárnoucí hity. Roman Kümmel

Tvorba informačních systémů

Komunikace systémů pomocí Hradec Králové

Instalace a konfigurace web serveru. WA1 Martin Klíma

Distribuované systémy a výpočty

RESTful API TAMZ 1. Cvičení 11

Tvorba informačních systémů

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

MQTT

Michal Krátký, Miroslav Beneš

Rodina protokolů TCP/IP, verze 2.3. Část 10: World Wide Web

Server-side technologie pro webové aplikace

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Webové Aplikace (6. přednáška)

1 Cvičení č. 4 Nespojovaná spolupráce

Zabezpečení platformy SOA. Michal Opatřil Corinex Group

Úvod do Web Services

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

JSON API pro zjišťování cen MtG karet

Od CGI k FastCGI. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

The Lightweight Directory Access Protocol version 3 (LDAPv3) is specified by this set of eleven RFCs:

Webová prezentační aplikace

C6 Bezpečnost dat v Internetu. 2. HTTP komunikace 3. HTTPS komunikace 4. Statistiky

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

2N Helios IP HTTP API

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

}w!"#$%&'()+,-./012345<ya

Technologie Java. Jaroslav Žáček

Systémová administrace portálu Liferay

v. 2425a Jak si na PC vypěstovat HTTP (WWW, Web) server a jak ho používat (snadno a rychle) by: Ing. Jan Steringa

Úvod Úrovňová architektura sítě Prvky síťové architektury Historie Příklady

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Návrhové vzory pro J2EE. Miroslav Beneš

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Content Security Policy

Použití PostgreSQL v. P2D Martin Swiech

Vladimír

Návrhové vzory pro J2EE

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Java Cvičení 05. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Informační systémy 2008/2009. Radim Farana. Obsah. Aktivní serverové stránky ASP. Active Server Pages. Activex Data Objects. LDAP database.

Obsah&/&Content& Všeobecné)podmínky)(v)češtině)) Terms)and)Conditions)(in)english)) )

Transkript:

Servlety

Kontext

Kontext

H.p protokol, request response $ telnet screwdriver 80 GET/HTTP/1.0 request! HTTP/1.1 200 OK Date: Tue, 29 Sep 2009 21:09:43 GMT Server: Apache/2.2.13 (Debian) Content-Length: 863 Content-Type: text/html <HTML> <HEAD> <TITLE>Short Index of...!

Snadné monitorování h.p protokolu web- sniffer.net

www.google.com HTTP Request Header Connect to 173.194.113.50 on port 80... ok GET / HTTP/1.1[CRLF] Host: www.google.com[crlf] Connection: close[crlf] User-Agent: Web-sniffer/1.1.0 (+http://websniffer.net/)[crlf] Accept-Encoding: gzip[crlf] Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF] Cache-Control: no-cache[crlf] Accept-Language: de,en;q=0.7,en-us;q=0.3[crlf] Referer: http://web-sniffer.net/[crlf] [CRLF]

www.google.com

www.google.com Content (0.25 KiB) <HTML> <HEAD> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE> </HEAD> <BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.de/? gfe_rd=cr&ei=ilsrvmqujaui8qfm74c4cw"> here </A>. </BODY> </HTML>!

HTTP protocol methods OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT $ telnet screwdriver 80 GET/HTTP/1.0!

GET parameters embedded in the URL GET requests can be cached GET requests remain in the browser history GET requests can be bookmarked GET requests should never be used when dealing with sensiqve data GET requests have length restricqons GET requests should be used only to retrieve data /test/demo_form.asp?name1=value1&name2=value2

POST Query strings (name/value pairs) sent in the message body: POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1=value1&name2=value2 POST requests are never cached POST requests do not remain in the browser history POST requests cannot be bookmarked POST requests have no restricqons on data length

Servlet Servlet container servlet 1 GET request Response doget() dopost() servlet n

Servlet proces Javy je stále spuštěny, takže se ušetří spouštění thread pool pro zpracování požadavků sdílení prostředků (paměť) automaqcké sledování session pomocí jsessionid v cookies přístup ke všem knihovnám Javy debugování (buď běží server přímo v debug režimu nebo vzdáleně) - POZOR: servlet je sdílen mezi více požadavky!

Servlet container Co pro nás dělá kontejner? spojení TCP/IP zpracování HTTP protokolu zpracování parametrů (url) správa zdrojů (thread pooly) Knihovny obecny servlet javax.servlet.* HTTP servlet javax.servlet.h.p.*

FirstServlet public class FirstServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html><body>"); out.println("<h1>hello World!</h1>"); out.println("</body></html>"); out.close(); } }

Jak se liší doget() a dopost()?

Jak se liší doget() a dopost()? Často: public class AServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) { processrequest(request, response); } }! public void dopost(httpservletrequest request, HttpServletResponse response) { processrequest(request, response); } public void processrequest(httpservletrequest request, HttpServletResponse response) { processrequest(request, response); }

web.xml servlet, servlet- mapping <servlet> <servlet-name>firstservlet</servlet-name> <servletclass>cz.cvut.fel.wpa.firstservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>firstservlet</servlet-name> <url-pattern>/firstservlet</url-pattern> </servlet-mapping>

web.xml servlet parameters I <servlet> <servlet-name>firstservlet</servlet-name> <servletclass>cz.cvut.fel.wpa.firstservlet</servlet-class> <init-param> <param-name>branding</param-name> <param-value>cvut FEL</param-value> </init-param> </servlet>!

web.xml servlet parameters II java.lang.object javax.servlet.genericservlet javax.servlet.http.httpservlet HttpServlet implements public java.lang.string getinitparameter(java.lang.string name) Returns a String containing the value of the named initialization parameter, or null if the parameter does not exist.

Struktura webové aplikace WEB- INF web.xml konfigurace libs knihovny classes třídy (model, servlety, filtry,...) všechny soubory jsou nepřístupné přes HTTP další soubory jsou přístupné typicky se tato struktura zabalí do ZIPu a pojmenuje se WAR (Web ARchive) upload do kontejneru se jmenuje deployment pro servlety stačí upload a inicializace kontejnerem

Lifecycle na začátku se zavolá init()! při každém požadavku se zavolá service(req, res)! při úklidu se zavolá destroy()! tyto metody nemají být volány uživatelem one instance per servlet definiqon

Kontext Možnost ukládat data mezi requesty: applicaqon: getservletcontext() session: request.getsession() request page (JSP) Příklad! String id = request.getparameter( id ); User login = (User) request.getsession().getattribute("user");

Client Session State Pokud je server zcela bezestavový (stateless), musí se stav sešny přenášet mezi klientem a serverem může jít o velký objem dat Pro tenkého webového klienta 3 možnosq Parametry v URL negaqva: (i) omezená délka URL, (ii) parametry zobrazeny v URL stránky, (iii) problémy s bookmarkováním stránky Skrytá vstupní pole (hidden fields) skryta ve smyslu, že nejsou na stránce zobrazena Cookies problémy: (i) uživatel může cookies zakázat, (ii) cookies organizovány po doménách co když více aplikací v doméně

HTTP cookies GET/index.html HTTP/1.0 Host: www.example.org request!

HTTP cookies GET/index.html HTTP/1.0 Host: www.example.org request!! HTTP/1.0 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT...

HTTP cookies GET/index.html HTTP/1.0 Host: www.example.org request!! HTTP/1.0 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT... request! GET /spec.html HTTP/1.1 Host: www.example.org Cookie: name=value; name2=value2 Accept: */*

Client Session State Udržování stavu na klientovi může být výhodou při clusteringu, failover Obsahuje- li stav citlivá data, měl by být šifrován => režie Server by měl příchozí data revalidovat, aby nebyla poškozena jejich konzistence Stav na klientovi v minimální variantě obsahuje sessionid odkazující na session, která drží stav na serveru Session steeling uživatel modifikuje sessionid tak, aby získal session někoho jiného

Server Session State Stav sešny typicky reprezentován Binárně (BLOB Binary Large OBject) problém s verzováním Textově (typicky XML) Udržován Lokálně v paměq aplikačního serveru HashMap, jejímž klíčem je sessionid Ve filesystému aplikačního serveru V lokální DB aplikačního serveru Problém v případě clusteru aplikačních serverů, při failover/switchover Ve sdílené databázi Stav uložen nestrukturovaně (např. jako BLOB) v opačném případě viz Database Session State Umožňuje clusterování, failover/switchover Musí se řešit zapomínání stavu ukončených a vyprchaných sessions

Database Session State Speciální případ předchozího server session state stav uložen jako strukturovaná data Dva případy V ostrých tabulkách Přidat sloupec SessionID, if null => ostrá data, if not null => pracovní data rozpracované sešny Rozpracovaná (pending) data nemusí být konzistentní => nemusí být na ně aplikovatelná integritní omezení V pending tabulkách Mazat data nedokončených (abandoned) a přerušených (cancelled) sessions

Získání informací o spojení klient request.getremoteaddr() request.getremotehost() server request.getservername() request.getserverport() request.getcontextpath() PROČ to potřebujeme vědět??? issecure, isuserinrole, getauthtype, getcookies, getheadernames...

Filtry Umožňují vstoupit mezi klienta a servlet a změnit data Komprese, kódování obrázků,... Pozměňování výstupu servletu (kódování, logo,...) Bezpečnost (odmítnu} přístupu) Integrace web aplikací (SSO)... Filtry se za sebe řetězí v tom pořadí, jak jsou definovány ve web.xml.

public interface Filter Filters Method Summary void destroy() void dofilter(servletrequest request, ServletResponse response, FilterChain chain) void init(filterconfig filterconfig) Filters perform filtering in the dofilter method. Every Filter has access to a FilterConfig object from which it can obtain its initialization parameters, and a reference to the ServletContext which it can use, for example, to load resources needed for filtering tasks.

Filters Examples that have been identified for this design are: 1. Authentication Filters 2. Logging and Auditing Filters 3. Image conversion Filters 4. Data compression Filters 5. Encryption Filters 6. Tokenizing Filters 7. Filters that trigger resource access events 8. XSL/T filters 9. Mime-type chain Filter

Příklad filtru public void dofilter(servletrequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {... chain.dofilter(wrappedrequest, wrappedresponse);... }

Konfigurace filtru ve web.xml <filter> <filter-name>f1</filter-name> <filter-class>cz.cvut.fel.filters.f1</filter-class> </filter> <filter-mapping> <filter-name>f1</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

Error page configuraqon in web.xml <error-page> <exception-type> exception.booknotfoundexception </exception-type> <location>/errorpage1.html</location> </error-page>

Servlet 3.0 annotaqons konfigurace ne nutně pomocí web.xml @WebServlet(name="CalculatorServlet", urlpatterns={"/calc","/getval"}) public class CalculatorServlet extends HttpServlet{ public void doget(httpservletrequest req, HttpServletResponse res) {... }... }