Fejlett Programoz - PowerPoint PPT Presentation

1 / 67
About This Presentation
Title:

Fejlett Programoz

Description:

Title: Fejlett Programoz si Technik k 2. Author: Vanda Last modified by: bilickiv Created Date: 2/1/2002 7:50:30 PM Document presentation format – PowerPoint PPT presentation

Number of Views:47
Avg rating:3.0/5.0
Slides: 68
Provided by: Van9158
Category:

less

Transcript and Presenter's Notes

Title: Fejlett Programoz


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

2
Az elozo mai eloadá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

3
Források
  • http//java.sun.com/products/servlet/docs.html
  • http//java.sun.com/developer/onlineTraining/Servl
    ets/Fundamentals/contents.html
  • http//www.onjava.com/pub/a/onjava/2002/07/31/tomc
    at.html

4
A mai eloadás tartalma
  • Java Servlet
  • Servlet Interfész
  • Servlet Context
  • Request
  • Response
  • Filter
  • Session
  • Web Application

5
Webes szolgáltatások
  • Java Servlet
  • Környezet
  • Tomcat 4.0
  • server.xml
  • web.xml

6
Webes szolgáltatások
  • Java WSDP fejlesztoi csomag
  • JSP
  • Java Servlet
  • Java XML pack
  • Tomcat
  • Ant
  • Tomcat J2SDK

7
Java Servlet
  • Java technológiára épülo web komponens
  • platform független, bytecode
  • dinamikusan betöltheto
  • dinamikus tartalom eloá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)
    lekezelhetoek
  • tartalmazza és menedzseli a servlet-eket egész
    életfolyamatuk alatt

8
Példa
  • A kliens kapcsolatba lép a web szerverrel és
    elküld egy HTTP kérést
  • 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
  • A servlet tároló a kérés paraméterei alapján
    meghívja a megfelelo servlet-et (URL)
  • A servlet a kérés paraméterei alapján
    megállapítja mit szeretne a kliens ennek
    megfeleloen végrehajtja a megfelelo muveleteket.
    Válaszol a kliensnek a válasz objektum
    segítségével
  • Miután a servlet tároló megállapította, hogy a
    servlet befejezte a feladatot átadja a vezérlést
    a web szervernek

9
A servlet-ek elonyei
  • hatékony
  • hagyományos CGI n hívás n process
  • kényelmes
  • hatékony eszköztár a HTML urlap 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 szurni a speciális karaktereket )
  • buffer túlcsordulás nem léphet fel
  • JVM (hibakezelés, )
  • olcsó
  • Tomcat - ingyenes

10
A servlet interfész
  • a servlet interfész megvalósítása vagy öröklése
    teszi a servlet-et servlet-té (javax.servlet.Servl
    et)
  • GenericServlet absztrakt osztály
  • service
  • HttpServlet absztrakt osztály
  • HttpServletRequest
  • HttpServletResponse
  • kérés kezelo metódusok
  • service
  • minden kérésnél meghívódik
  • HTTP specifikus kérés kezelo metódusok
  • doGet
  • doPost
  • doPut
  • doDelete
  • doHead
  • doOptions
  • doTrace
  • getLastModified

leggyakrabban használtak
11
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
  • "lt!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0
    Transitional//EN\"gt\n"
  • out.println(docType "ltHTMLgt\nltHEADgtltTITLEgtHellolt/
    TITLEgtlt/HEADgt\n"
  • "ltBODYgt\nltH1gtHello WWWlt/H1gt\nlt/BODYgtlt/HTMLgt")

12
Servlet-ek csomagolása
  • többen is fejleszthetnek egy web portált
  • egy könyvtár használata nem célszeru
  • külön könyvtárat célszeru használni
  • csomagok használata (package)
  • csomagnév.servlet

13
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 elso sorban kötelezo
    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 megfelelo doXXX metódust (Request,
    Response)
  • nem célszeru ezt felülírni (használjuk a
    megfelelo 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,

14
1. rész
  • 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)

15
  • 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)
  • "ltBODY BGCOLOR\"FDF5E6\"gt\n"
  • "ltH1 ALIGNCENTERgt" title "lt/H1gt")
  • for(int i0 iltrepeats i)
  • out.println(message "ltBRgt")
  • out.println("lt/BODYgtlt/HTMLgt")

2. rész
16
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 megfelelo
    eroforrá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 muködését !

17
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

18
Hasznos metódusok
  • inicializáló paraméterek
  • getInitParameter
  • getInitParameterNames
  • környezeti paraméterek (JavaBean-ek használata)
  • setAttribute
  • getAttribute
  • getAttributeNames
  • removeAttribute
  • eroforrások (HTML, GIF,JPEG) (nem alkalmasak
    dinamikus tartalom kezelésére pl. index.jsp)
  • getResource
  • getResourceAsStream
  • ideiglenes könyvtár
  • File tempdir(File)getServletContext().getAttribut
    e("javax.servlet.context.tempdir")

