1 Fejlett Programozási Technikák 2. 15/9. Fejlett Programozási Technológiák 2. 2 Az előző mai előadás tartalma: Számítógépes biztonság Jáva és a biztonság.

Slides:



Advertisements
Hasonló előadás
© Kozsik Tamás Különböző nyelvekhez igazítás Internationalization - i18n.
Advertisements

4. alkalom – Hálózat Kezelés
Programozás III STRING-XML.
© Kozsik Tamás Szervletek „Kis szerverprogram” Kliens-szerver architektúrát feltételezünk Szerveroldalon futó kisalkalmazás Mint ahogy az applet.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Öröklődés 2..
HADOOP Korszerű Adatbázisok Elérés, Belépés Elérés: eszakigrid109.inf.elte.hu Belépés: felhasználó/jelszó: neptun-kód Manager oldalak:
RMI = Remote Method Invocation
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Fájlkezelés, IO Kivételkezelés Belső osztályok
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Fejlett Programozási Technológiák II. Világos Zsolt 7. gyakorlat.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
1 Fejlett Programozási Technikák 2. 15/10. Fejlett Programozási Technológiák 2. 2 Az előző előadás tartalma Java Servlet  Servlet Interfész  Servlet.
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
Hálózatkezelés, java.net Elek Tibor
C# tagfüggvények.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
SPRING FRAMEWORK bemutatása
Szmetankó Gábor Greencode Kft.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Szombathely Dinamikus WEB programozás: PHP és JSP.
Kivételkezelés.
SOAP alapismeretek A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül. Forrás:
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
Appletek és Servletek Demeter Lehel 641-es csoport.
Az ASP.NET programozási modell Ez az előadó neve beosztása vállalata.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Léczfalvy Ádám MIDlet-ek.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat.
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
Web Architecture. Development of Computing Architectures Monolithic mainframe programming Client Server Real Client Server Web Programming.
Java programozási nyelv Filekezelés
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Java programozási nyelv Adatbekérés konzolról
Illés Zoltán ELTE Informatikai Kar
Java web programozás 11..
Fejlett Programozási Technológiák II. 2009, Nagy Csaba JSP – Java Server Pages.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Illés Zoltán ELTE Informatikai Kar
Java web programozás 7-8..
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
Java web programozás 5..
OpenCMS programozói bevezetés Krizsán Zoltán iit me.
Java web programozás 6..
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
JSF – komponens alapú webfejlesztés. Mi az a JSF mire jó ● Egy szerver oldali, komponens alapú felhasználói felület keretrendszer ● Támogatja a webes.
Fejlett Programozási Technikák 2.
Web-framework.
Fejlett Programozási Technikák 2.
Előadás másolata:

1 Fejlett Programozási Technikák 2. 15/9

Fejlett Programozási Technológiák 2. 2 Az előző mai előadás tartalma: Számítógépes biztonság Jáva és a biztonság  Biztonsági architektúra Titkosító architektúra  JCE  JAAS  JSSE  GSSE

Fejlett Programozási Technológiák 2. 3 Források

Fejlett Programozási Technológiák 2. 4 A mai előadás tartalma Java Servlet  Servlet Interfész  Servlet Context  Request  Response  Filter  Session  Web Application

Fejlett Programozási Technológiák 2. 5 Webes szolgáltatások Java Servlet Környezet  Tomcat 4.0 server.xml web.xml

Fejlett Programozási Technológiák 2. 6 Webes szolgáltatások Java WSDP fejlesztői csomag  JSP  Java Servlet  Java XML pack  Tomcat  Ant Tomcat + J2SDK

Fejlett Programozási Technológiák 2. 7 Java Servlet Java technológiára épülő web komponens  platform független, bytecode  dinamikusan betölthető  dinamikus tartalom előállítására alkalmas egy tároló menedzseli (servlet engine)  a web szerver vagy az alkalmazásszerver része, vagy önálló alkalmazás saját web szerverrel (Tomcat)  biztosítja azt a környezetet amelyen keresztül a kérések és a válaszok (request, response) lekezelhetőek  tartalmazza és menedzseli a servlet-eket egész életfolyamatuk alatt

