JavaServer Pages (JSP) (folytatás)



Hasonló dokumentumok
A WEB programozása - JSP1 dr.gál Tibor őszi félév

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Adatbázisok webalkalmazásokban

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

Web-fejlesztés NGM_IN002_1

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

JEE tutorial. Zsíros Levente, 2012

Szervlet-JSP együttműködés

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Java programozási nyelv /ősz 9. óra. Java Server Pages. JSP technika alapjai

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit.

HTML alapok 1. Minimális HTML file: <HTML> <HEAD> <TITLE> cím </TITLE> </HEAD> <BODY>... </BODY> </HTML> Formátum parancsok:

Stateless Session Bean

A JavaServer Pages (JSP)

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

A JavaServer Pages (JSP)

Java Programozás 11. Ea: MVC modell

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

B I T M A N B I v: T M A N

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

A JavaServer Pages (JSP)

Bevezető. Servlet alapgondolatok

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

A WEB programozása - Szervletek dr. Gál Tibor tavaszi félév

PHP-MySQL. Adatbázisok gyakorlat


Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül

JDBC - adatbáziskezelés

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Model View Controller alapú alkalmazásfejlesztés

SZAKDOLGOZAT. Vígh Gábor DEBRECEN 2009.

Memória játék. Felhasználói dokumentáció

A WEB programozása - Bevezetés őszi félév Dr. Gál Tibor

Struts2 keretrendszer

Java és web programozás

Programozás és adatbázis kezelés PHP ben

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Interaktív weboldalak készítése

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

10.óra CodeIgniter Framework #3. Gyimesi Ákos

Biztonságos PHP a gyakorlatban

Java Servlet technológia

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Java Database Connectivity (JDBC)

JAVA SE/ME tanfolyam tematika

Java és web programozás

Web-fejlesztés NGM_IN002_1

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Java. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE

JAVA webes alkalmazások

A Java nyelv. VI. Adatbázis-kezelés Javaban, Példaprogram Az elôzô részben láthattuk, hogy a Java ideális programozási nyelv perszisztens objektumok

Adatbázis használata PHP-ből

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

A JSP életciklusa Szkript elemek Dinamikus tartalom létrehozása Kifejezés nyelv Tartalom újrafelhasználása Vezérlés átadása Visszatekintés

Programozási nyelvek Java

JSP életciklusa Szkript elemek, implicit objektumok, bean-ek, EL include, (forward) Visszatekintés MVC

JAVA PROGRAMOZÁS 8.ELŐADÁS

Modern unit és integrációs tesztelés

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

Objektumorientált programozás C# nyelven

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

Java servlet technológia 1 / 40

A könyv tartalomjegyzéke

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Java Programozás 1. Gy: Java alapok. Ismétlés ++

OOP: Java 8.Gy: Abstract osztályok, interfészek

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Segédanyag: Java alkalmazások gyakorlat

Menetkövetés lehetőségei

A JSP életciklusa Szkript elemek Dinamikus tartalom létrehozása Kifejezés nyelv Tartalom újrafelhasználása Vezérlés átadása Visszatekintés

Biztonság java web alkalmazásokban

JSP technológia. A JSP elemek kétféle szintaxissal használhatók: A JSP

Számológép. Bármilyen számítógépen működik, amin található böngésző és Java alkalmazás. Indító képernyő

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Java grafikai lehetőségek

Extrémen brutál, gyors talpaló PHP nyelvhez (database). v2.1

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Java Web technológiák

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

A. függelék Webalkalmazások

Smalltalk 2. Készítette: Szabó Éva

Java servlet technológia. Web alkalmazások. Servlet-et használni érdemes, ha. JSP-t használni érdemes, ha. Servlet-JSP kombináció (MVC) szükséges, ha

Abstract osztályok és interface-ek. 7-dik gyakorlat

Access adatbázis elérése OLE DB-n keresztül

