JSP && JSTL && MySQL

Hali!

Nemrég gondoltam belekóstolok kicsit a JSP-be. A gondom az lenne, hogy képtelen vagyok JSPből a MySQL szerverhez csatlakozni.
Túrtam a netet, rengeteg doksit találtam. A gond az, hogy ahány doksi, annyiféle megoldást javasol.
Tehát nem tudtam dűlőre jutni, pedig már pár napja próbálkozok.

Ahogy láttam a kódokat, elsőre az lenne a legjobb szvsz, ha a JSTL-t használva tudnék csatlakozni.
(De igazából első nekifutásra bármilyen működőképes MySQL kapcsolódási példának örülnék.)

Tehát a kér(d)ésem: valaki, akinek már sikerült, le tudná írni normálisan, hogy mit hol kell szerkesztgetni, hogy egy mezei JSPből el tudjam érni a MySQL-t?

Megköszönném... :)
kl223

Hozzászólások

Thx a linkeket. MySQL connectorom volt már, de a második doksit nem láttam még...
A JSTL valóban más, persze az egy alap library, csak a neten azt láttam, hogy JSTL-hez különféle XML fájlokban kell dolgokat belőni, és akkor meg lehet oldani pl. connection poolinget, etc.
És ez volt a gondom, hogy nem tudtam sehogy rávenni, hogy kapcsolódjon a MySQL-hez, mivel 5 doksi 6féleképpen írta le a különféle XML-szerkesztéseket meg kódokat.

Nah de akkor meglesem azt a tutorialt először, és utána később foglalkozok a JSTL-lel.
Thx még1x.

kl223

Hali!

Nah megvan minden. Végülis kibogarásztam. Leírom itt egyben hogy meglegyen. (nálam ez tomcat 5.5.9-el és mysql 5.0.15-el működött.)

Egy apróság: mivel másképp nem jelent meg rendesen itt a fórumon, minden kezdő < jel után beírtam egy szóközt. Annak nem kell ott lennie, azt ki kell szedni, mikor a fájlokba írjuk be.

1) Első lépés: /etc/mysql/my.cnf. Itt a köv. sort kell ki#ezni:

skip-networking

2) Ezután le kell szedni a MySQL drivert, a JSTL-t és egyéb cuccokat a poolinghoz. http://dev.mysql.com/downloads/connector/j/3.1.html : MySQL java connector.
http://jakarta.apache.org/site/downloads/index.html : minden egyéb ami kellhet,

konkrétan a JSTL: http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi és a poolingos cucc: http://jakarta.apache.org/site/downloads/downloads_commons-dbcp.cgi de ennek vannak függőségei is, lsd. a README fájlját.

3) A letöltött cuccokat a tomcat_dir/common/lib alá kell bepakolni (a jar fájlokat nyilván).
4) Tomcat restart. Ezután így lehet a JSTL-t elérni a JSP lapokról:

< %@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
< %@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

5) a server.xml-t kell szerkeszteni, ez a tomcat_dir/conf alatt van.

Be kell szúrni a "< GlobalNamingResources>" részbe a köv. rekordot:


< Resource
      name="jdbc/hivatkozási_név"
      type="javax.sql.DataSource"
      password="jelszo"
      driverClassName="com.mysql.jdbc.Driver"
      maxIdle="2"
      maxWait="5000"
      username="usernév"
      url="jdbc:mysql://localhost:3306/adatbázisnév"
      maxActive="4"/>

6) Még1 tomcat restart. Ezután már a saját webes alkalmazásunk META-INF könyvtárában ténykedünk, a context.xml fájlban.
A köv. sort kell beszúrni a < Context> részbe:

< ResourceLink name="jdbc/hivatkozási_név" type="javax.sql.DataSource" global="jdbc/hivatkozási_név"/>

Tehát ezután hasonló módon kell kinéznie a context.xml ezen részének:


< Context>
    < ResourceLink name="jdbc/hivatkozási_név" type="javax.sql.DataSource" global="jdbc/hivatkozási_név"/>
< /Context>

Megjegyzés: nyilván megeshet, hogy nem volt eddig semmi a < Context> részben ezért az így nézett ki: "< Context ... />". Ez esetben át kell alakítani kicsit egy < /Context> beszúrásával és a sorvégi záró "/>" átírásával, ahogy a fenti részleten is látszik.

7) Ezek után elviekben semmilyen "előkészület" (azaz semmiféle "< sql:setDataSource .../>" sor) nem szükséges, hanem nyugodtan lehet használni bármilyen JSTL-es kifejezést a querykhez. Az adatforrás neve, amit meg kell adni az a hivatkozási név amit megadtunk az xml fájlokban. Pl nekem így néz ki: (nyilván én a jdbc/jBlog hivatkozási nevet használtam az XML fájlokban is)


    < sql:query var="posts" dataSource="jdbc/jBlog">
        SELECT * FROM posts
    < /sql:query>

    // ...

Hát elviekben ennyi. Ezzel nekem megy a tomcat a mysql-lel JSTL-t felhasználva, connection pooling-gel.

kl223

Ööö, szerintem technológiailag jobban járnál, ha a következő tanulási utat járnád be:

Servlet API, JSP, valamilyen MVC framework (Struts, JSF, Spring, akarmi)

Azutan sima jdbc helyett nezz korbe esetleg Hibernate, JDO vagy az EJB3 kornyeken - a temakor neve az, hogy objektum-relacios lekepezes (O/R mapping).

Hm. A servleteket meglestem, írtam is benne 1-2 példaprogit. Tudom, hogy az nem sok, de nekem az a fajta megközelítés nem teccett. (ez amikor egy osztályt írunk lényegében és az adja vissza az adatokat)
A JSP jobban teccik - talán mert JSPsen jobban hasonlít az oldal pl. a php-hez. Nemtom...
Ezért akartam alapból JSPben menni.

Ellenben a többi nevet meglesem amit adtál!

Nah úgy egyébként akkor megkísérlem még1x azt a MySQL csatlakozást.
Aztán majd szólok mi lett az eredmény.

kl223

Hali!

Na úgy tűnik, sikerült. Egyfolytában "Connection refused!" errort kaptam.
A megoldás: /etc/mysql/my.cnf-ben megkeresni a "skip-networking" sort és ki#ezni.
Egyelőre úgy néz ki, kapcsolódik.
Na akkor építkezek megint, próbálom JSTL-lel és connection poolinggel.

kl223