Fejlett Programozási Technológiák 2. 8 Példa 1. A kliens kapcsolatba lép a web szerverrel és elküld egy HTTP kérést 2. A kérést a web szerver átadja a servlet tárolónak amely futhat  ugyanabban a process-ben  ugyanazon a gépen másik process-ben  másik gépen 3. A servlet tároló a kérés paraméterei alapján meghívja a megfelelő servlet-et (URL) 4. A servlet a kérés paraméterei alapján megállapítja mit szeretne a kliens ennek megfelelően végrehajtja a megfelelő műveleteket. Válaszol a kliensnek a válasz objektum segítségével 5. Miután a servlet tároló megállapította, hogy a servlet befejezte a feladatot átadja a vezérlést a web szervernek

Fejlett Programozási Technológiák 2. 9 A servlet-ek előnyei hatékony  hagyományos CGI: n hívás n process kényelmes  hatékony eszköztár a HTML űrlap adatok értelmezésére (http fejléc, süti, viszony) platform független biztonságos  nem általános shell program környezetben fut (itt ki kell szűrni a speciális karaktereket …)  buffer túlcsordulás nem léphet fel  JVM (hibakezelés, …) olcsó  Tomcat - ingyenes

Fejlett Programozási Technológiák A servlet interfész a servlet interfész megvalósítása vagy öröklése teszi a servlet-et servlet-té (javax.servlet.Servlet) GenericServlet absztrakt osztály  service HttpServlet absztrakt osztály  HttpServletRequest  HttpServletResponse kérés kezelő metódusok:  service  minden kérésnél meghívódik HTTP specifikus kérés kezelő metódusok:  doGet  doPost  doPut  doDelete  doHead  doOptions  doTrace  getLastModified leggyakrabban használtak

Fejlett Programozási Technológiák Példa import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWWW extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String docType = " \n"; out.println(docType +" \n Hello \n" + " \n Hello WWW \n "); }

Fejlett Programozási Technológiák Servlet-ek csomagolása többen is fejleszthetnek egy web portált egy könyvtár használata nem célszerű külön könyvtárat célszerű használni csomagok használata (package) csomagnév.servlet

Fejlett Programozási Technológiák A servlet életciklusa betöltés, példányosítás  a tároló indításakor  amikor szükség van az adott servlet-re inicializálás – csak a betöltéskor  init metódus argumentum nélküli – nem olvas semmilyen beállítást ServletConfig object – az első sorban kötelező meghívnia super.init(config) metódust betöltéskor pl.: JDBC kapcsolat felépítése kérés feldolgozás – minden egyes kérésre új szál  service meghívja a megfelelő doXXX metódust (Request, Response) nem célszerű ezt felülírni (használjuk a megfelelő doXXX metódusokat)  doXXX a szolgáltatás befejezése – régóta nem aktív, server leálítása,…  destroy – adatbázis kapcsolat bezárása, háttérszálak leállítása, …

Fejlett Programozási Technológiák import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ShowMessage extends HttpServlet { private String message; private String defaultMessage = "No message."; private int repeats = 1; public void init(ServletConfig config) throws ServletException { super.init(config); message = config.getInitParameter("message"); if (message == null) { message = defaultMessage; } try { String repeatString = config.getInitParameter("repeats"); repeats = Integer.parseInt(repeatString); } catch(NumberFormatException nfe) {} } 1. rész

Fejlett Programozási Technológiák public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "The ShowMessage Servlet"; out.println(ServletUtilities.headWithTitle(title) + " \n" + " " + title + " "); for(int i=0; i<repeats; i++) { out.println(message + " "); } out.println(" "); } 2. rész

Fejlett Programozási Technológiák Egy-szál modell alap esetben a servlet egy példánya található meg a memóriában minden egyes kérés teljesítésére egy új szál indul figyelnünk kell a párhuzamos futásra, a megfelelő erőforrások zárolására  Request, Response objektum csak a servlet futása közben használható ! (recycling) megakadályozható a párhuzamos futtatás a SingleThreadModel interfész megvalósításával ekkor egyszerre csak egy szál fut (a kérések egy várakozási sorban figyelnek ) ezzel a megoldással nagyon lelassíthatjuk rendszerünk működését !