Sakk játék. Feladat: JavaScript segítségével olyan programot kell írni, ami egy sakktáblát szimulál. Kiválasztásra változtatják a helyüket.

Java programozási nyelv 4. rész Osztályok II.

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Szabad navigáció okozta problémák webes környezetben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

A Java Server Pages technológia. JSP és JSP elemkönyvtárak, JSTL alapok

Objektumorientált programozás C# nyelven

ASP és Java Servlet technológia összehasonlítása

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Átírás:

JavaServer Pages (JSP) (folytatás) MVC architektúra a Java kiszolgálón Ügyfél (Böngésző) 5 View elküldi az oldal az ügyfélez View (JSP) Ügyfél üzenet küldése a vezérlőnek 1 3 4 Kérelem továbbítása a megjelenítőnek Megjelenítő adatot olvas a modellből Controller (szervlet) 2 Adatok megváltoztatása a modellben Model (JavaBean, EJB, stb.) EIS Példa: online könyvvásárlás Megvalósítandó funkciók Könyvválaszték megjelenítése Megvásárolandó könyv(ek) kiválaszthatósága A kiválasztott könyvek összárának megjelenítése Kiválasztott könyv(ek) lemondása Kiválasztott könyvek megvásárlása http://localhost:8080/konyvesbolt Állapotdiagramm Böngésző Vezérlő modell létrehozása Adatbázis start_view start_model kosarba_view kosarba_model torles_view torles_model adatok_view befejezes_view befejezes_model 1