19
Kérés objektum
  • HttpServletRequest
  • Minden információ a HTTP kérésbol
  • POST paraméterek
  • getParameter
  • getParameterNames
  • getParameterValues
  • getParameterMap
  • HTTP fejléc

20
A HTML urlap által küldött adatok kezelése
  • GET metódus esetén az URL-ben kódolva jelennek
    meg az adatok
  • http//host/path?userMartyHalloriginbwidestl
    ax
  • POST metódus esetén a fejlécben vagy a törzsben
    helyezkednek el
  • getParameter metódussal a POST kezelheto !
  • 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
    beture
  • getParameterNames - a használható paraméterek
    listáját adja vissza (Enumeration)

21
Perl script példa
  • read(STDIN, buffer, ENV'CONTENT_LENGTH')
  • _at_pairs split(//, buffer)
  • foreach pair (_at_pairs)
  • (name, value) split(//, pair)
  • value tr// /
  • value s/(a-fA-F0-9a-fA-F0-9)/pack("C",
    hex(1))/eg FORMname value

22
Példa (HTML)
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
    Transitional//EN"gt
  • ltHTMLgt
  • ltHEADgt
  • ltTITLEgtCollecting Three Parameterslt/TITLEgt
  • lt/HEADgt
  • ltBODY BGCOLOR"FDF5E6"gt
  • ltH1 ALIGN"CENTER"gtCollecting Three
    Parameterslt/H1gt
  • ltFORM ACTION"servlet/ThreeParams METHODPOSTgt
  • First Parameter ltINPUT TYPE"TEXT"
    NAME"param1"gtltBRgt
  • Second Parameter ltINPUT TYPE"TEXT"
    NAME"param2"gtltBRgt
  • Third Parameter ltINPUT TYPE"TEXT"
    NAME"param3"gtltBRgt
  • ltCENTERgt
  • ltINPUT TYPE"SUBMIT"gt
  • lt/CENTERgt
  • lt/FORMgt
  • lt/BODYgt
  • lt/HTMLgt

23
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)
    "ltBODY BGCOLOR\"FDF5E6\"gt\nltH1 ALIGNCENTERgt"
    title "lt/H1gt\nltULgt\n ltLIgtltBgtparam1lt/Bgt "
    request.getParameter("param1") "\n"
  • " ltLIgtltBgtparam2lt/Bgt " request.getParameter("para
    m2") "\n"
  • " ltLIgtltBgtparam3lt/Bgt " request.getParameter("para
    m3") "\n" "lt/ULgt\n"
  • "lt/BODYgtlt/HTMLgt")
  • public void doPost(HttpServletRequest
    request,HttpServletResponse response) throws
    ServletException, IOException doGet(request,
    response)

24
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

25
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.nextElemen
    t()
  • out.println("ltTRgtltTDgt" headerName)
  • out.println(" ltTDgt" request.getHeader(headerName
    ))
  • out.println("lt/TABLEgt\nlt/BODYgtlt/HTMLgt")

Minden paraméter kiíratása
26
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

27
Státusz kezelése
  • response.setStatus(int),
  • public void sendError(int code, String message)
  • public void sendRedirect(String url)
  • response.sendRedirect(response.encodeURL(url))

28
Képek létrehozása
  • 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),
  • Rajzoljunk a képbe
  • Graphics g img.getGraphics()
  • g.fillRect(...)
  • g.drawString(...)
  • A Content-Type válasz fejléc beállítása
  • response.setContentType("image/gif")
  • Egy válasz stream-et nyitunk
  • OutputStream out response.getOutputStream()
  • Küldjük el képünket GIF formátumban, itt egy
    kódolót kell használnunk. Ilyent a
    http//www.acme.com/java/ címen tudunk elérni.
  • try new GifEncoder(img, out).encode()
    catch(IOException ioe)

29
Példa alkalmazás
30
Eredmény
31
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-Encod
    ing")
  • 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(
  • "ltheadgtlt/headgtltBODY BGCOLOR\"FDF5E6\"gt\n"
  • "ltH1 ALIGNCENTERgt" title "lt/H1gt\n")
  • String line "Blah, blah, blah, blah, blah. "
  • "Yadda, yadda, yadda, yadda."

Weboldalak tömörítése
32
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 mezok

33
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ülheto 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)

34
Problémák
  • 4 kbyte, 20 cookie/site, 300 süti összesen
  • az emberek nem szeretik, ha a kereso 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

35
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