Fejlett Programozási Technológiák Servlet futási környezet ServletContext interfész  ilyennek látja a servlet a környezetét a tárolónak kell megvalósítania az interfészt ServletConfig config = getServletConfig(); a ServletContext objektum segítségével a servlet  eseményeket menthet el (log)  megállapíthatja az egyes források URL címét  elmenthet és kiolvashat olyan értékeket a környezetben melyet más, a környezetben futó servlet-ek olvashatnak

Fejlett Programozási Technológiák Hasznos metódusok inicializáló paraméterek:  getInitParameter  getInitParameterNames környezeti paraméterek (JavaBean-ek használata):  setAttribute  getAttribute  getAttributeNames  removeAttribute erőforrások (HTML, GIF,JPEG) (nem alkalmasak dinamikus tartalom kezelésére pl.: index.jsp):  getResource  getResourceAsStream ideiglenes könyvtár:  File tempdir=(File)getServletContext().getAttribute("javax.servlet.context.tempdir");

Fejlett Programozási Technológiák Kérés objektum HttpServletRequest  Minden információ a HTTP kérésből  POST paraméterek getParameter getParameterNames getParameterValues getParameterMap  HTTP fejléc

Fejlett Programozási Technológiák A HTML űrlap által küldött adatok kezelése GET metódus esetén az URL-ben kódolva jelennek meg az adatok:  POST metódus esetén a fejlécben vagy a törzsben helyezkednek el getParameter metódussal a POST kezelhető ! karakterlánc (string) a visszatérési érték üres karakterlánc, ha nincs értéke a paraméternek NULL, ha nincs ilyen paraméter getParameterValues – egy karaterlánc tömböt ad vissza (ekkor egy paraméternek több értéke lehet pl.: checkbox) a paraméter nevek érzékenyek a kis és a nagy betűre getParameterNames - a használható paraméterek listáját adja vissza (Enumeration)

Fejlett Programozási Technológiák Perl script példa read(STDIN, $buffer, = split(/&/, $buffer); foreach $pair { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; }

Fejlett Programozási Technológiák Példa: (HTML) Collecting Three Parameters Collecting Three Parameters First Parameter: Second Parameter: Third Parameter:

Fejlett Programozási Technológiák Példa (Servlet) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ThreeParams extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Reading Three Request Parameters"; out.println(ServletUtilities.headWithTitle(title) +" \n " + title + " \n \n param1 : "+ request.getParameter("param1") + "\n" + " param2 : "+ request.getParameter("param2") + "\n" + " param3 : "+ request.getParameter("param3") + "\n" +" \n" + " ");} public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

Fejlett Programozási Technológiák A HTTP paraméterek kezelése getHeader(”paraméter”)  string – ha volt ilyen paramtér  NULL – ha nem volt ilyen paraméter ezzel elvileg minden típus olvasható azonban vannak az egyes speciális paraméterekre külön metódusok:  getCookies – egy cookie tömböt kapunk  getAuthType, getRemoteUser  getContentLength  getContentType  getDateHeader,getIntHeader  getHeaderNames – minden fejléc név egy Enumeration objektumban  getHeaders – ha egy fejléc többször is szerepel akkor is visszaadja a fenti módon  getMethod  getRequestURI  getProtocol

Fejlett Programozási Technológiák Minden fejléc kiíratása import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class ShowRequestHeaders extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Servlet Example: Showing Request Headers"; out.println( … Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String headerName = (String)headerNames.nextElement(); out.println(" " + headerName); out.println(" " + request.getHeader(headerName)); } out.println(" \n "); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response);} } Minden paraméter kiíratása

Fejlett Programozási Technológiák Válasz objektum magában foglal minden információt a kliens számára használhatunk buffer-t  getBufferSize  setBufferSize (a tároló nagyobbra is állíthatja)  isCommitted  reset  resetBuffer – a fejrészt és a státusz kódot nem törli  flushBuffer Fejlécek  setHeader  addHeader  setIntHeader  setDateHeader  addIntHeader  addDateHeader  Használjuk a: X-Powered-By fejlécet (X-Powered-By: Servlet/2.4 JSP/2.0 (Tomcat/5.0 JRE/1.4.1)) Átirányítás  sendRedirect  sendError

Fejlett Programozási Technológiák Státusz kezelése response.setStatus(int), public void sendError(int code, String message) public void sendRedirect(String url)  response.sendRedirect(response.encodeURL(url))

Fejlett Programozási Technológiák Képek létrehozása 1. Kép létrehozása: Frame f = new Frame(); f.addNotify(); // nem kell az ablakot megnyitni csak egy ilyen objektumot hozunk létre Image img = f.createImage(width, height);, 2. Rajzoljunk a képbe: Graphics g = img.getGraphics(); g.fillRect(...); g.drawString(...); 3. A Content-Type válasz fejléc beállítása response.setContentType("image/gif"); 4. Egy válasz stream-et nyitunk OutputStream out = response.getOutputStream(); 5. Küldjük el képünket GIF formátumban, itt egy kódolót kell használnunk. Ilyent a címen tudunk elérni. try {new GifEncoder(img, out).encode();} catch(IOException ioe) {}

Fejlett Programozási Technológiák Példa alkalmazás

Fejlett Programozási Technológiák Eredmény

Fejlett Programozási Technológiák Tömörített oldal … import java.util.zip.*; public class EncodedPage extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); String encodings = request.getHeader("Accept-Encoding"); String encodeFlag = request.getParameter("encoding"); PrintWriter out; String title; if ((encodings != null) && (encodings.indexOf("gzip") != -1) && !"none".equals(encodeFlag)) { title = "Page Encoded with GZip"; OutputStream out1 = response.getOutputStream(); out = new PrintWriter(new GZIPOutputStream(out1), false); response.setHeader("Content-Encoding", "gzip"); } else { title = "Unencoded Page"; out = response.getWriter(); } out.println( " \n" + " " + title + " \n"); String line = "Blah, blah, blah, blah, blah. " + "Yadda, yadda, yadda, yadda."; for(int i=0; i<10000; i++) { out.println(line); } out.println(" "); out.close();}} Weboldalak tömörítése

