Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaIstván Somogyi Megváltozta több, mint 10 éve
1
1 Fejlett Programozási Technikák 2. 15/10
2
Fejlett Programozási Technológiák 2. 2 Az előző előadás tartalma Java Servlet Servlet Interfész Servlet Context Request Response Filter Session Web Application
3
Fejlett Programozási Technológiák 2. 3 Irodalom http://www.apl.jhu.edu/~hall/java/Servlet- Tutorial/ http://www.apl.jhu.edu/~hall/java/Servlet- Tutorial/ http://java.sun.com/j2ee/1.4/docs/tutorial/doc/J 2EETutorial.pdf http://java.sun.com/j2ee/1.4/docs/tutorial/doc/J 2EETutorial.pdf Hans Bergsten: Java Server Pages http://web.princeton.edu/sites/isapps/jasig/200 4summerWestminster/Presentations/java%20s erver%20faces.pdf http://web.princeton.edu/sites/isapps/jasig/200 4summerWestminster/Presentations/java%20s erver%20faces.pdf
4
Fejlett Programozási Technológiák 2. 4 A mai előadás tartalma Probléma a Java Servlettel Template eszközök Java Server Pages Áttekintés Elemei Életciklusa Objektumok Java Beanek használata Java Standard Tag Library Custom Tag Library Java Server Faces Feladata Elemei Navigáció Támogató Bean
5
Fejlett Programozási Technológiák 2. 5 Probléma a Java Servlet-tel MVC ? Println(” ”) Nem különülnek el a feladatok HTML tervező Felhasználói interfész logika fejlesztő Üzleti logika fejlesztő Komponens fejlesztő Alkalmazás tervező A fejlesztő hozzáfér a teljes Servlet API-hoz (html programoz is !) Nehézkes RAD eszözöket vagy WYSIWYG eszközöket alkalmazni
6
Fejlett Programozási Technológiák 2. 6 Megoldások Template engine-k használata Magasabb szintű funkciók Bővíthető építőelem készlet Népszerűbb template motorok-k: JSP Velocity FreeMarker … Ezekre épülő keretrendszerek: Java Server Faces Struts Turbine
7
Fejlett Programozási Technológiák 2. 7 JSP 1.0 Hello <% if (request.getParameter("name") == null) { out.println("Hello World"); } else { out.println("Hello, " + request.getParameter("name")); } %>
8
Fejlett Programozási Technológiák 2. 8 Velocity Hello #if ($request.getParameter("name") == null) Hello World #else Hello, $request.getParameter("name") #end
9
Fejlett Programozási Technológiák 2. 9 A JSP áttekintése Bármilyen XML oldalon lehet XML szintakszis Elvileg megvalósíthatja az MVC-t vagy Model 2-architektúrát Model: Java Bean View: JSP Controler: Servlet Azonban tipikusan Model 1 architekúra Az üzleti logika és a megjelenítés nincs szeparálva
10
Fejlett Programozási Technológiák 2. 10 Elemei Oldal direktíva Akció elem direktíva http://java.sun.com/jsp/jstl/core Akció elemek JSP elemek (Expression Language) Szkript elemek
11
Fejlett Programozási Technológiák 2. 11 Példa Minta fájl
12
Fejlett Programozási Technológiák 2. 12 A JSP oldal életciklusa Konvertálás Servletté Fordítás Futtatás Bufferelés
13
Fejlett Programozási Technológiák 2. 13 Objektumok Implicit A tároló hozza létre őket Request, … Alkalmazás specifikus Tipikusan Java Bean-ben tárolódnak Megosztott objektumok Szálak között (I/N) Kötődhetnek: Laphoz – pageContext Alkalmazáshoz - servletContext Viszonyhoz – session Kéréshez – request Válaszhoz – response
14
Fejlett Programozási Technológiák 2. 14 Java Bean-nek használata ${bookDB.bookDetails.title}
15
Fejlett Programozási Technológiák 2. 15 Java Server Pages Standard Tag Library Standard, gyakran használt elemek összegyűjtve Típusai Alap (c) Változó támogatás Folyam vezérlés URL manipulálás Egyéb XML (x) Alap Folyam vezérlés Transzformáció I18n (fmt) Lokalitás Üzenet formázás Szám, dátum formázás Adatbázis (sql) SQL Egyébb (fn) Gyűjtemény hossz String manipulálás
16
Fejlett Programozási Technológiák 2. 16 Példák Core... ${item.quantity}... URL <x:parse doc="${xml}" var="booklist" scope="application" /> SQL select * from PUBLIC.books where id = ?
17
Fejlett Programozási Technológiák 2. 17 Saját Elem Könyvtár Újrahasznosítható komponensek Felhasználó által definiált JSP komponens Könyvtárakba gyűjtik a hasonló funkciókat, egy-egy funkciót megvalósító kód az elem kezelő (Tag Handler) Logika/Megjelenítés elkülönül Lehetőségek: Paraméterek átadása Értékek visszaadása Minden objektumot elér a JSP oldalon Kommunikálhatnak egymással Egymásba ágyazhatóak Két típus: Egyszerű (Nem lehet benne szkript elem) Klasszikus Tag fájl JSP vagy Java kód, a tároló fordítja le
18
Fejlett Programozási Technológiák 2. 18 Attribútumok Elem attribútumok: Egyszerű Darab (Fragment) egy JSP kód darabot kap attribútumként Dinamikus Nincs specifikálva, menet közben derül ki
19
Fejlett Programozási Technológiák 2. 19 Törzs (Body) Egy elem más elemeket és HTML tartalmat is tartalmazhat You just cleared your shopping cart! jsp:body
20
Fejlett Programozási Technológiák 2. 20 Elemek közötti kommunikáció Megosztott objektumok segítségével kommunikálnak (oldal környezet) Az egymásba ágyazott elemek a privát változókat is használhatják
21
Fejlett Programozási Technológiák 2. 21 Példa Tag fájl JSP kódot tartalmaz (WEB-INF/tags, WEB-INF/lib) ${greeting}, ${name}! Használata: Hello
22
Fejlett Programozási Technológiák 2. 22 Tag Library Descriptor Amennyiben Java-ban írjuk meg az elemkészletünket akkor szükséges Információt tartalmaz az elem gyűjteményről és az elemekről is present condpkg.IfSimpleTag scriptless... test true...
23
Fejlett Programozási Technológiák 2. 23 Java Tag SimpleTag, interfészt kell megvalósítani doTag get/set javax.servlet.jsp.JspContext getJspBody() … public HelloWorldSimpleTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { getJspContext().getOut().write("Hello, world."); } public class SimpleWriter extends SimpleTagSupport { public void doTag() throws JspException, IOException { StringWriter sw = new StringWriter(); jspBody.invoke(sw); jspContext(). getOut().println(sw.toString().toUpperCase()); }
24
Fejlett Programozási Technológiák 2. 24 Iterátor Tag Departments Departments <tlt:iterator var="departmentName" type="java.lang.String" group="${myorg.departmentNames}"> ${departmentName}
25
Fejlett Programozási Technológiák 2. 25 Iterátor Tag public void doTag() throws JspException, IOException { if (iterator == null) return; while (iterator.hasNext()) { getJspContext().setAttribute(var, iterator.next()); getJspBody().invoke(null); } public void setVar(String var) { this.var = var; } public void setGroup(Collection group) { this.group = group; if(group.size() > 0) iterator = group.iterator(); }
26
Fejlett Programozási Technológiák 2. 26 Szkriptek használata JSP oldalakon Java kódot is használhatunk Nem célszerű használnunk mert eléggé átláthatatlan lesz az oldal Biztonsági kockázata is van (a servlet kontextushoz is hozzáférhet mindenki) <%! private BookDBAO bookDBAO; public void jspInit() { bookDBAO = (BookDBAO)getServletContext().getAttribute("bookDB"); if (bookDBAO == null) System.out.println("Couldn’t get database."); } %> <%! public void jspDestroy() { bookDBAO = null; } %>
27
Fejlett Programozási Technológiák 2. 27 Cél
28
Fejlett Programozási Technológiák 2. 28 Java Server Faces Szerver oldali web komponens felhasználói felületek létrehozására Model 2, MVC A logika és a megjelenítés elkülönül Hasonló lehetőségeket biztosít a fejlesztőknek mint a Desktop GUI fejlesztése A Servlet API-ra épül -> független a JSP-től
29
Fejlett Programozási Technológiák 2. 29 JSF Elemei: API az UI komponensek reprezentálására és állapotuk kezelésére, validálásra, navigációra, … JSP Elem könyvtárak Segítségével A felhasználói eseményeket a szerver oldali kódhoz köthetjük Az UI komponensek adatait szerver oldali adattárolókhoz köthetjük UI készítés újrafelhasználható elemekkel UI állapot elmentése és betöltése Folyamatokat definiálhatunk
30
Fejlett Programozási Technológiák 2. 30 Komponens modell UIComponent-ek (UIComponentBase) melyek leírják az UI komponensek állapotát és viselkedését Renderelő modell mely leírja a megjelenését Kódolás, Dekódolás Esemény kezelő (JavaBean tervezési mintát követi) ActionEvent ValueChangedEvent Konverziós modell Validációs modell (egy vagy több üzenetet gyártanak)
31
Fejlett Programozási Technológiák 2. 31 Hogyan működik
32
Fejlett Programozási Technológiák 2. 32 Kérés feldolgozási életciklus
33
Fejlett Programozási Technológiák 2. 33 Tipikus JSF alkalmazás Java Bean-ek Esménykezelők Validátorok JSP oldalak Szerver oldali segéd osztályok Facesconfig.xml
34
Fejlett Programozási Technológiák 2. 34 Példa Jsf.jsp
35
Fejlett Programozási Technológiák 2. 35 Navigáció definiálása /greeting.jsp success /response.jsp /response.jsp success /greeting.jsp <h:commandButton id="submit" action="success" value="Submit" />
36
Fejlett Programozási Technológiák 2. 36 Támogató Bean Feladata az oldalon lévő elemek adatainak tárolása és az eseménykezelők, validálók, … megvalósítása Integer userNumber = null;... public void setUserNumber(Integer user_number) { userNumber = user_number; } public Integer getUserNumber() { return userNumber; } public String getResponse() { if(userNumber != null && userNumber.compareTo(randomInt) == 0) { return "Yay! You got it!"; } else { return "Sorry, "+userNumber+" is incorrect."; }
37
Fejlett Programozási Technológiák 2. 37 Menedzselt Bean A támogató babot regisztrálnunk kell UserNumberBean guessNumber.UserNumberBean session minimum long 0 maximum long 10
38
Fejlett Programozási Technológiák 2. 38 Fejlesztési lépések 1. Modell objektumok fejlesztése 2. Ezek hozzárendelése menedzselt babként 3. Web oldalak létrehozása UI komponensekkel 4. Navigáció definiálása 5. Web.xml konfigurálása
39
Fejlett Programozási Technológiák 2. 39 A mai előadás tartalma Probléma a Java Serlettel Template eszközök Java Server Pages Áttekintés Elemei Életciklusa Objektumok Java Beanek használata Java Standard Tag Library Custom Tag Library Java Server Faces Feladata Elemei Navigáció Támogató Bean
40
Fejlett Programozási Technológiák 2. 40 A következő előadás tartalma JNDI Corba RMI
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.