Java technológiák - 2. eloadásmanyi/teaching/java/eloadas2.pdf2. eload˝ as´ ANTAL Margit...
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