Fejlett Programozási Technológiák Viszony követés a HTTP állapotmentes fontos az állapotkövetés:  bevásárló kosár … négy megoldás:  sütik  URL átírás  HTTPS viszony követés  rejtett HTML mezők

Fejlett Programozási Technológiák Sütik (Cookies) rövid szöveges információk melyeket a web szerver küld a kliensnek segítségével  azonosíthatjuk a felhasználót egy e-commerce viszony alatt (bevásárló kosár)  elkerülhető a felhasználói név és a jelszó (alacsony biztonsági szint)  személyre szabható az oldal  a felhasználói információ értékes (célozott reklámok)

Fejlett Programozási Technológiák Problémák 4 kbyte, 20 cookie/site, 300 süti összesen az emberek nem szeretik, ha a kereső gépek megjegyzik mit szeretnek keresni a sütikben tárolt információ nem biztonságos (más is használhatja a gépet, lemásolható a süti) a fenti okok miatt a felhasználók gyakran kikapcsolják a sütiket

Fejlett Programozási Technológiák Sütik használata new Cookie(name, value) cookie.setXxx response.addCookie(cookie) request.getCookies – egy tömböt ad vissza melynek Cookie objektum elemei vannak, NULL ha nincs süti cookie.getXxx

Fejlett Programozási Technológiák Sütik létrehozása sem a neve sem az értéke nem tartalmazhatja a következő karaktereket: [ ] ( ) =, " / : ; a következő metódusoknak meg van a getXxx párja is  setComment() – megjegyzést adhatunk a sütihez  setDomain() – segítségével beállíthatjuk a sütihez tartozó tartományt (a böngésző többek között ez alapján állapítja meg kinek mit adhat vissza)  setMaxAge() – a süti érvényességének időtartamát állíthatjuk be másodpercben (-1 csak a jelenlegi viszonyban érvényes)  setName() – a süti nevét állítja be  setPath() – a tartományon belüli érvényességet adja meg  setSecure() – csak titkosított kapcsolaton keresztül vihető át  setValue() – az értékét adhatjuk meg