36
Sütik létrehozása
  • sem a neve sem az értéke nem tartalmazhatja a
    következo karaktereket
  • ( ) , " / ? _at_
  • a következo 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észo többek
    között ez alapján állapítja meg kinek mit adhat
    vissza)
  • setMaxAge() a süti érvényességének idotartamá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 viheto át
  • setValue() az értékét adhatjuk meg

37
  • 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 i0 ilt3 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
  • (ltheadgtlt/headgtltBODY BGCOLOR\"FDF5E6\"gt\n"
  • "ltH1 ALIGN\"CENTER\"gt" title "lt/H1gt\n"

Sütik létrehozása
38
  • 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 i0 iltcookies.length i)
  • cookie cookiesi
  • out.println("ltTRgt\n"
  • " ltTDgt" cookie.getName() "\n"
  • " ltTDgt" cookie.getValue())

Sütik kiolvasása
39
URL átírás
  • http//host/path/file.htmljsessionid1234,
  • nem tiltható le

40
HTML rejtett mezo
  • ltINPUT TYPE"HIDDEN" NAME"session" VALUE"..."gt
  • csak akkor muködik ha minden oldal dinamikusan
    generált

41
Egy teljesebb megoldás
  • HttpSession API
  • magas szintu 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

42
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

43
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)

44
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()

45
A kérés továbbadása
  • RequestDispatcher interfész
  • a ServletContext objektumból tudjuk eloállítani
  • getRequestDispatcher a servlet elérési
    útvonalát adhatjuk meg (a futási környezeten
    belül /-el kezdodik)
  • 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 mezoit,
  • forward csak akkor használhatjuk, ha még nem
    válaszoltunk a kliensnek (nincs adat a bufferben,
    ezt elobb törölni kell)
  • az esetleges paraméterek elsobbséget élveznek

46
Példa
  • String path /raisons.jsp?orderno5
  • RequestDispatcher rd context.getRequestDispatche
    r(path)
  • rd.include(request, response)

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

48
server.xml
  • server elem egy lehet belole
  • 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.

49
Példa
  • ltServer port"8005" shutdown"SHUTDOWN"
    debug"0"gt
  • ltService name"Tomcat-Standalone"gt
  • ltConnector className"org.apache.catalina.conn
    ector.http.HttpConnector"
  • port"8080" minProcessors"5"
    maxProcessors"75"
  • enableLookups"true"
    redirectPort"8443"
  • acceptCount"10" debug"0"
    connectionTimeout"60000"/gt
  • ltEngine name"Standalone" defaultHost"localho
    st" debug"0"gt
  • ltLogger className"org.apache.catalina.logge
    r.FileLogger"
  • prefix"catalina_log."
    suffix".txt"
  • timestamp"true"/gt
  • ltRealm className"org.apache.catalina.realm.
    MemoryRealm" /gt
  • ltHost name"localhost" debug"0"
    appBase"webapps" unpackWARs"true"gt
  • ltValve className"org.apache.catalina.valv
    es.AccessLogValve"
  • directory"logs"
    prefix"localhost_access_log." suffix".txt"
  • pattern"common"/gt
  • ltLogger className"org.apache.catalina.log
    ger.FileLogger"
  • directory"logs"
    prefix"localhost_log." suffix".txt"
  • timestamp"true"/gt
  • ltContext path"/teszt" docBase"teszt"

50
Alkalmazás környezet
  • html, jsp,
  • WEB-INF
  • classes itt helyezkednek el a class fájlaink
    (jó esetben csomagokban)com.mycompany.mypackage.M
    yServlet /WEB-INF/classes/com/mycompany/mypackage
    /MyServlet.class
  • 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

51
web.xml
  • URL-ek testreszabása
  • URL-ek kikapcsolása
  • Servler-ek inicializálása
  • Servler-ek betöltése elore
  • Szurok definiálása
  • Hiba, és köszönto oldalak definiálása

52
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)

53
Példa
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • lt!DOCTYPE web-app PUBLIC
  • "-//Sun Microsystems, Inc.//DTD Web Application
    2.3//EN"
  • "http//java.sun.com/dtd/web-app_2_3.dtd"gt
  • ltweb-appgt
  • lt!-- ... --gt
  • ltservletgt
  • ltservlet-namegtTestlt/servlet-namegt
  • ltservlet-classgtmoreservlets.TestServletlt/servlet
    -classgt
  • lt/servletgt
  • ltservlet-mappinggt
  • ltservlet-namegtTestlt/servlet-namegt
  • lturl-patterngt/UrlTestlt/url-patterngt
  • lt/servlet-mappinggt
  • lt!-- ... --gt
  • lt/web-appgt

54
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
  • lt!--
  • ltservlet-mappinggt
  • ltservlet-namegtinvokerlt/servlet-namegt
  • lturl-patterngt/servlet/lt/url-patterngt
  • lt/servlet-mappinggt
  • --gt