A vezérlő (ControllerServlet.java) package gal; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class ControllerServlet extends HttpServlet { public void init() throws ServletException { // Adatmodell létrehozása, a könyvlista beolvasása String driver = "sun.jdbc.odbc.jdbcodbcdriver"; String url = "jdbc:odbc:konyvesbolt"; String query = "SELECT * FROM krimi ORDER BY id"; try { Class.forName(driver); Connection con = DriverManager.getConnection(url,"",""); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery(query); createdatamodel(rs); rs.close(); stmt.close(); con.close(); catch (Exception ex) { // A könyvlista beírása az application objektumba konyvek attributum névvel private void createdatamodel(resultset rs) throws SQLException { String[][] konyvek = new String[100][3]; int n = 0; while ( rs.next() ) { konyvek[n][0] = rs.getstring(2); konyvek[n][1] = rs.getstring(3); konyvek[n][2] = rs.getstring(4); n++; ServletContext sc = getservletcontext(); sc.setattribute("konyvek",konyvek); sc.setattribute("n",""+n); // Minden egyes kérelem felléptekor végrehajtott metódus public void dopost(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { // Objektumok az include és forward számára ServletContext sc = getservletcontext(); RequestDispatcher rd_model; RequestDispatcher rd_view; // A munkafolyamat elindítása req.getsession(true); // A kérelem típusát meghatározó paraméter beolvasása String action = req.getparameter("action"); // A kérelem típusa start, az ennek megfelelő model és view végrehajtása if(action.equals("start")) { sc.getrequestdispatcher("/start_model.jsp"); rd_view = sc.getrequestdispatcher("/start_view.jsp"); // A kérelem típusa kosarba, az ennek megfelelő model és view végrehajtása if(action.equals("kosarba")) { sc.getrequestdispatcher("/kosarba_model.jsp"); rd_view = sc.getrequestdispatcher("/kosarba_view.jsp"); // A kérelem típusa torles, az ennek megfelelő model és view végrehajtása if(action.equals("torles")) { sc.getrequestdispatcher("/torles_model.jsp"); rd_view = sc.getrequestdispatcher("/torles_view.jsp"); 2

// A kérelem típusa adatok, az ennek megfelelő view végrehajtása if(action.equals("adatok")) { rd_view = sc.getrequestdispatcher("/adatok_view.jsp"); // A kérelem típusa befejezes, az ennek megfelelő model és view végrehajtása if(action.equals("befejezes")) { sc.getrequestdispatcher("/befejezes_model.jsp"); rd_view = sc.getrequestdispatcher("/befejezes_view.jsp"); Könyvlista átadása egy szkript tömbnek, s a könyvlistást és egy könyvlistasort megjelenítő metódusok (Keszlet.jsp) Több JSP oldal használja ezeket az include direktívával // Könyvlista beírása kétdimenziós tömbbe String[][] konyvek = (String[][])application.getAttribute("konyvek"); int n = Integer.parseInt((String)application.getAttribute("n")); public void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { dopost(req,resp); // A könyvlistát megjelenítő metódus! String konyvekdisplay(string[][] konyvek,int n){ String s = ""; for(int i=0; i<n; i++){ s +="<form method='post' " + "action='/konyvesbolt/controller'>"; s +="<td style='width:30%'>" + konyvek[i][0] + "</td>" + "<td style='width:50%'>" + konyvek[i][1] + "</td>" + "<td style='width:10%'>" + konyvek[i][2] + "</td>" + "<td style='width:10%'><input type=hidden " + "name=konyvselected value=" +i+ " >" + "<input type=hidden name=action value=kosarba>" + "<input type=submit value=igen " + "style='font-size:14;width:100%'></td>"; s +="</form>"; return s; // Egy könyvlistasort megjelenítő metódus String sordisplay(int i, String[][] konyvek){ String s = ""; s += "<form method='post' "+ "action='/konyvesbolt/controller'>"; s += "<td style='width:30%'>" + konyvek[i][0] + "</td>" + "<td style='width:50%'>" + konyvek[i][1] + "</td>" + "<td style='width:10%'>" + konyvek[i][2] + "</td>" + "<td style='width:10%'><input type=hidden " + "name=konyv value=" + i + ">" + "<input type=hidden name=action value=torles>" + "<input type=submit value=igen " + "style='font-size:14;width:100%'></td>"; s += "</form>"; return s; 3

A start megjelenítés (start_view.jsp) @ page import="java.util.*" @ page session="true" // A készlet és a készlet alapján a táblázatot generáló // metódusok beillesztése a JSP oldalba @ include file="keszlet.jsp" @ page contenttype="text/html; charset=iso-8859-2" // A táblázat statikus fejlécének elállítása <html> <center> <h2>könyvlista</h2> <table bgcolor=gray style="width:700; color:white"> <td style="width:30%">szerző</td> <td style="width:48%">cím</td> <td>ár[ft]</td><td>kosárba</td> // A tábálzat görgethető részének generálása // a könyvkészlet alapján <div style="overflow:scroll; height:140; width:700"> <table border=1 style="width:100%"> =konyvekdisplay(konynvek,n) </div> </center></html> A start modell (start_model.jsp) @ page import="java.util.*" // A munkafolyamat elindítása @ page session="true" // A vásárlói kosarat implementáló kosar nevű, Vektor // típusúobjekum létrehozása session hatáskörben Vector v = new Vector(); A kosárba megjelenítés (kosarba_view.jsp) @ page import="java.util.*" @ page session="true" // A készlet és a készlet alapján a táblázatot generáló // metódusok beillesztése a JSP oldalba @ include file="keszlet.jsp" @ page contenttype="text/html; charset=iso-8859-2" // A táblázat statikus fejlécének elállítása <html> <center> <h2>könyvlista</h2> <table bgcolor=gray style="width:700; color:white"> <td style="width:30%">szerző</td> <td style="width:48%">cím</td> <td>ár[ft]</td><td>kosárba</td> <div style="overflow:scroll; height:140; width:700"> <table border=1 style="width:100%"> =konyvekdisplay(konyvek,n) </div> 4

// A kosárban lévő könyvek megjelenítése egy görgethető // táblázatban <h3>könyvek a kosárban</h3> // A táblázat fix fejléce <table bgcolor=gray style="width:700; color:white"> <td style="width:30%">szerző</td> <td style="width:48%">cím</td><td>ár[ft]</td> <td>kiveszi?</td> // A táblázat görgethető része <div style="overflow:scroll; height:140; width:700"> <table border=1 style="width:100%"> // A kosár tartalmának generálása a kosar Vector // tartalma alapján // A kosár kiolvasása a session objektumból // Ha nem üres, akkor a tartalom generálása if(v!=null && (v.size()>0)){ if(v!=null && (v.size()>0)){ int sum = 0; for(int i=0; i<v.size(); i++){ out.print(sordisplay(integer.parseint (((String)v.elementAt(i))),konyvek)); sum += Integer.parseInt(konyvek[Integer.parseInt (((String)v.elementAt(i)))][2]); </div> <form method="post" action="/mvc/controller"> ="A fizetendő összeg = " + sum + "Ft" <input type=hidden name=action value=adatok> <input type=submit value=megrendelem> </form> </center> </html> A kosárba modell (kosarba_model.jsp) @ page import="java.util.*" // A munkafolyamat fenntartása @ page session="true" // A törlendő könyv beolvasása a kérelemből String s = request.getparameter("konyvsected"); // A kosár jelenlegi tartalmának betöltése // Az új könyv hozzáadása a kosár tartalmához v.addelement(s); // A kosár tárolása session hatáskörben A törlés megjelenítés (torles_view.jsp) megegyezik a kosárba megjelenítéssel A törlés modell (torles_model.jsp) @ page import="java.util.*" // A munkafolyamat fenntartása @ page session="true" // A törlendő könyv beolvasása a kérelemből String konyv = request.getparameter("konyv"); // A törlendő könyv indexének előállítása int i = Integer.parseInt(konyv); // A kosár jelenlegi tartalmának betöltése // Az új könyv hozzáadása a kosár tartalához v.removeelement(""+i); // A kosár tárolása session hatáskörben 5

Az adatok megjelenítés (adatok_view.jsp) Megegyezik a start megjenítéssel, azt azonban a megrendelő adatait bekérő, alábbi űrlappal egészíti ki... <h3>a fenti megrendelés megerősítése - adataim</h3> <form method="post" action="/konyvesbolt/controller"> <table> <td>családneve</td> <td><input type=text name=csaladnev size=48></td> <td>keresztneve</td> <td><input type=text name=keresztnev size=48></td> <td>postaciíme</td> <td><input type=text name=cim size=48></td> <td colspan=2> <input type=hidden name=action value=befejezes> <input type=submit value=megrendelem style="width:100%"> </td> </form> Adatok modell-re nem volt szükség A befejezés megjelenítés (befejezes_view.jsp) @ page contenttype="text/html; charset=iso-8859-2" <html> <center> <h4>megrendelését postázzuk, ha kívánja, <a href="/konyvesbolt/index.html">ide kattintva</a> újabb megrendelést készíthet!</h4> </center> </html> A befejezés modell (befejezes_model.jsp) A kosárban lévő könyvek és a megrendelő adatainak beírása egy adatbázisba @ page import="java.util.*" @ page session="true" @ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" // A könyvek azonosítóinak beírása egy stringe, vesszővel elválasztva // az egyes tételeket String s = ""; for(int i=0; i<v.size(); i++){ s += (String)v.elementAt(i); if(i!= v.size()-1) s +=","; session.setattribute("s",s); 6

// Kapcsolódás az adabázisra <sql:setdatasource driver="sun.jdbc.odbc.jdbcodbcdriver" url="jdbc:odbc:konyvesbolt" user="" password="" /> // A felhasználó adatait és a megrendelt könyveket // tartalmazó string beírása az adatbázis egy rekordjába <sql:update> INSERT INTO megrendelesek(csaladnev,keresztnev,cim,konyvek) VALUES('${param.csaladnev','${param.keresztnev', '${param.cim','${sessionscope.s') </sql:update> v.removeallelements(); 7