Child pages
  • Servletben frame vagy kép
Skip to end of metadata
Go to start of metadata
Sziasztok!

Nem sikerül olyan servletet összehoznom, amely valamilyen más erőforrást használ (erőforrás = bármilyen kép, vagy frameknél egy .htm fájl), mivel a generált html oldal nem látja ezeket. Tehát a kérdésem csak annyi, hogy hogyan lehet elérni, hogy lássa. Tomcat-et használok, és arra gondoltam hogy a web.xml-t kellene kiegészíteni valamivel, csak nem tudom, hogy mivel.

A válaszokat előre is köszi.
      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

17 Comments

  1. Nem kell semmit írni a web.xml-be. Ami ugyanabban a könyvtárban van mint a web-inf, az mind látszik a szervletből.
  2. Ott vannak, és mégse tölti be őket. Pl van egy szervletem, ami framekből épül fel, az egyik framehez a felso.htm-et kellene betöltenie, ami pont ott van, ahol mondtad... De kínomban már bemásoltam mindenhova, és így sem látja, ezért gondoltam, hogy valami más beállítási gond van.
  3. Pongyolán fogalmaztam: Ami ugyanabban a könyvtárban van mint a web-inf, az mind látszik a webszerveren kívülről url-lel megadva. Tehát ha ott van egy felso.htm fájl, látszania kéne http://host:port/webapp/felso.htm-ként böngészőbe beírva.

    Ha egy fájlot a szervleten belül akarsz használni valamire, tehát ha a szervleten belül akarod kiolvasni és felhasználni a fájl tartalmát, akkor azt a web-inf/classes-ba kell tenni. Ha jól értem most nem erről van szó.

    Hogyan hivatkozol az url-re? Relatíve kéne, tehát nem írsz elé perjelet. (Nem "/felso.htm" hanem "felso.htm".)

    Mégegy dolog lehet: a web.xml-ben egy servlet-mapping-ben beállítod a *.htm url-pattern-t egy szervletre. Ilyenkor ez élvez elsőbbséget az (x)-szel jelölt résszel szemben és a szervlet fogja megkapni a http kérést.
  4. Valamiért még mindig nem bírtam rávenni a működésre...
    Van egy InputShowerServlet nevű servletem a servlets csomagban: servlets/InputShowerServlet, ebből az osztályból az a rész, amit én most ide fontosnak tartok:
        out.println("<FRAMESET rows=19%,81% border=\"3\">");
        out.println("<FRAME SRC=\"/felso.htm\" scrolling=no>");
        out.println("<FRAMESET cols=\"18%,82%\" border=\"3\">");
        out.println("<frame name=\"menu\" FRAME SRC=\"felso.htm\" frameborder=\"0\" scrolling=no>");
        out.println("<frame name=\"kozep\" FRAME SRC=\"koszont.htm\" frameborder=\"0\">");
        out.println("</FRAMESET>");
        out.println("</FRAMESET>");
    Tehát egy szimpla keretekre osztás. Amit akarok, hogy lássa a felso.htm filet. Már mindenütt ott van a felso.htm, ott van a servlets/felso.htm-ben és ott is, ahol a web-inf könyvtár van. El tudom érni a http://localhost:8080/kolcsonzo/felso.htm címen is, a web.xml ide tartozó része:
        <servlet>
            <servlet-name>inputshower</servlet-name>
            <servlet-class>servlets.InputShowerServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>inputshower</servlet-name>
            <url-pattern>/inputshower</url-pattern>
        </servlet-mapping>
  5. Unknown User (frimen)

    Az lenne csak a durva, ha müködne igy a kodod.
    Szerintem gondolkozz el ezeken:
    "/felso.htm\"
    Mi jelent a gyökér (/)?
    "felso.htm\"
    Melyik könyvtár az alap könyvtár?

    Ja.. és hogy mi a törzs és a levél! Azon is... :-) Föleg mert ezek alap html dolgok.,.
  6. Hát ezzel most igazából nem sokat segítettél, lehet én vagyok az értetlen, de azért még ezt bekopizom ide:
    out.println("<FRAME SRC=\"/felso.htm\" scrolling=no>");
    van ez a sor, ez a generált html oldalon így fog kinézni:
    <FRAME SRC="/felso.htm" scrolling=no>
    mivel a stringen belüli idézőjelet így jelöljük: \"
    Habár ezt lehet tudtad, nekem valahogy mégis gondot okoz, mert már tényleg mindennel próbálkoztam, és nem tudok mire gondolni...
    A felso.htm pedig már igazából mindenhol ottvan, még ott is, ahol abszolút nem hiszem, hogy megtalálná, magyarán minden könyvtárba bemásoltam, és nem csak ezekkel az elérési utakkal próbálkoztam, hanem abból is ami csak létezik. Ezért gondolom, hogy valami plussz  kellene hozzá, amit nem tudok, hogy mi.
  7. Azt már próbáltad hogy nem írsz perjelet a felso.htm elé?
    tvik
  8. Ja még azt kéne kipróbálnod ha eddig nem volt meg, hogy ha statikusan (szövegszerkesztővel, egymás mellé másolgatással) megcsinálod ezt a framesetes cuccot, hogy egyáltalán működik-e.
    <frame name="menu" FRAME SRC="felso.htm" frameborder="0" scrolling=no>
    Ezt például lehet hogy nem szereti a böngésző, hogz ott van egy "frame" csak úgy, bár igazság szerint nem hiszem hogy ez a baj.

    Egyébként pedig írj jól-formázott (X)HTML kódot, az a biztos. (Minden attributumhoz írd ki az idézőjeleket, pl. scrolling="no" és zárd le a magában álló tag-eket, pl.
    <frame name="menu" SRC="felso.htm" frameborder="0" scrolling="no" />
    tvik
  9. Unknown User ((k)risztián)

    Ha "/" jellel kezded akkor server relatív lesz tehét a felso.html webappnak fogja keresni a welcome file-jat. tehát alapból te igy a http://host:port/felso.htm/index.html -t hívod ami gondolom nincs... Ha elhagyod a "/" jelet out.println(""); akkor webapp relativ lesz az URL-ed es igy a http://host:port/webappod/felso.htm -t hívod Mint ahogyan már tobben is tanécsolták lejebb...
  10. Természetesen alapból úgy terveztem meg a frame oldalt, hogy böngészőben működjön, aztán raktam át a szervletbe, ami tök ugyanazt a kódot generálja, amit én megterveztem korábban .html-ben.
    3 keret van, és abból 2 (csak a próba kedvéért) a felso.htm-re hivatkozik, az egyik /felso.htm a másik pedig csak simán felso.htm.
    Amit lejjebb tanácsoltak, azt már mind kipróbáltam.
  11. Unknown User (frimen)

    "/felso.htm\"
    Az azt jelenti, hogy a "http://localhost:8080/felso.htm" fogja keresni.
    Ez lenne a jó: "/kolcsonzo/felso.htm"
    "felso.htm\"
    Ez bonylultabb, mert relativ hivatkozás... de nagy valószínűséggel ugyanazt jelenti mint a felső, ugyanaz elvileg a megoldás.

    Mivel irtad, hogy eléred a "http://localhost:8080/kolcsonzo/felso.htm" cimen ennek müködnie kell, de ha nem akkor az src-hez: http://localhost:8080/kolcsonzo/felso.htm, ha igy sem müködik, akkor valami nagyon el van cseszve.
  12. Kezd érdekes lenni. Mi az ami működik? A böngészőbe lejön a frameset forrása egyáltalán?

    Mi a konkrét könyvtárstruktúra? Ezen a helyen kellene szerepelnie a konkrét fájloknak:
    ${tomcat_home}/webapps/kolcsonzo/felso.htm
    ${tomcat_home}/webapps/kolcsonzo/WEB-INF/web.xml
    ${tomcat_home}/webapps/kolcsonzo/WEB-INF/classes/servlets/InputShowerServlet.class
    tvk
  13. Akkor valami nagyon el van baszva, mert ezt már mindet próbáltam, és sehogy sem működött. (most megint leteszteltem a biztonság kedvéért, de most se működött)

    Azért köszönöm mindenkinek a segítséget, de mostmár szerintem keretek nélkül fogom megoldani. Helyette mindig legenerálok egy felső részt, ami a menüt fogja tartalmazni.

    Minden ott van, ahol mondtad.
  14. ja igen, a böngészőbe is lejön a forrás, úgy ahogyan szerettem volna:
    <HTML>
    <head><title>Kölcsönző</title></head>
    <BODY>
    <FRAMESET rows=19%,81% border="3">
    <FRAME SRC="http://localhost:8080/kolcsonzo/felso.htm" scrolling=no>
    <FRAMESET cols="18%,82%" border="3">
    <frame name="menu" FRAME SRC="/kolcsonzo/felso.htm" frameborder="0" scrolling=no>
    <frame name="kozep" FRAME SRC="felso.htm" frameborder="0">
    </FRAMESET>
    </FRAMESET>
    </BODY>
    </HTML>
    Az src-ket ne nézzétek, azok már csak a "kétségbe esett" próbálkozások.

    Ha csak szimplán egy statikus html-ben indítom el, amely mellett ott vannak a megfelelő fájlok, pl: felso.htm, menu.htm, kozep.htm, akkor minden szuperül működik.
  15. Ha már itt vagyok, még egy kérdés:
    Csak űrlapokkal lehet megoldani a kliens -> szerver adatküldést, vagy van valami olyan lehetőség is, hogy egy linkként adom meg. Pl:
    <P ALIGN=center><A HREF=\"/kolcsonzo/newuser\">Új felhasználó létrehozása</A></P>
    De itt még azt is el akarom küldeni, hogy ki hozza létre, az milyen jogosultságokkal rendelkezik, stb... Ezt az új felhasználó létrehozását azért nem űrlappal oldom meg, mert még van másik 10-15 funkció, és nem akarom belegenerálni mindegyikbe ugyanazt...
  16. A szervletben a print-ek után az out le van zárva close()-sal? Még ez is lehet a baj, mert a browser lehet hogy várja a folytatást, ami nem jön, és addig nem kezdi el a többi frame letöltését. De én is már vaktában lövöldözök, lehet hogy a close-t nem is kell meghívni explicite, vagy meghívod.

    A másik kérdésre. Például:
    "http://www.javaforum.hu/forum?categoryId=12&topicId=377&messageId=2531&newMessage=true"

    A fenti formátummal el tudsz küldeni paramétereket egy href-ben is. Kérdőjel után felsorolva a paraméterek kulcs-érték párjai &-tel elválasztva. Ezeket ki tudod olvasni a http kérésből. Ennek megvan egy kötött formátuma, (URL encoding) érdemes utánanézni.

    tvik
  17. Lezártam close()-sal, de nem az volt a baja. Mostmár túlságosan elhaladtam a többi résszel, hogy frame-ben csináljam meg, azért tényleg köszönöm a segítséget.

    A linkes adattovábbítás pedig jól működik, köszönöm.