55
Példa
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • lt!DOCTYPE web-app PUBLIC
  • "-//Sun Microsystems, Inc.//DTD Web Application
    2.3//EN"
  • "http//java.sun.com/dtd/web-app_2_3.dtd"gt
  • ltweb-appgt
  • ltservletgt
  • ltservlet-namegtSorrylt/servlet-namegt
  • ltservlet-classgtmoreservlets.SorryServletlt/servlet
    -classgt
  • lt/servletgt
  • lt!-- ... --gt
  • ltservlet-mappinggt
  • ltservlet-namegtSorrylt/servlet-namegt
  • lturl-patterngt/servlet/lt/url-patterngt
  • lt/servlet-mappinggt
  • lt!-- ... --gt
  • lt/web-appgt

56
Servlet-ek inicializálása
  • init-param elem
  • param-name ,param-value
  • public void init()
  • ServletConfig config getServletConfig()
  • firstName config.getInitParameter("firstName")
  • emailAddress config.getInitParameter("emailAddre
    ss")
  • alkalmazás szintu kezdeti paraméterek
  • context-param elem
  • param-name, paramvalue

57
Példa
  • ltcontext-paramgt
  • ltparam-namegtsupport-emaillt/param-namegt
  • ltparam-valuegtblackhole_at_mycompany.comlt/param-value
    gt
  • lt/context-paramgt
  • ltservletgt
  • ltservlet-namegtInitTestlt/servlet-namegt
  • ltservlet-classgtmyPackage.InitServletlt/servlet-cla
    ssgt
  • ltinit-paramgt
  • ltparam-namegtparam1lt/param-namegt
  • ltparam-valuegtValue 1lt/param-valuegt
  • lt/init-paramgt
  • ltinit-paramgt
  • ltparam-namegtparam2lt/param-namegt
  • ltparam-valuegt2lt/param-valuegt
  • lt/init-paramgt
  • lt/servletgt

58
Servlet-ek betöltése
  • servlet elem
  • load-on-startup
  • ltservletgt
  • ltservlet-namegtSearchlt/servlet-namegt
  • ltservlet-classgtmyPackage.SearchServletlt/servlet-c
    lassgt
  • ltload-on-startupgt1lt/load-on-startupgt
  • lt/servletgt
  • ltservletgt
  • ltservlet-namegtResultslt/servlet-namegt
  • ltjsp-filegt/results/index.jsplt/jsp-filegt
  • ltload-on-startupgt2lt/load-on-startupgt
  • lt/servletgt

59
Szurok definiálása
  • a szurok módosíthatják a kérés és válasz
    objektumot
  • mielott egy JSP vagy servlet oldal a kérés
    objektumhoz jutna az elso szuro 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 szuronek vagy a megfelelo
    servlet-nek

60
Szurok 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ó

61
Szuro 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)reque
    st
  • 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()

Szuro
62
Szuro definiálása a web.xml fájlban
  • a servlet elemek elott kell lennie
  • filter elem
  • filter-name, filter-class
  • filter-mapping
  • filter-name
  • servlet-name

63
Példa
  • ltfiltergt
  • ltfilter-namegtReporterlt/filter-namegt
  • ltfilter-classgtmoreservlets.ReportFilterlt/filter-c
    lassgt
  • lt/filtergt
  • ltfilter-mappinggt
  • ltfilter-namegtReporterlt/filter-namegt
  • ltservlet-namegtSomeServletNamelt/servlet-namegt
  • lt/filter-mappinggt
  • ltfilter-mappinggt
  • ltfilter-namegtReporterlt/filter-namegt
  • lturl-patterngt/lt/url-patterngt
  • lt/filter-mappinggt
  • ltservletgt
  • ltservlet-namegtSomeServletNamelt/servlet-namegt
  • ltjsp-filegt/TestPage.jsplt/jsp-filegt
  • lt/servletgt

64
Üdvözlo 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
  • ltwelcome-file-listgt
  • ltwelcome-filegtindex.jsplt/welcome-filegt
  • ltwelcome-filegtindex.htmllt/welcome-filegt
  • lt/welcome-file-listgt

65
Hiba oldalak
  • error-page elem
  • error-code, exception-type
  • lterror-pagegt
  • lterror-codegt404lt/error-codegt
  • ltlocationgt/NotFound.jsplt/locationgt
  • lt/error-pagegt
  • lterror-pagegt
  • ltexception-typegtpackageName.classNamelt/exception-
    typegt
  • ltlocationgt/SomeURLlt/locationgt
  • lt/error-pagegt

66
A mai eloadás tartalma
  • Java Servlet
  • Servlet Interfész
  • Servlet Context
  • Request
  • Response
  • Filter
  • Session
  • Web Application

67
A következo eloadás tartalma
  • Java Server Pages
Write a Comment
User Comments (0)
About PowerShow.com