Fejlett Programozási Technológiák import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SetCookies extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { for(int i=0; i<3; i++) { Cookie cookie = new Cookie("Session-Cookie " + i,"Cookie-Value-S" + i); response.addCookie(cookie); cookie = new Cookie("Persistent-Cookie " + i,"Cookie-Value-P" + i); cookie.setMaxAge(3600); response.addCookie(cookie); } response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Setting Cookies"; out.println (” \n" + " " + title + " \n" + " "); } Sütik létrehozása

Fejlett Programozási Technológiák import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ShowCookies extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Active Cookies"; out.println(ServletUtilities.headWithTitle(title) + … Cookie[] cookies = request.getCookies(); Cookie cookie; for(int i=0; i<cookies.length; i++) { cookie = cookies[i]; out.println(" \n" + " " + cookie.getName() + "\n" + " " + cookie.getValue()); } out.println(" "); } Sütik kiolvasása

Fejlett Programozási Technológiák URL átírás nem tiltható le

Fejlett Programozási Technológiák HTML rejtett mező csak akkor működik ha minden oldal dinamikusan generált

Fejlett Programozási Technológiák Egy teljesebb megoldás HttpSession API magas szintű interfész mely sütiken vagy URL átíráson alapul sütit használ ha lehetséges, amennyiben nem akkor átvált URL átírásra az alsó részeivel nem kell foglalkoznunk

Fejlett Programozási Technológiák Létrehozása HttpSession session = request.getSession(true); létrehoz egy viszony objektumot amennyiben már volt egy (valamikor régen, vagy most) akkor azt nyitja meg (true) a HttpSession objektum a szerveren tárolódik komoly adatstruktúrával rendelkezhet melyet mi adhatunk meg

Fejlett Programozási Technológiák Példa: HttpSession session = request.getSession(true); ShoppingCart cart = (ShoppingCart)session.getValue("shoppingCart"); if (cart == null) { cart = new ShoppingCart(); session.putValue("shoppingCart", cart); } doSomethingWith(cart);

Fejlett Programozási Technológiák Metódusok set/getAttribute() removeAttribute() getAttributeNames() – enumeration getId() – a viszony azonosítót adja vissza isNew() – true ha a kilens még nem látta a viszonyt getCreationTime() getLastAccessedTime() getMaxInactiveInterval() invalidate()

Fejlett Programozási Technológiák A kérés továbbadása RequestDispatcher interfész a ServletContext objektumból tudjuk előállítani:  getRequestDispatcher – a servlet elérési útvonalát adhatjuk meg (a futási környezeten belül /-el kezdődik)  getNamedDispatcher – a servlet ServletContext-ben ismert nevét adhatjuk meg továbbítás:  include – nem módosíthatja a válsz objektum fejléc mezőit,  forward – csak akkor használhatjuk, ha még nem válaszoltunk a kliensnek (nincs adat a bufferben, ezt előbb törölni kell) az esetleges paraméterek elsőbbséget élveznek

Fejlett Programozási Technológiák Példa String path = “/raisons.jsp?orderno=5”; RequestDispatcher rd = context.getRequestDispatcher(path); rd.include(request, response);

Fejlett Programozási Technológiák Tomcat könyvtár hierarchia bin -> itt helyezkednek el az indító, leállító szkriptek fájlok log -> log fájlok lib -> jar fájlok conf -> server.xml  itt tudunk új környezetet létrehozni webapps -> webes alkalmazások könyvtára

Fejlett Programozási Technológiák server.xml server elem – egy lehet belőle  service elem – egy vagy több connector elem lehet benne de egy engine elem connector – HTTP1.1 vagy Warp itt tudjuk például a port-ot beállítani engine – a Tomcat szolgáltatási pontja, ezen belül tudjuk létrehozni például a virtuális címeket  host – itt tudjuk megadni a hozzá tartozó URL-t és a gyökér könyvtárat  contex – az egyes alkalmazások környezetéet definiálja a host-on belül.

Fejlett Programozási Technológiák Példa <Connector className="org.apache.catalina.connector.http.HttpConnector" port="8080" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="60000"/> <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common"/> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true"/> <Context path="/teszt" docBase="teszt" debug="0" privileged="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_examples_log." suffix=".txt" timestamp="true"/>

