Java technológiák - 2. eloadásmanyi/teaching/java/eloadas2.pdf2. eload˝ as´ ANTAL Margit...

36
Java technol ´ ogi ´ ak - 2. el˝ oad ´ as ANTAL Margit Megjelen´ ıt´ esi komponensek tervez ´ ese A HTTP protokoll le´ ır´ asa Webkont ´ enerek ´ es szervletek Egyszer ˝ u HTTP szervlet k ´ esz´ ıt´ ese ´ es telep´ ıt´ ese Java technol ´ ogi ´ ak - 2. el˝ oad ´ as ANTAL Margit Sapientia - EMTE 2010

Transcript of Java technológiák - 2. eloadásmanyi/teaching/java/eloadas2.pdf2. eload˝ as´ ANTAL Margit...

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Java technológiák - 2. előadás

    ANTAL Margit

    Sapientia - EMTE

    2010

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    A 2. előadás célja

    I Megjelenı́tési komponensek tervezéseI A HTTP protokoll leı́rásaI A Webkonténerek viselkedéseI Egyszerű HTTP szervlet készı́tése és telepı́tése

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Megjelenı́tés komponenstı́pusok

    I Adatok megjelenı́tése: grafikonok, táblázatokI ŰrlapokI Navigációs elemek: menük, hiperlinkekI Informácios képernyők: útbaigazı́tások, segı́tség,

    hibaüzenetek, dialógusdobozok

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Esettanulmány - On-line tanfolyamok

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Az analı́zis modell komponensei

    Boundary-Service-Entity

    EGYED

    SZOLGÁLTATÁS

    HATÁR BOUNDARY

    SERVICE

    ENTITY

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Az analı́zis modell komponensei (2)

    Határ analı́zis kompenensek

    I View - Megjelenı́tésiI Controller - Vezérlési

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Megjelenı́tési komponensek

    View components

    I Adat-megjelenı́tési komponensek: grafikonok,táblázatok...

    I Adatbeviteli űrlapokI Navigációs elemek: menük, hiperlinkek,...I Információs képernyők: utası́tások, segı́tség

    képernyők...

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Az első webalkalamazás szerkezete

    __||___index.html||___list-courses.html

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    list-courses.html

    Osszes tanfolyam

    Osszes tanfolyam

    J2SEJ2EEC++

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    index.html

    On line tanfolyamok

    HALLGATO

    Osszes tanfolyamRegisztracio

    ADMINISZTRACIO

    Uj tanfolyam felvitele

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HTTP kliens-szerver architektúra

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HTTP metódusok

    restclient.jar!!!HTTP metódus Leı́rásOPTIONS A szerver által támogatott

    metódusok lekérdezése.GET Statikus erőforrás kérés az

    URL definiálásával.HEAD Ugyanaz mint a GET, de csak a fejlécét

    kéri lePOST Hasonló a GET-hez, kivéve az

    üzenet testet.Jellemzően kulcs-értékpárokat tartalmaz

    PUT Fájlok feltöltése egy megadottURL-re a szerveren

    DELETE URL-el megadott erőforrástörlése a szerveren

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HTTP GET metódus

    I Minden egyes hiperlinkre való kattintáskor eztörténik.

    I Minden egyes média tı́pusú fájlra is hasonló kéréstküld a böngésző

    I HTTP kérés:

    I HTTP kérésre példa:GET /list-courses.html HTTP/1.0

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HTTP kérés fejléc elemek

    I Accept - A kliens (ügyfél) által elfogadhatómédiatı́pusokat(MIME) adja megAccept: image/gif, image/jpeg, text

    I Accept-Language - Az ügyfél által elfogadott nyelvekfontossági sorrendben

    I Host - A szerver nevét és a portszámot tartalmazzaI Referer - Annak az oldalnak a webcı́mét tartalmazza,

    ahonnan a kérés jöttI User-Agent - Információ a kliensszoftverről

    (böngésző, nyelv, op. rendszer)

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HTTP válasz

    A válasz szerkezete:1. Státusz sor2. Fejléc sorok3. Üres sor4. Üzenet blokkja

    HTTP/1.0 200 OKContent-Type: text/htmlDate: Tue, 10 Apr. 2001 10:00:03 GMTServer: Apache Tomcat/4.0-bl

    ...

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HTTP válasz fejléc

    I Content-Type: MIME tı́pusI Content-Length: A válasz hossza (bájtban)I Server: A kiszolgáló tı́pusa

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Webkonténerek architektúrája

    Felhasználóimunkaállomás

    Böngészo

    HTTP kérés

    HTTP válasz

    Adatbázis

    Web szerver

    Web konténer

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Szervletek

    I A szervlet egy Java osztály, melynek feladata egykérés kiszolgálása

    I A szervlet impementálja a Servlet interfésztI A szervlet életciklusát az a webkonténer kezeli,

    amelybe telepı́tve volt az illető szerver

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    A szervlet életciklusa

    Ha egy kérés érkezik a szervlethez:

    I Ha a szervletnek még nem létezik példánya, akkor awebkonténer: betölti az osztályt, példányosı́tja majdinicializálja (init metódus hı́vása)

    I Meghı́vja a service metódusátI Ha a konténernek el kell távolı́tania a szervletet,

    meghı́vja a destroy metódusát

    FONTOS!!!Az init és a destroy csak egyszer hı́vódik megA service annyiszor hı́vódik ahány kérés érkezik az adottszervlethez

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    A service metódus

    A service metódus1. Két paramétere van: egy kérés és egy válaszobjektum, amelyeket a webkonténer hoz létre2. A kérés HttpServletRequest tı́pusú3. A válasz HttpServletResponse tı́pusú

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HttpServlet API

    ServletRequest

    HttpServletRequest

    getHeader(name)

    getHeaders(name)

    getHeaderNames():Enum

    getIntHeader(name)

    getDateHeader(name)

    ServletResponse

    getWriter()

    getOutputStream()

    setContentType(MIME)

    setContentLength(int)

    setHeader()

    setDateHeader

    setIntHeader

    HttpServlet{abstract}

    service()

    doGet()

    doPost()

    doGet()

    Servlet

    HttpServletResponse

    ListClassesServlet

    service(req, resp)

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HttpServlet metódusok

    HTTP metódus HttpServlet metódusOPTIONS doOptions()GET doGet()HEAD doHead()POST doPost()PUT doPut()DELETE doDelete()TRACE doTrace()CONNECT doConnect()

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HttpServletRequest metódusok

    I getHeaderNames(): az összes név lekéréseI getHeader(): valamely névhez rendelt érték

    lekéréseI getIntHeader(): a névnek megfelelő érték

    átalakı́tása egész tı́pusúváI getDateHeader(): a névnek megfelelő érték

    átalakı́tása dátum tı́pusúvá

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Példa

    boolean xhtml= false;String user=

    request.getHeader("User-Agent");if( user.startsWith("Mozilla/5.0"))xhtml = true;

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    HttpServletResponse metódusok

    I setHeader()

    I setIntHeader()

    I setDateHeader()

    I getOuputStream(): bináris tartalom ı́rásaI getWriter(): szöveges tartalom ı́rása, pl. HTML

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Példa

    response.setContentType("text/html");response.setHeader

    ("Cache-Control","no-cache");

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Egyszerű HTTP szervlet készı́tése

    I Elkészı́tjük a Course osztálytI Elkészı́tjük a ListCoursesServlet osztályt

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Model: Course.java I

    package distedu.model;public class Course{private String name;private String description;private double price;public Course(){}public Course( String name,

    String description,double price){

    ...}//get es set metodusok//minden attributumrapublic String toString(){ ... }

    }

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    View: ListCoursesServlet.java I

    package distedu.view;

    import java.io.*;import java.net.*;import java.util.*;

    import javax.servlet.*;import javax.servlet.http.*;

    public class ListCoursesServlet extendsHttpServlet {

    private List courseList=null;private String[] courseNames = {...};private double[] coursePrices = {...};

    protected void doGet(

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    View: ListCoursesServlet.java IIHttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {courseList = new LinkedList();

    //courseList feltolteseString pageTitle="Distance Courses";response.setContentType("text/html");PrintWriter out=response.getWriter();

    //HTML valaszout.println("");out.println("");out.println(""+

    pageTitle+"");out.println("");out.println("");

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    View: ListCoursesServlet.java III

    //Tablazat tartalmaout.println("");Iterator items=courseList.iterator();while( items.hasNext()){

    out.println(" "+ items.next()+ "");

    }out.println("");out.println("");out.println("");

    }...

    }

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Szervlet definı́ció: web.xmlI Szervlet definı́ció

    ListCoursesServlet

    distedu.view.ListCoursesServlet

    I Szervlet leképzés (mapping)

    ListCoursesServlet

    /list-courses.view

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    WAR (Web ARchive) fájlok

    I Helyettesı́ti a kézi telepı́téstI Egy JAR fájl, amely egy web alkalmazás struktúráját

    tartalmazzaI WAR létrehozása: jar cvf distedu.wardistedu

    I WAR kicsomagolása: jar xvf distedu.war

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Szervlet aktiválása (1) I

    I Felhasználó-böngésző:http://localhost:8080/distedu/

    I Webkonténer:index.html fájl

    Distance Courses

    List all courses

    Register for a course

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Szervlet aktiválása (2)

    Kiválasztva a ”List all courses” listapontot aktiválódik aszervlet: http://localhost:8080/distedu/list-courses.view

    ListCourses

    View Model

    Course

    Web szerver

    Web konténer

  • Javatechnológiák -

    2. előadás

    ANTAL Margit

    Megjelenı́tésikomponensektervezése

    A HTTP protokollleı́rása

    Webkonténerekés szervletek

    Egyszerű HTTPszervlet készı́téseés telepı́tése

    Összefoglalás

    I A megjelenı́tési komponensek statikus tartalmatjelenı́thetnek meg, illetve űrlap megjelenı́tésére ishasználhatók

    I A HTTP protokoll biztosı́tja a megjelenı́tés lekérésétI A webkonténer fogadja a HTTP kérést és aktiválja a

    megfelelő szervletetI A szervelet a doGet() metódus végrehajtásával

    válaszol a kérésreI A kérésben található adatokat a webkonténer által

    biztosı́tott request objektumtól lehet lekérniI A megjelenı́tést úgy állı́tjuk elő, hogy a response

    objektumból kinyert kimeneti adatfolyamba adatokatı́runk

    Megjelenítési komponensek tervezéseA HTTP protokoll leírásaWebkonténerek és szervletekEgyszeru HTTP szervlet készítése és telepítése