Fejlett Programozási Technológiák Alkalmazás környezet html, jsp, … WEB-INF  classes – itt helyezkednek el a class fájlaink (jó esetben csomagokban) com.mycompany.mypackage.MyServlet /WEB- INF/classes/com/mycompany/mypackage/MyServlet.clas s  web.xml – leírja az általunk használt servlet-eket, …, újra kell indítani a Tomcat-et, hogy újra értelmezze  lib – az általunk használt jar fájlokat helyezhetjük el itt pl.: jdbc fájlok

Fejlett Programozási Technológiák web.xml URL-ek testreszabása URL-ek kikapcsolása Servler-ek inicializálása Servler-ek betöltése előre Szűrők definiálása Hiba, és köszöntő oldalak definiálása

Fejlett Programozási Technológiák URL-ek testreszabása a leggyakrabban használt szolgáltatása servlet elem  servlet-name  servlet-class, jsp-file (/ !!!!) servlet-mapping elem  servlet-name  url-pattern (/valami, /*.asp)

Fejlett Programozási Technológiák Példa <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " Test moreservlets.TestServlet Test /UrlTest

Fejlett Programozási Technológiák Servlet meghívó letiltása amennyiben egy másik URL-en keresztül érjük el akkor az inicializálás végrehajtódik ha erre számítunk akkor az alapértelmezett URL letiltására két módunk van:  a /servlet/ útvonal átirányítása  az Invoker servlet globális kikapcsolása install_dir/conf/web.xml <!-- invoker /servlet/* -->

Fejlett Programozási Technológiák Példa <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " Sorry moreservlets.SorryServlet Sorry /servlet/*

Fejlett Programozási Technológiák Servlet-ek inicializálása init-param elem  param-name,param-value public void init() { ServletConfig config = getServletConfig(); firstName = config.getInitParameter("firstName"); Address = config.getInitParameter(" Address"); } alkalmazás szintű kezdeti paraméterek  context-param elem param-name, paramvalue

Fejlett Programozási Technológiák Példa support- InitTest myPackage.InitServlet param1 Value 1 param2 2

Fejlett Programozási Technológiák Servlet-ek betöltése servlet elem  load-on-startup Search myPackage.SearchServlet 1 Results /results/index.jsp 2

Fejlett Programozási Technológiák Szűrők definiálása a szűrők módosíthatják a kérés és válasz objektumot mielőtt egy JSP vagy servlet oldal a kérés objektumhoz jutna az első szűrő doFilter metódusa lefut itt kell meghívni a FilterChain objektum doFilter metódusát amely továbbadja a kérés objektumot vagy egy másik szűrőnek vagy a megfelelő servlet- nek

Fejlett Programozási Technológiák Szűrők használata Azonosítás Naplózás Kép konvertálás Tömörítés Titkosítás Darabolás XML konverzió …

Fejlett Programozási Technológiák Szűrő példa import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class ReportFilter implements Filter { public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain) throws ServletException, IOException { HttpServletRequest req = (HttpServletRequest)request; System.out.println(req.getRemoteHost() + " tried to access " + req.getRequestURL() +" on " + new Date() + "."); chain.doFilter(request,response); } public void init(FilterConfig config) throws ServletException { } public void destroy() {} } Szűrő

Fejlett Programozási Technológiák Szűrő definiálása a web.xml fájlban a servlet elemek előtt kell lennie filter elem  filter-name, filter-class filter-mapping  filter-name  servlet-name

Fejlett Programozási Technológiák Példa Reporter moreservlets.ReportFilter Reporter SomeServletName Reporter /* SomeServletName /TestPage.jsp

Fejlett Programozási Technológiák Üdvözlő oldalak beállítása akkor fontos amikor a kliens nem egy pontos útvonalat, hanem csak egy könyvtárat ad meg welcome-file-list elem  welcome-file index.jsp index.html

Fejlett Programozási Technológiák Hiba oldalak error-page elem  error-code, exception-type 404 /NotFound.jsp packageName.className /SomeURL

Fejlett Programozási Technológiák A mai előadás tartalma Java Servlet  Servlet Interfész  Servlet Context  Request  Response  Filter  Session  Web Application

Fejlett Programozási Technológiák A következő előadás tartalma Java Server Pages