8234 tai lieu_ve_lap_trinh_web

118
COMPUTER LEARNING CENTERWWW.HUUKHANG.COM Moân hoïc: Java Server Pages Baøi 1 Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong khoaù hoïc: Caøi ñaët JRUN. o Caøi ñaët JDK1.3. o Caøi ñaët JRUN. o Caáu hình öùng duïng JSP Giôùi thieäu JSP. o Script. o Khai baùo chæ muïc. 1. CAØI ÑAËT JRUN 1.1. 1.2. Caøi ñaët JDK Ñeå caáu hình JRUN 4.0 treân Windows, tröôùc tieân baïn caøi ñaët boä JDK1.3 hay JDK 1.4 leân ñóa cöùng C hay D, sau khi caøi ñaët thaønh coâng baïn neân boot maùy laïi, trong oå ñóa seõ xuaát hieän thö muïc JDK1.3 vôùi caùc thö vieän cuûa chuùng. Caøi ñaët JRUN Ñeå caøi ñaët JRUN, baïn mua ñóa CD vôùi öùng duïng JRUN 4.0, sau ñoù caøi ñaët chuùng vaøo maùy coù caøi ñaët JDK. Trong khi caøi ñaët thì JRUN coù yeâu caàu choøn thö muïc nôi baïn caøi ñaët JDK. Trong khi caøi ñaët JRUN, coù theå yeâu caàu baïn caøi ñaët chuùng döôùi daïng moät dòch vuï cuûa hôïp ñoàng haønh (maëc ñònh laø Yes), khi ñoù JRUN seõ caøi ñaët vôùi hai dòch vuï laø JRUN Admin vaø JRUN Default trong cöûa soå Services (trong Control Panel hay Administrative Tools) cuûa heä ñieàu haønh Windows nhö hình 1-1 sau: Hình 1-1: Dòch vuï JRUN trong Servies Giaùo vieân: Phaïm Höõu Khang

Transcript of 8234 tai lieu_ve_lap_trinh_web

Page 1: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

Baøi 1

Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong khoaù hoïc: Caøi ñaët JRUN.

o Caøi ñaët JDK1.3. o Caøi ñaët JRUN. o Caáu hình öùng duïng JSP

Giôùi thieäu JSP. o Script. o Khai baùo chæ muïc.

1. CAØI ÑAËT JRUN

1.1.

1.2.

Caøi ñaët JDK Ñeå caáu hình JRUN 4.0 treân Windows, tröôùc tieân baïn caøi ñaët boä JDK1.3 hay JDK

1.4 leân ñóa cöùng C hay D, sau khi caøi ñaët thaønh coâng baïn neân boot maùy laïi, trong oå ñóa seõ xuaát hieän thö muïc JDK1.3 vôùi caùc thö vieän cuûa chuùng.

Caøi ñaët JRUN Ñeå caøi ñaët JRUN, baïn mua ñóa CD vôùi öùng duïng JRUN 4.0, sau ñoù caøi ñaët chuùng

vaøo maùy coù caøi ñaët JDK. Trong khi caøi ñaët thì JRUN coù yeâu caàu choøn thö muïc nôi baïn caøi ñaët JDK.

Trong khi caøi ñaët JRUN, coù theå yeâu caàu baïn caøi ñaët chuùng döôùi daïng moät dòch vuï cuûa hôïp ñoàng haønh (maëc ñònh laø Yes), khi ñoù JRUN seõ caøi ñaët vôùi hai dòch vuï laø JRUN Admin vaø JRUN Default trong cöûa soå Services (trong Control Panel hay Administrative Tools) cuûa heä ñieàu haønh Windows nhö hình 1-1 sau:

Hình 1-1: Dòch vuï JRUN trong Servies

Giaùo vieân: Phaïm Höõu Khang

Page 2: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

Baïn phaûi baûo daûm raèng chuùng ñang ôû cheá ñoä Started, trong tröôøng hôïp ñang ôû cheá ñoä STOP thì baïn choïn dòch vuï naøy vaø nhaán nuùt Start.

Neáu JRUN ñang ôû cheá ñoä Start thì baïn seõ goõ http://localhost:8000 treân trình duyeät

vaø cung caáp username cung vôùi password ñeå ñaêng nhaäp vaøo maøn hình uqaûn trò JRUN neáu muoán chöông.

Neáu JRUN Default Server ñang ôû cheá ñoä Start thì baïn coù theå goõ ñòa chæ sau treân browser http://localhost:8100 ñeå chaïy öùng duïng maëc ñònh cuûa JSP.

Ngoaøi ra, neáu baïn khoâng caøi ñaët JRUN nhö moät dòch vuï cuûa heä ñieàu haønh Windows

thì moãi laàn baïn muoán chaïy öùng duïng JSP thì phaøi Start noù leân baèng caùch choïn Start | Programs | JRUN 4.0 | JRUN Default Server hay JRUN Admin Server roi sau do khôûi ñoäng JRUN Default Server, phaàn naøy seõ trình baøy trong phaàn caáu hình.

1.3.

1.3.1.

1.3.2.

Caáu hình öùng duïng JSP

Ñeå trieäu goïi trang JSP (teân môû roäng .jsp) treân trình duyeät, baïn coù theå caáu hình moät torng hai caùch sau:

Caùch 1: Neáu khoâng muoán taïo öùng duïng Web cho rieâng mình maø söû duïng thö muïc maëc ñònh

thì baïn coù theå khai baùo caùc trang JSP vaø boû vaøo thö muïc JRUN4/Servers/Defaul/ default-ear/ default-war/.

Chaúng haïn, trong tröôøng hôïp naøy chuùng ta khai baùo trang test.jsp vôùi noäi dung nhö sau: <HTML>

<HEAD> <title>Test JSP</title> </HEAD> <BODY> <%=”Hello JSP”%> </BODY>

</HTML>

Ñeå kieåm tra trang JSP naøy, baïn khai baùo treân trình duyeät nhö sau: http://localhost1:8100/test.jsp

Tuy nhieân, baïn coù theå khai baùo caùc thö muïc con beân trong cuûa thö muïc maëc ñònh naøy, sau ñoù trieäu goïi treân trình duyeät theo teân thö muïc, chaúng haïn http://localhost:8100/qlda/danhmucphongban.jsp.

Caùch 2:

Ñeå caáu hình öùng duïng JSP treân JRUN baïn coù theå thao taùc theo caùc böôùc sau:

1. Baïn ñaêng nhaäp vaøo JRUN Admin vôùi http://localhost:8000 baèng caùch cung caáp username/pwd nhö hình 1-2 sau.

Giaùo vieân: Phaïm Höõu Khang

Page 3: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

Hình 1-2: Ñaêng nhaäp JRUN Admin

2. Taïo thö muïc löu tröõ web site treân oå ñóa, chaúng haïn trong tröôøng hôïp naøy khai baùo thö muïc jspsample nhö hình 1-3.

Hình 1-3: Khai baùo thö muïc ñeå löu tröõ trang JSP

Giaùo vieân: Phaïm Höõu Khang

Page 4: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

3. Choïn vaøo menu Home, JRUN seõ lieät keâ danh saùch caùc server ñang caáu hình treân JRUN nhö hình 1-4.

Hình 1-4: Danh saùch caùc Server treân JRUN

4. Choïn URL coù teân laø Create New Server treân menu naèm ôû ñaàu trang, trong cöûa soå vöøa xuaát hieän (Creating a New JRun Application Server) baïn cung caáp caùc tham soá trong hình 1-5 nhö sau:

Host Name:localhost (hoaëc ñòa chæ IP, teân server) •

JRun Server Name: Choïn teân cuûa öùng duïng, ví duï trong tröôøng hôïp naøy choïn jspsample.

JRun Server Directory: Thö muïc cuûa öùng duïng baïn vöøa taïo ra, chaúng haïn D:/jspsample (hay D:/thuvien/hr).

5. Nhaán nuùt Create chôø trong giaây laùt cöûa soå cuûa HOME page seõ xuaát hieän teân öùng duïng web baïn vöøa taïo (jspsample), nhaán nuùt Start ñeå khôûi ñoäng öùng duïng naøy.

Trong tröôøng hôïp phaùt sinh loãi do port bò ñuïng ñoä, maëc ñònh cuûa site default laø 8100 (admin laø 8000), khi baïn taïo öùng duïng xong, moät port naøo ñoù ñöôïc gaùn cho öùng duïng cuûa baïn vì duï nhö 8101 nhö hình 1-6. Tuy nhieân, baïn coù theå thay ñoåi port naøy baèng caùch edit ñeå caäp nhaät.

Giaùo vieân: Phaïm Höõu Khang

Page 5: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

Hình 1-5: Taïo website

Hình 1-6: Taïo öùng duïng JSP thaønh coâng

Sau khi taïo thaønh coâng, teân öùng duïng vöøa taïo seõ xuaát hieän trong danh saùch server cuûa JRUN nhö hình 1-7.

Giaùo vieân: Phaïm Höõu Khang

Page 6: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

Hình 1-7: Teân site vöøa taïo

Xem treân baûng danh saùch server öùng vôùi jspsample coù phaàn HTTP Port laø 8101, sau ñoù treân http, baïn goõ http://localhost:8101/test.jsp, keát quaû seõ xuaát hieän nhö hình 1-8.

Hình 1-8: Keát quaû trang test.jsp

Giaùo vieân: Phaïm Höõu Khang

Page 7: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

2. GIÔÙI THIEÄU JSP

2.1.

2.2.

2.3.

Yeâu caàu

JSP döïa treân cuù phaùp cuûa ngoân ngöõ laäp trình Java, chính vì vaäy khi laøm vieäc vôùi JSP baïn phaûi laø ngöôøi coù kieán thöùc veà ngoân ngöõ naøy. Neáu baïn xaây döïng öùng duïng JSP coù keát noái cô sôû döõ lieäu thì kieán thöùc veà cô sôû döõ lieäu SQL Server hay Oracle laø ñieàu caàn thieát.

Giôùi thieäu

JSP laø kòch baûn trình chuû (Server Script) ñöôïc chaïy treân neàn JDK 1.3 trôû veà sau, cuøng vôùi öùng duïng Web Server ñeå quaûn lyù chuùng. Web Server thöôøng söû duïng laø Tomcate, Java Web Server, JRUN, WebLogic vaø Apache, ...

Tieàn thaân cuûa JSP laø xuaát phaùt töø Java Servlet, khi laøm vieäc vôùi Java Servlet thì haàu heát caùc laäp trình viweân gaëp khoù khaên khi xuaát nhaäp döõ lieäu, cuï theå laø giao dieän vôùi ngöôøi söû duïng. Chính vì vaäy SUN Microsystem cung caáp kòch baûn JSP laø phaàn môû roäng cuûa Java Servlet ñeå cho pheùp quaù trình laäp trình öùng duïng Web trôû neân ñôn giaûn hôn. Tuy nhieân, nhöõng trang JSP naøy khi bieân dòch ñeà thoâng qua trang trung gian laø Java Sevrlet.

Bieân dòch trang JSP

Khi ngöôøi söû duïng goïi trang JSP laàn ñaàu tieân, Web Server trieäu goïi trình bieân dòch dòch trang JSP (trong tröôøng hôïp naøy laø JDK) thaønh taäp tin Java, keá ñeán taäp tin java (Java Servlet) naøy seõ bieân dòch ra Class . Sau ñoù, trang class thöïc thi vaø traû veà keát quaû cho ngöôøi söû duïng nhö hình 1-9.

Hình 1-10: Quaù trình bieân dòch trang JSP

Taäp tin JSP

Web Server

Java Engine (JSK)

Taäp tin Java

Servlet

Taäp tin Class

Call

Compile

Parse

Instantiate

Instantiate Process and

Render

Request

Request

Response

Response

Giaùo vieân: Phaïm Höõu Khang

Page 8: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

2.4.

3.

Kòch baûn (script)

Noäi dung cuûa JSP coù theå khai baùo laãn loän vôùi HTML, chính vì vaäy baïn söû duïng caëp daáu <%= %> ñeå khai baùo maõ JSP. Chaúng haïn, chuùng ta khai baùo: <br> 1-Giaù trò bieán Str: <%=str%> 2-Giaù trò bieán i: <%=i%> 3-Giaù trò cuõ theå: <%=10%>

Trong tröôøng hôïp coù nhieàu khai baùo, baïn söû duïng Scriptlet, ñeàu naøy coù nghóa laø söû duïng caëp daáu treân nhö <%%> vôùi caùc khai baùo JSP vôùi cuù phaùp cuûa Java nhö sau: <% int i=0; String str=”Select * from tblABC”; out.println(str); %> -Khai baùo treân laø Scriptlet Giaù trò cuûa i: <br> <%=i%> -Khai baùo naøy laø Script

KEÁT LUAÄN

Trong baøi naøy, chuùng ta taäp trung tìm hieåu caùch caøi ñaët JSK vaø JRUN, sau ñoù caáu hình öùng duïng JSP trong JRUN hay söû duïng caáu hình maëc ñònh cuûa chuùng.

Ngoaøi ra, baïn laøm quen caùch khai baùo maõ JSP trong trang .jsp cuøng vôùi script hay scriptlet.

Giaùo vieân: Phaïm Höõu Khang

Page 9: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

Baøi 2

Baøi hoïc naøy chuùng ta seõ laøm quen vaø tìm hieåu cuù phaùp vaø moät soá phöông thöùc cô baûn cuûa JSP:

Caâu leänh. Bieán vaø kieåu döõ lieäu. Haèng. Baûng daõy Moät soá phöông thöùc cô baûn

1. KHAÙI NIEÄM VEÀ CUÙ PHAÙP JSP Cuù phaùp JSP chính laø cuù phaùp trong ngoân ngöõ Java, caùc baïn laøm quen vôùi ngoân

ngöõ Java thì coù lôïi theá trong laäp trình JSP. Ñeå laäp trình baèng ngoân ngöõ JSP caàn chuù yù nhöõng ñieåm sau:

Cuoái caâu leänh coù daáu ;

Moãi phöông thöùc ñeàu baét ñaàu { vaø ñoùng baèng daáu }

Khi khai baùo bieán thì kieãu döõ lieäu naèm tröôùc teân bieán

Neân coù giaù trò khôûi ñaàu cho bieán khai baùo

Phaûi coù chi chuù (comment) cho moãi feature môùi

Söû duïng daáu // ñeå giaûi thích cho moãi caâu ghi chuù

Söû duïng /* vaø */ cho moãi ñoaïn ghi chuù

Khai baùo bieán coù phaân bieät chöõ hoa hay thöôøng

Teân file vaø lôùp cuõng nhö nhö khai baùo bieán

2. KHAI BAÙO BIEÁN

Khi thöïc hieän moät vieäc khai baùo bieán trong java, baïn caàn phaûi bieát tuaân thuû quy ñònh nhö: kieãu döõ lieäu tröôùc teân bieán vaø coù giaù trò khôûi ñaàu

Xuaát phaùt töø nhöõng ñieàu ôû treân, khai baùo bieán trong Java nhö sau:

Datatype variable name [initial value]; int licount=0; String lsSQL=”Select * from tblusers where active=1”; double account[]; boolean checkerror=false;

3. KIEÅU DÖÕ LIEÄU

Baûng caùc kieåu döõ lieäu thoâng thöôøng

Type Bytes Range

Boolean 2

Giaùo vieân: Phaïm Höõu Khang

Page 10: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Byte 1

Char 2

Double 8 cho aâm, 4 soá döông

Float 4

Int 4

Long 8

Short 2

Connection

Statement

ResultSet

3.1. Kieåu Array

Kieãu maûng laø moät maûng soá lieäu do ngöôøi duøng ñònh nghóa, chuùng coù cuù phaùp nhö sau:

double account[]; // maûng soá double

hay coù theå khai baùo nhö sau

double account[]={0,0,1,45.95,6.5};

thöù töï index trong maûng baét ñaàu töø vò trí 0. Neáu nhö baïn khai baùo maûng hai chieàu, thì cuù phaùp khai baùo nhö sau:

double account[][]=new double[2][5];

Chaúng haïn khai baùo nhö sau:

<%

double account[][]=new double[2][100];

account[0][3]=43.95;

account[1][3]=43.95000;

out.println(“Account 0-3 is ” + account[0][3] );

out.println(“Account 1-3 is ” + account[1][3] );

%>

Khai baùo bieán String

<%

String strSQL=”select * from tblusers ”;

String strWhere=” where active=0”;

Giaùo vieân: Phaïm Höõu Khang

Page 11: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

out.println(“SQL Statement is ” + strSQL+strWhere );

%>

Khai baùo vôùi nhieàu loaïi döõ lieäu

<%

boolean bo;

byte by;

char c;

short s;

int i;

long l;

float f;

double d;

object o;

int[] intArray = new int[2];

object[] objectArray = new Object[2];

out.println("boolean: "+bo);

out.println("byte: "+by);

out.println("char: "+c);

out.println("short: "+s);

out.println("int: "+i);

out.println("long: "+l);

out.println("float: "+f);

out.println("double: "+d);

out.println("Object: "+o);

out.println("int[2]: "+intArray[0]+" "+intArray[1]);

out.println("Object[2]: "+objectArray[0]+" "+objectArray[1]);

%>

4. CAÙC PHÖÔNG THÖÙC VAØ PHÖÔNG THÖÙC TRONG JAVA

4.1. Phöông thöùc traû veà chieàu daøi maûng

Khi quan taâm ñeán chieàu daøi cuûa maûng thì baïn caàn theo cuù phaùp sau:

Array.length

Giaû söû raèng, baïn khai baùo bieán vôùi chieàu daøi maõng moät vaø hai chieàu

<%

double account[]={88,11,2.5,77};

double sum;

sum=account.length;

Giaùo vieân: Phaïm Höõu Khang

Page 12: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

out.println(“Length of Account is ” + sum);%>

4.2.

4.3.

4.4.

Chuyeån sang kieåu chuoãi

Khi baïn caàn chuyeãn ñoåi töø kieåu soá lieäu khaùc sang kieåu chuoãi, thì caàn khai baùo nhö sau:

String.valueOf(data);

Ví duï chuyeån ñoåi kieåu sang kieåu chuoãi

<%

double account[]={88,11,2.5,77};

String str;

str=String.valueOf(account[2]);

out.println(“String of Account 2 is ” + str);

%>

Noái chuoãi

Khi caàn thieát noái hai hay nhieàu chuoåi laïi vôùi nhau, baïn söû duïng phöông thöùc concat, thoâng thöôøng chuùng ta hay dung pheùp toaùn + ñeå noái hai hay nhieàu chuoãi laïi vôùi nhau.

Cuù phaùp concat nhö sau:

Str1.conact(Str2);

Keát noái chuoãi

<%

String str1=”Select * from tblemplyers”;

String str2=” where paid=1”;

str1=str1.conact(str2);

out.println(“String of Str1 is ” + str1);

%>

Chuoãi con

Khi baïn caàn laáy moät chuoãi con trong chuoãi lôùn, baïn caàn duøng ñeán phöông thöùc vôùi cuù phaùp nhö sau:

str1=str2.substring(start,chieàu daøi)

Ví duï khai baùo ñeå laáy chuoãi con

<%

String str1=”Select * from tblemplyers”;

String str2=str1.substring(9,5);

out.println(“Sub String of Str1 is ” + str2);

Giaùo vieân: Phaïm Höõu Khang

Page 13: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

%>

Nhöng neáu coù nhu caàu laáy ra moät kyù töï naøo ñoù trong chuoãi, thì baïn khoâng caàn duøng substring maø chæ söû duïng cuù phaùp charAt nhö sau:

Char=Str1.charAt(number);

Chaúng haïn, khai baùo ñeå laáy 1 kyù töï

<%

String str1=”Select * from tblemplyers”;

String str2=str1.charAt(5);

Out.println(“charAt of Str1 is ” + str2);

%>

4.5.

4.6.

Chuyeãn ñoåi String sang Array

Thoâng thöôøng trong khi tính toaù chuoãi, ñoâi khi cuõng caàn ñeán chuùng nhö moät maõng, lyù do ñoù chuùng ta coù phöông thöùc chuyeãn ñoåi nhö sau:

char char1[]=str1.toCharArray();

Chuyeån chuoãi sang maûng

<%

String str1=”Select * from tblemplyers”;

char char1=str1.toCharArray();

out.println(“Char of Str1[1] is ” + char1[5]);

%>

Thay theá chuoãi

Khi caàn thay theá moät chuoãi con naøo ñoù trong chuoãi meï thaønh chuoãi con khaùc, chuùng ta caàn ñeán phöông thöùc replace coù cuù phaùp nhö sau:

str1=str2.replace(“’”,”’’”);

str1=str2.replace(“a”,”k”);

Ví duï khai baùo thay theá chuoãi

<%

String str1=”Select * from tblemplyurs”;

str1= replaceString (str1,“u”,”o”);

str1= replaceString (str1,“’”,”’’”);

out.println(“Char of Str1 is ” + str1);

%>

Trong ñoù, khai baùo phöông thöùc replaceString nhö sau

Giaùo vieân: Phaïm Höõu Khang

Page 14: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<%!

public String replaceString(String sStr,String oldStr,String newStr)

{

sStr=(sStr==null?"":sStr);

String strVar=sStr;

String tmpStr="";

String finalStr="";

int stpos=0,endpos=0,strLen=0;

while (true)

{

strLen=strVar.length();

stpos=0;

endpos=strVar.indexOf(oldStr,stpos);

if (endpos==-1)

break;

tmpStr=strVar.substring(stpos,endpos);

tmpStr=tmpStr.concat(newStr);

strVar=strVar.substring(endpos+oldStr.length()>sStr.length()?endpos:endpos+oldStr.length(),strLen);

finalStr=finalStr.concat(tmpStr);

stpos=endpos;

}

finalStr=finalStr.concat(strVar);

return finalStr;

}

%>

4.7. Vò trí kyù töï trong chuoãi

Khi caàn bieát vò trí cuõa kyù töï hay chuoãi con naøo ñoù trong chuoãi, baïn söû duïng phöông thöùc sau:

virti=str1.indexOf(“select”);

virti=str1.indexOf(“o”);

Chaúng haïn tìm vò trí chuoãi hay kyù töï trong Chuoãi

<%

Giaùo vieân: Phaïm Höõu Khang

Page 15: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

String str1=”Select * from tblemplyurs”;

int vitri=str1.indexOf(“o”);

Out.println(“Location of \”o\” is ” + vitri);

%>

4.8.

5.

Kieåu chöõ

Neáu muoán chuyeãn ñoåi chöõ hoa sang thöôøng hay ngöôïc laïi, thì baïn duøng phöông thöùc coù cuù phaùp nhö sau:

Töø hoa sang thöôøng: str1.toLowerCase();

Töø thöôøng saung hoa: str1.toUpperCase();

Ví duï

<%

String str1=”Select * from tblemplyors”;

str1=str1.toLowerCase();

out.println(“LowerCase is ” + str1);

str1=str1.toUpperCase();

out.println(“UpperCase is ” + str1);

%>

TOÙM TAÉT

Trong baøi hoïc naøy chuùng toâi giôùi thieäu ñeán cho caùc baïn caùch khai baùo bieán, caùc kieåu döõ lieäu, ñoàng thôøi giuùp cho caùc baïn nhöõng phöông thöùc treân chuoãi vaø kyù töï trong JSP.

Giaùo vieân: Phaïm Höõu Khang

Page 16: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Baøi 3

PHEÙP TOAÙN VAØ PHAÙT BIEÅU COÙ ÑIEÀU KIEÄN

TRONG JSP

Chöông naøy chuùng ta seõ laøm quen vaø tìm hieåu toaùn töû, phaùt bieåu

coù ñieàu kieän vaø voøng laëp cuûa JSP.

Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy Toaùn töû. Pheùp gaùn trong Java Phaùt bieåu coù ñieàu khieån. Voøng laëp.

1. KHAÙI NIEÄM VEÀ CAÙC TOAÙN TÖÛ TRONG JSP

Khi baïn laäp trình treân JSP laø söû duïng cuù phaùp cuûa ngoân ngöõ Java. Töông töï nhö nhöõng ngoân ngöõ laäp trình khaùc, toaùn töû giuùp cho baïn thöïc hieän nhöõng pheùp toaùn nhö soá hoïc hay treân chuoãi.

Baûng sau ñaây giuùp cho baïn hình dung ñöôïc nhöõng toaùn töû söû duïng tron Java

Java ñòng nghóa toaù töû toaùn hoïc, quan heä, soá hoïc, bit, caste, class, selection, vaø noät soù pheùp toaùn gaùn.

Loaïi toaùn töû Toaùn töû Dieãn giaûi Ví duï

Arithmetic

+ - * / %

Addition Subtraction Multiplication Division Modulus

a + b a - b a * b a / b a % b

Relational

> < >= <= != ==

Greater than Less than Greater than or equal Less than or equal Not equal Equal

a > b a < b a >= b a <= b a != b a == b

Logical ! && Not

!a a && b

[email protected] 3-1

Page 17: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

|| AND OR

a || b

Bit-

manipulation

~ & | ^ << >> >>>

Complement AND OR Exclusive OR Left shift Right shift Zero-filled right shift

~a a & b a | b a ^ b a << b a >> B a >>> b

Assignment

= ++ -- += -= *= /= %= |= &= ^= <<= >>= >>>=

Assignment Increment and assign Decrement and assign Add and assign Subtract and assign Multiply and assign Divide and assign Take modulus and assignOR and assign AND and assign XOR and assign Left shift and assign Right shift and assign Zero-filled left shift and assign

a = b a++ a-- a += b a -= b a *= b a /= b a %= b a |= b a &= b a ^= b a <<= b a >>= b a >>>= b

Caste (type) Convert to type (char) b

Instance instanceof Is instance of class? a instanceof b

Allocation new Create a new object of a class

new A()

Selection ? : If...Then selection a ? b : c

2. GIÔÙI THIEÄU TOAÙN TÖÛ

Khi noùi ñeán toaùn töû, chuùng ta luoân lieân töôûng ñeán thöù töï xöû lyù, cuõng nhö trong toaùn hoïc, toaùn töû trong java cuõng co ñoä öu tieân add-subtract-multi-divide.

2.1. Toaùn töû AND

Khi thöïc hieän moät vieäc taêng leân giaù trò thì baïn söû duïng cuù phaùp nhö sau:

int i=0,j=0;

[email protected] 3-2

Page 18: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

j=i++;// i taêng sau khi gaùn i vaøo j, chính vì vaäy sau khi gaùn i vaøo j, j vaãn khoâng thay ñoåi

j=++i;// i taêng tröôùc khi gaùn i vaøo j, chính vì vaäy sau khi gaùn i vaøo j, j thay ñoåi.

Ví duï 3.1: Pheùp toaùn AND.

<%

int i=0,j=0; j=i++; out.println(“Value of j is ” + j); j=++i; out.println(“Value of j is ” + j); %>

2.2. Toaùn töû Not: ~ And !

Toaùn töû ~ ñaûo nghòch taát caû caùc bit cuûa tham soá, coøn toaùn töû ! ñaûo nghòch giaù trò cuûa giaù trò tröôùc ñoù

Ví duï 3.2: Pheùp toaùn ~ and !

<%

short i=32767; boolean b=true; out.println(“Value of ~ short is ” + ~i); out.println(“Value of !b is ” +!b); %>

2.3. Toaùn töû nhaân vaø chia: * and /

Baïn coù theå tham khaûo ví duï sau

Ví duï 3.3: Pheùp toaùn * vaø /, + vaø -

<% int i=767; double j=10.5; out.println(“Value of multi is ” + i*j); out.println(“Value of divide is ” +i/5);

[email protected] 3-3

Page 19: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

out.println(“Value of add is ” +i+5); out.println(“Value of subtract is ” +i-5); %>

2.4. Toaùn töû modulus: %

Khi chia moät soá cho moät soá, baïn caàn keát quaû laø soá dö cuûa pheùp chia ñoù thì duøng toaùn töû modulus

Ví duï 3.4: Pheùp toaùn %

<%

int i=10; int j=3; out.println(“Value of i%j is ” + i%j); %>

2.5. Toaùn töû quan heä: >=,>,<,<=,==,!=

Khi caàn so saùnh keát quaû giöõa hai toaùn haïn vôùi nhau, thoâng thöôøng baïn nghó ñeán pheùp toaùn so saùnh nhö laø baèng, lôùn hôn, nhoû hôn, ví duï sau dieãn giaûi cho baïn caùc toaùn töû treân:

Ví duï 3.5: Pheùp toaùn >,>=,<,<=,==,!=

<% int i=10; int j=3; if(i>=j) out.println(“result is true”); else out.println(“result is false”); if(i!=j) out.println(“result is not equals”); else out.println(“result is equals”); %>

[email protected] 3-4

Page 20: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

2.6. Toaùn töû && vaø ||

&& laø toaù töû and trong soù hoïc

|| laø toaùn töû or trong soá hoïc

Hai toaùn töû naøy raát thöôøng duøng trong khi laäp trình treân Java, ví duï döôùi ñaây dieãn giaûi cho baïn ñaày ñuû hai toaùn töû naøy. Chuù yù raèng khi söû duïng toaùn töû ñeàu coù keøm phaùt bieåu coù ñieàu kieän.

Ví duï 3.6: Pheùp toaùn && vaø ||

<%

boolean b=true; int j=3; if((j>=3) &&(b!=true)) out.println(“result is true”); if((j<3) ||(b==true)) out.println(“result is false”); %>

2.7. Toaùn töû ?:

Toaùn töû naøy thay theá cho phaùt bieåu coù ñieàu kieän if.. then .. else, khi baïn caàn laáy keát quaû theo ñieàu kieän naøo ñoù, neáu coù theå khoâng caàn phaùt bieåu if-else, thì haõy thay theá baèng toaùn töû ?:, cuù phaùp cuûa chuùng nhö sau:

str1=str2.equals(”khang”)?”Welcome to Java”:”Good bye JSP”;

Ví duï 3.7: Pheùp toaùn ?:

<% String str1=”Pham Huu Khang”; String str2 =“Khang”; out.println(“result is true”+ (str1.equals(str2)?”Welcome to Java”:”Good bye JSP”)); %>

[email protected] 3-5

Page 21: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

3. PHEÙP GAÙN

Khi gaùn moät giaù trò hay bieán vaøo moät bieán trong Java, baïn phaûi duøng ñeán pheùp gaùn, nhöng trong Java cuõng gioángnhö trong C thì coù nhöõng pheùp gaùn ñöôïc ñôn giaûn hoaù hay noùi ñuùng hôn laø chuaån hoaù ñeå ruùt goïn laïi trong khi vieát.

3.1.

3.2.

3.3.

4.

Pheùp gaùn thoâng thöôøng nhaát nhö sau:

int j=i;

String str1 =” Hello!”;

boolean b=true;

Pheùp gaùn theâm moät giaù trò laø 1

int k=0;

k++;

Pheùp gaùn theâm moät vôùi chính noù giaù trò

int k=0,j=1;

k+=j;

töông töï nhö vaäy chuùng ta coù k*=2, nghóa laø k=k*2

PHAÙT BIEÅU COÙ ÑIEÀU KIEÄN

Caùc phat bieåu coù ñieàu kieän nhö :

IF (ñieàu kieän) { caâu leänh; }

IF (ñieàu kieän) { caâu leänh; }ELSE { caâu leänh; }

switch (ñieàu kieän) {

case Value1

caâu leänh1;

break; }

While (ñieàu kieän)

Do - While (ñieàu kieän)

Break

Continue

[email protected] 3-6

Page 22: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

4.1. Phaùt bieåu IF (ñieàu kieän) { caâu leänh; }

Söû duïng phaùt bieåu if ñeå choïn loïc keát quaû khi ñieàu kieän ñuùng, ví duï nhö sau:

Ví duï 3.8: Phaùt bieåu IF

<% boolean b=true; int j=3; if((j>=3) &&(b!=true)) out.println(“result is true”); if((j<3) ||(b==true)) out.println(“result is false”); %>

4.2. Phaùt bieåu IF (ñieàu kieän) { caâu leänh; }ELSE { caâu leänh; }

Söû duïng phaùt bieåu if ñeå choïn loïc keát quaû khi ñieàu kieän ñuùng, vaø xuaát ra keát quaû khi ñieàu kieän sai, ví duï nhö sau:

Ví duï 3.9: Phaùt bieåu IF - ELSE

<%

boolean b=true; int j=3; if((j>=3) &&(b!=true)) out.println(“result is true”); else out.println(“result is false”); %>

4.3. Phaùt bieåu Switch (ñieàu kieän)

Phaùt bieåu switch laø phaàn cuûa phaùt bieåu if else nhieàu nhaùnh, khi coù nhieàu ñieàu kieän choïn löïa thì baïn söû duïng switch, cuù phaùp cuûa chuùng nhö sau:

Switch(ñieàu kieän) {

[email protected] 3-7

Page 23: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

case Value1

caâu leänh1;

break;

case Value2

caâu leänh2;

break;

default:

caâu leänh default; }

Break: duøng ñeå thoaùt ra khoûi switch khi thoaû moät case naøo ñoù trong switch, default: khi khoâng coù baát kyø giaù trò naøo thoaûn trong caùc case thì giaù trò cuoái cuøng laø defaule statement

Ví duï 3.10: Phaùt bieåu Switch

<%

int j=3; switch(j) { case 1: out.println(“Today is Monday”); break; case 2: out.println(“Today is Thurday”); break; case 3: out.println(“Today is Tueday”); break; default: out.println(“Today is Sunday”); } %>

[email protected] 3-8

Page 24: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

4.4. Phaùt bieåu While(ñieàu kieän)

Phaùt bieåu while thöïc thi nhöõng caâu leänh trong while khi ñieàu kieän coø ñuùng.

Ví duï 3.11: Phaùt bieåu While

<%

int j=1; while(j<=30) { out.println(“Number of j” + j); j++; %>

4.5. Phaùt bieåu For

Phaùt bieåu for duøng cho voøng laëp coù giôùi haïn cho tröôùc, cuù phaùp coù daïng nhö sau:

int i=0;

for(i=1;i<10;i++) {

caâu leänh; }

Ví duï 3.12: Phaùt bieåu For

<%

int mang[]={3,5,6,7,8,9}; for (int j=0;j<mang.length;j++) { out.println(“Phan tu mang “+j+” : ”+mang[j]); } %>

TOÙM TAÉT 5.

Trong baøi hoïc naøy chuùng toâi giôùi thieäu ñeán cho caùc baïn caùc pheùp gaùn, caùc toaùn töû, ñoàng thôøi giuùp cho caùc baïn hieåu theâm vaøo caùc phaùt bieåu coù ñieàu kieän nhö while, for, switch, ….

[email protected] 3-9

Page 25: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Baøi 4

ÑOÁI TÖÔÏNG SESSION, REQUEST, RESPONSE

TRONG JSP

Chöông naøy chuùng ta seõ laøm quen caùc ñoái töôïng thöôøng söû duïng trong

quaù trình thieát keá trang JSP.

Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy Ñoái töôïng Request. Ñoái töôïng Response.

ÑOÁI TÖÔÏNG REQUEST Khi muoán laáy giaù trò töø moät theû nhaäp lieäu ñeä trình (submit) töø form hay töø chuoãi QueryString, ñieàu naøy coù nghóa laø cho pheùp laáy giaù trò töø client gôûi leân server, ñoái tröôøng hôïp naøy baïn söû duïng ñoái töôïng Request. Ñoái töôïng naøy thuoäc lôùp javax.servlet.ServletRequest.

1.

1.1. Request vôùi töø theû nhaäp lieäu

Ví duï chuùng ta khai baùo trang HTML hay JSP coù theû form, beân trong theû form khai baùo caùc theû nhaäp lieäu nhö input, select, textarea nhö ví duï 4-1.

<%@ page contentType="text/html; charset=UTF-8" %>

<html> <head> <title>JSP's Objects</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" > <tr><td></td><td>Registration</td></tr> <form name=form1 action=ex2.jsp method=post> <table border=0> <tr> <td>Name: </td><td><input type=text name=txtname></td></tr> <tr><td>Province: </td><td><select name=province> <option value=HAN> Ha Noi </option> <option value=HUE> Hue </option> <option value=HCM> Ho Chi Minh </option> </select></td></tr> <tr><td>Description: </td><td> <textarea name=txtdesc cols=30 rows=5></textarea></td> </tr> <tr><td></td><td><input type=submit value="Submit"></td></tr> </table> </form> </body> </html>

[email protected] 3-1

Page 26: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Khi ngöôøi söû duïng goïi trang JSP naøy treân trình duyeät vaø nhaäp caùc thoâng tin yeâu caàu nhö hình 4-1.

Hình 4-1: Nhaäp lieäu

Ñeå laáy ñöôïc giaù trò cuûa caùc phaàn ñaõ nhaäp treân hình 4-1, chuùng ta söû duïng phöông thöùc getParameter cuûa ñoái töôïng request nhö ví duï 4-2.

<%@ page contentType="text/html; charset=UTF-8" %>

<html> <head> <title>JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <h4>Confirmation</h4> <hr size=1><br> <% String name=request.getParameter("txtname"); String province=request.getParameter("province"); String desc=request.getParameter("txtdesc"); out.println("Name is "+ name +"<br>"); out.println("Province is " + province +"<br>"); out.println("Description is " + desc +"<br>"); %> </body> </html>

Keát quaû trình baøy nhö hình 4-2 neáu thoâng tin nhaäp gioáng nhö hình 4-1.

[email protected] 3-2

Page 27: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 4-2: Söû duïng phöông thöùc getParameter

1.2. Request vôùi töø tham soá treân QueryString

Töông töï nhö treân, trong tröôøng hôïp baïn muoán laáy caùc giaù trò cuûa caùc tham soá treân QueryString, baïn cuõng söû duïng phöông thöùc getParameter cuûa ñoái töôïng rquest. Chaúng haïn, chuùng ta khai baùo trang JSP coù theû input vaø söû duïng phöông thöùc get trong theû form nhö ví duï 4-3.

<%@ page contentType="text/html; charset=UTF-8" %>

<html> <head> <title>JSP's Objects</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" > <tr><td></td><td><b>Tim kiem va Liet ket</b></td></tr> <form name=form1 action=ex4.jsp method=get> <table border=0> <tr> <td>Keyword: </td><td><input type=text name=keyword></td></tr> <tr><td></td><td><input type=submit value="Submit"></td></tr> </table> </form> </body> </html>

Khi ngöôøi söû duïng nhaäp moät töø khoaù naøo ñoù vaø nhaán Submit, trang ex4.jsp seõ ñöôïc trieäu goïi. Chaúng haïn, chuùng ta nhaäp töø khoaù laø SQL Server nhö hình 4-3.

[email protected] 3-3

Page 28: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 4-3: Phöông thöùc GET

Khi trang ex4.jsp trieäu goïi, treân chuoãi QueryString xuaát hieän http://localhost:81/jsp/chapter04/ex4.jsp?keyword=SQL+Server nhö hình 4-4.

Hình 4-4: Laáy giaù trò töø QueryString

Ñeå laáy giaù trò töø chuoãi QueryString, chuùng ta söû duïng phöông thöùc getParemeter cuûa ñoái töôïng request nhö ví duï 4-4.

<%@ page contentType="text/html; charset=UTF-8" %>

<%

[email protected] 3-4

Page 29: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

// Laáy giaù trò keyword töø trang ex3.jsp String keyword=request.getParameter("keyword");

// Laáy giaù trò sort töø trang QueryString String sort=request.getParameter("sort"); %> <html> <head> <title>JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <h4>Result</h4>

<!--Khai baùo caùc link ñeå giöõ laïi keyword vaø khai baùo giaù trò cho tham soá sort--> <a href="ex4.jsp?keyword=<%=keyword%>&sort=ItemName">ItemName</a> <a href="ex4.jsp?keyword=<%=keyword%>&sort=UnitPrice">Unit Price</a> <br> <hr size=1><br> <%

// xuaát giaù trò laáy ñöôïc out.println("Keyword is "+ keyword +"<br>"); sort=(sort==null)?"ItemName":sort; out.println("Sort by " + sort +"<br>"); %> </body> </html>

1.3. Request vôùi maûng tham soá

Neáu nhö coù nhieàu theû treân form hay tham soá treân QueryString cuøng teân, chuùng ta phaûi söû duïng phöông thöùc getParameterValues cuûa ñoái töôïng request. Ví duï, chuùng ta khai baùo trang JSP coù nhieàu theû input daïng checkbox cuøng teân nhöng khaùc giaù trò nhö ví duï 4-5.

<%@ page contentType="text/html; charset=UTF-8" %>

<html> <head> <title>JSP's Objects</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" > <table width="100%" border="0" cellspacing="0" cellpadding="0"> <form action=ex6.jsp method=post> <tr><td><b>#</b></td><td><b>DepartmentID</b></td><td><b>Department Name</b></td></tr> <tr><td colspan=3><hr size=1></td></tr> <% int i=0; while(i<10) { out.println("<tr><td width=50 valign=top><input type=checkbox "): out.println("name=chkid value='"+i+"'></td>"); out.println("<td width=100 valign=top>"+ i +"</td>"); out.println("<td width=150 valign=top>Phong ban thu " + i+ " </td><tr>"); i++; } %>

[email protected] 3-5

Page 30: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<tr><td colspan=3><hr size=1></td></tr> <tr><td colspan=3><input type=submit value="Delete"></td></tr> </table> </form> </body> </html>

Khi trieäu goïi trang JSP naøy treân trình duyeät, baèng caùch choïn moät vaøi phoøng ban ñeå xoaù baïn coù giao dieän nhö hình 4-5.

Hình 4-5: Theû cuøng teân vaø khaùc giaù trò

Nhö hình treân, baïn choïn caùc phoøng ban coù giaù trò laø 1,5,6,8, khi submit form naøy trang ex6.jsp seõ ñöôïc trieäu goïi, ñeå laáy ñöôïc giaù trò 1,5,6,8 nhö ñaõ choïn baèng caùch söû duïng phöông thöùc getParameterValues, baïn khai baùo nhö ví duï 4-6.

<%@ page contentType="text/html; charset=UTF-8" %>

<html> <head> <title>JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <h4>Delete </h4> <hr size=1><br>

[email protected] 3-6

Page 31: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<% String[] deleterecord=null; String delStr=""; deleterecord=request.getParameterValues("chkid"); if(deleterecord!=null){ for(int k=0;k<deleterecord.length;k++){ delStr+= deleterecord[k]+","; } delStr=delStr.substring(0,delStr.length()-1); } out.println("Select values are : " + delStr); %> </body> </html>

Khi ñoù, keát quaû trình baøy treân trình duyeät nhö hình 4-6, trong thöïc teá baïn coù theå gaùn giaù trò naøy vôùi chuoãi SQL vaø söû duïng pheùp toaùn IN hay NOT IN ñeå truy vaán hay thao taùc trong döõ lieäu.

Hình 4-6: Keát quaû laáy maûng giaù trò

1.4. Request keát hôïp vôùi JavaScript

Ngoaøi caùc caùch treân, khi laøm öùng duïng thöôøng chuùng ta trình baøy danh saùch maåu tin phuï thuoäc vaøo giaù trò choïn treân theû select hay checkbox hoaëc readiobutton, baïn coù theå söû duïng phöông thöùc getParameter cuûa ñoái töôïng request ñeå thöïc hieän yù ñònh naøy nhö ví duï 4-7.

<%@ page contentType="text/html; charset=UTF-8" %>

<%

// Laáy giaù trò choïn trong theû select coù teân selectid int selectid=0;

// Chuyeån qua soá nguyeân neáu coù choïn if (request.getParameter("selectid")!=null) { try { selectid=Integer.parseInt(request.getParameter("selectid"));

[email protected] 3-7

Page 32: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

} catch(Exception ex) { selectid=0; } } %> <html> <head> <title>JSP's Objects</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" > <table width="100%" border="0" cellspacing="0" cellpadding="0">

<!--Khai baùo theû select coù teân selectid--> <form action=ex7.jsp method=post name=form1> <tr><td colspan=2><h4>Show</h4></td><td> <select name=selectid onchange="document.form1.submit();"> <option value=0>Greater than 0</option> <option value=1>Greater than 1</option> <option value=2>Greater than 2</option> <option value=3>Greater than 3</option> <option value=5>Greater than 5</option> </select> <script>

// Choïn laïi giaù trò choïn tröôùc ñoù trong theû select coù teân selectid for(var j=0;j<form1.selectid.length;j++) { if(form1.selectid[j].value=="<%=selectid%>") form1.selectid.selectedIndex=j; } </script> </td></tr> </form> <tr><td><b>#</b></td><td><b>DepartmentID</b></td><td> <b>Department Name</b></td></tr> <tr><td colspan=3><hr size=1></td></tr> <%

// Trình baøy soá maåu tin >= giaù trò choïn trong theû select coù teân selectid int i=selectid; while(i<10) { out.println("<tr><td width=50 valign=top>"); out.println("<input type=checkbox name=chkid value='"+i+"'></td>"); out.println("<td width=100>"+ i +"</td>"); out.println("<td width=150>Phong ban thu " + i+ " </td><tr>"); i++; } %> <tr><td colspan=3><hr size=1></td></tr> </table> </body> </html>

Laàn ñaàu tieân goïi ñeán trang ex7.jsp thì keát quaû trình baøy laø 10 phoøng ban, neáu ngöôøi söû duïng choïn giaù trò trong phaàn Show “Greater than ” thì soá maåu tin trình baøy lôn hôn hoaëc baèng giaù trò ñang choïn nhö hình 4-7.

[email protected] 3-8

Page 33: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 4-7: Trình baøy maåu tin choïn loïc

ÑOÁI TÖÔÏNG RESPONSE Khi muoán traû giaù trò töø server xuoáng client thì söû duïng ñoái töôïng response. Ñoái töôïng naøy thuoäc lôùp javax.servlet.ServletResponse.

Chaúng haïn, sau khi kieåm tra giaù trò username vaø password hôïp leä thì töï ñoäng chuyeån ñeán trang myaccount.jsp trong trang login_authentication.jsp.

Ñeå laøm ñieàu naøy, chuùng ta khai baùo trang login.jsp coù hai theû nhaäp lieäu laø username vaø password nhö ví duï 4-8.

2.

<%@ page contentType="text/html; charset=UTF-8" %>

<html> <head> <title>JSP</title> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> <script language="JavaScript"> // Khai baùo kieåm tra giaù trò nhaäp treân trình khaùch function checkinput(){ if(document.form1.username.value==""){ alert("Xin vui long nhap username"); document.form1.username.focus(); return false; } if(document.form1.password.value=="" ){ alert("Xin vui long nhap password"); document.form1.password.focus(); return false; } return true;

[email protected] 3-9

Page 34: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

} </script> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table width="100%" border="0" cellspacing="5" cellpadding="5"> <tr><td> <form action=login_authentication.jsp name=form1 method=post onSubmit="return checkinput();"> <table align=center> <tr> <td colspan="2" height="19"> <h4><b><font color="#FF0000"> <font color="#0000CC"> Administration Module</font> </font></b></h4><hr> </td> </tr><tr> <td colspan=2 height="19"> <div align="left">Please enter username and password</div> </td> </tr> <tr> <td height="19"> <div align="left">Username</div> </td> <td height="19"> <div align="left"> <input type="text" name="username" size="30" maxlength="50"> </div> </td> </tr> <tr> <td height="31"> <div align="left">Password</div> </td> <td height="31"> <div align="left"> <input type="password" name="password" size="30" maxlength="10"> </div> </td> </tr> <tr> <td >&nbsp;</td> <td>&nbsp;</td> </tr><tr> <td ><input type=submit value="Login"></td> <td ><input type=reset value=Reset></td> </tr> </table></form> </body> </html>

Khi trieäu goïi trang login.jsp treân trình duyeät nhö hình 4-8, neáu baïn khoâng nhaäp giaù trò cho username hay password thì cöûa soå thoâng baùo yeâu caàu xuaát hieän, quaù trình submit leân server chæ xaûy ra khi baïn nhaäp caû hai giaù trò hôïp leä.

[email protected] 3-10

Page 35: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 4-8: Ñaêng nhaäp

Khi submit thaønh coâng, trang login_authentication.jsp ñöôïc goïi, neáu username vaø password baïn nhaäp töông öùng laø khang, 123456 thì trang myaccount.jsp troû ñeán ngöôïc laïi thì goïi laïi trang login.jsp nhö ví duï 4-9.

<% String username=""; String password=""; username= request.getParameter("username"); password= request.getParameter("password"); if (username.equals("khang")){ if(password.equals("123456")){ response.sendRedirect("myaccount.jsp"); } else{ /*sai password*/ response.sendRedirect("login.jsp"); } } else{ /*sai user*/ response.sendRedirect("login.jsp"); } %>

TOÙM TAÉT 3.

Trong baøi hoïc naøy chuùng toâi giôùi thieäu ñeán cho caùc baïn hai ñoái töôïng chính laø request vaø response.

[email protected] 3-11

Page 36: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Baøi 5

ÑOÁI TÖÔÏNG SESSION

TRONG JSP

Trong baøi tröôùc chuùng ta seõ laøm quen caùc ñoái töôïng thöôøng söû duïng

trong quaù trình thieát keá trang JSP nhö Request, Response. Trong baøi naøy chuùng ta tieáp tuïc laøm vieäc vôùi ñoái töôïng Session.

Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy

Ñoái töôïng Session. ÖÙng duïng ñoái töôïng Session.

ÑOÁI TÖÔÏNG SESSION Khi muoán truyeàn giaù trò töø trang trang web naøy sang trang web khaùc trong moät phieân laøm vieäc thì söû duïng duïng ñoái töôïng Session. Ñoái töôïng naøy thuoäc lôùp HttpSession.

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpSession.html

1.

1.1. Nhaän daïng moät phieân laøm vieäc

Moãi khi coù moät phieân laøm vieäc ñöôïc taïo ra, thì trình chuû web seõ caáp moät ñònh danh laø moät chuoãi bao goàm caùc kyù töï vaø soá cho phieân laøm vieäc ñoù. Chaúng haïn, baïn môû moät browser vaø goïi trang jsp töø web site, khi ñoù phieân laøm vieäc ñöôïc taïo ra cuøng vôùi ñònh danh duy nhaát.

Khi keát thuùc phieân laøm vieäc, ñònh danh naøy bò thu laïi vaø phaân phaùt laïi cho phieân laøm vieäc khaùc môùi taïo ra.

Ñeå laáy ñöôïc ñònh danh naøy, baïn söû duïng phöông thöùc getId nhö ví duï 5-1.

<%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <title>JSP's Objects</title> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" > <table>

<tr><td> Identify ID: <%=session.getId()%> </td></tr> </table>

</body> </html>

Khi ngöôøi söû duïng goïi trang JSP naøy treân trình duyeät giaù trò cuûa ñònh danh trình baøy nhö hình 4-1.

[email protected] 3-1

Page 37: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 5-1: Ñònh danh cuûa phieân laøm vieäc

1.2. Khôûi taïo vaø gaùn giaù trò cho session

Khi caàn truyeàn gt töø trang JSP naøy sang trang JSP khaùc, baèng caùch khôûi taïo dt Session vaø gaùn cho chuùng thôøi gian töông öùng, sau ñoù baïn coù theå truy caäp vaøo ñoái töôïng naøy trong trang JSP khaùc trong cuøng phieân laøm vieäc.

Ñeå laøm ñieàu naøy, baïn söû duïng phöông thöùc setValue voùi cuù phaùp nhö sau: session.putValue(“teân session”,”giaù trò”);

Ví duï sau khi cung caáp username/password vaø nhaán nuùt Submit töø trang login.jsp nhö hình 5-2, trang login_authentication.jsp seõ ñöôïc trieäu goïi.

Hình 5-2: Trang login.jsp

[email protected] 3-2

Page 38: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Neáu username laø khang vaø password laø 123456 thì trang myaccount.jsp seõ ñöôïc trieäu goïi. Tröôùc khi trieäu goïi trang myaccount.jsp, chuùng ta khôûi taïo moät soá session duøng ñeå söû duïng cho phieân laøm vieäc naøy chaúng haïn userid, username, fullname, email nhö ví duï 5-2 (login_authentication.jsp).

<% String username=""; String password=""; username= request.getParameter("username"); password= request.getParameter("password"); if (username.equals("khang")){ if(password.equals("123456")){ session.putValue("userid","123"); session.putValue("username",username); session.putValue("fullname","huukhang.com"); session.putValue("email","[email protected]"); response.sendRedirect("myaccount.jsp"); } else{ /*sai password*/ response.sendRedirect("login.jsp"); } } else{ /*sai user*/ response.sendRedirect("login.jsp"); } %>

1.3. Laáy giaù trò töø session

Sau khi ñaêng nhaäp thaønh coâng, nhöõng ñoái töôïng session ñöôïc taïo ra, baèng caùch söû duïng phöông thöùc getValue, baïn coù theå laáy giaù trò töø caùc session naøy nhö ví duï 5-3 (myaccount.jsp).

[email protected] 3-3

Page 39: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 5-3: Laáy giaù trò töø Session

Ñeå laáy giaù trò töø caùc session khai baùo trong trang login_authentication.jsp vaø trình baøy treân trang myaccount.jsp, baïn khai baùo nhö ví duï 5-3.

<%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <title>JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table width="100%" border="0" cellspacing="5" cellpadding="5"> <tr><td> <h4>Welcome to JSP</h4> </td></tr> <tr><td><a href="logout.jsp">logout</a></td></tr> <tr><td>userid: =<%=session.getValue("userid")%></td></tr> <tr><td>username: =<%=session.getValue("username")%></td></tr> <tr><td>fullname: =<%=session.getValue("fullname")%></td></tr> <tr><td>email: =<%=session.getValue("email")%> </td></tr> </table> </body> </html>

1.4. Huyû session

Sau khi khoâng söû duïng ñoái töôïng session, baïn caàn söû duïng phöông thöùc ñeå huyø session ñoù thaøy vì ñeå chuùng toàn taïi, bôûi ví neáu chuùng khoâng söû duïng maø vaãn toàn thì web server vaãn phaûi quaûnl lyù. Chaúng haïn, khi chuùng ta logout khoûi öùng duïng website thì trang logout.jsp seõ ñöôïc tieäu goïi, ba72ng caùch söû duïng caùc phöông thöùc removeValue ví duï 5-4.

[email protected] 3-4

Page 40: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<% session.removeValue("userid"); session.removeValue("username"); session.removeValue("fullname"); session.removeValue("email"); response.sendRedirect("login.jsp"); %>

Neáu baïn trieäu goïi laïi trang trang myaccount.jsp treân trình duyeät, thì keát quaû trình baøy nhö hình 5-4.

Hình 5-4: Huyû caùc session

Nhö hình treân, khi session chöa taïo ra, neáu baïn truy caäp ñeán giaù trò cuûa chuùng thì giaù trò ñoù laø null, chính vì vaäy trong moät soá trang baét buoäc ngöôøi söû duïng phaûi ñaêng nhaäp roài môùi söû duïng thì baïn caàn phaûi kieåm tra session, neáu session baèng null thì troû ñeán trang login.jsp.

Chaúng haïn trong tröôøng hôïp naøy chuùng ta coù ví duï 5-5, cho pheùp söû duïng khi ngöôøi söû duïng ñaõ ñaêng nhaäp, ñieàu naøy coù nghóa laø session coù teân userid phaûi toàn taïi.

<%@ page contentType="text/html; charset=UTF-8" %> <% if (session.getValue("userid")==null) response.sendRedirect("login.jsp"); %> <html> <head> <title>JSP</title> <LINK href="style.css" rel=stylesheet>

[email protected] 3-5

Page 41: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table width="100%" border="0" cellspacing="5" cellpadding="5"> <tr><td> <h4>Welcome to JSP</h4> </td></tr> </table> </body> </html>

TOÙM TAÉT 2.

Trong baøi hoïc naøy chuùng toâi giôùi thieäu ñeán cho caùc baïn ñoái töôïng chính laø session, sau khi coù ñoái töôïng naøy, baïn coù theå keát hôïp vôùi hai ñoái töôïng request vaø response ñeå xaây döïng chöùc naêng ñaêng nhaäp heä thoáng.

[email protected] 3-6

Page 42: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Baøi 6

PHÖÔNG THÖÙC VAØ

CHEØN TAÄP TIN

Khi xaây döïng öùng duïng Web noùi chung vaø öùng duïng JSP noùi rieâng,

vieäc thoáng nhaát hoaù giao dieän laø ñieàu caàn thieát, chaúng haïn moïi trang JSP cuûa öùng duïng ñeàu phaûi coù kích thöôùc phaàn top, left, right, bottom vaø thaân gioáng nhau. Töông töï nhö vaäy moïi font chöõ vaø kích thöôùc cho töøng phaàn noäi dung cuõng laø ñieàu baïn phaûi thöïc hieän ñeå öùng duïng mang tính chuyeân nghieäp hôn

Ngoaøi ra, nhö nhöõng baøi keá tieáp chuùng ta söû duïng chuoãi keát noái hay khai baùo ñoái töôïng Connection söû duïng trong moãi trang, taát caû nhöõng ñieàu naøy ñeàu daãn ñeán vieäc quaûn lyù khoù khaên khi caàn thay ñoåi moät trong nhöõng phaàn lieân quan. Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy

Xaây döïng taäp tin ñònh daïng noäi dung Thoáng nhaát kích thöôùc cuûa moïi trang JSP Khai baùo haøm vaø thuû tuïc duøng chung Söû duïng haøm vaø thuû tuïc duøng chung

1. XAÂY DÖÏNG TAÄP TIN ÑÒNH DAÏNG NOÄI DUNG

Khi trình baøy noäi dung treân trang HTML hay trang JSP, ñeå thoáng nhaát ñònh daïng chuoãi trong theû body hay theû div chaúng haïn baïn caàn khai baùo theû style trong theû <head>.

<style>

A { COLOR: #003063; TEXT-DECORATION: none } A:hover { COLOR: #003063; TEXT-DECORATION: underline } A:link { FONT-WEIGHT: bold; COLOR: red; TEXT-DECORATION: none } A:visited { FONT-WEIGHT: bold; COLOR: black; TEXT-DECORATION: none } .title { FONT-WEIGHT: normal; FONT-SIZE: 22px } .text{ FONT: 11px Arial, Helvetica, sans-serif }

[email protected] 3-1

Page 43: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

</style>

Trong ñoù, A töông öùng vôùi lieân keát (chuoãi trong theû <a>) coù ñònh daïng öùng vôùi tröôøng hôïp lieân keát, di chuyeån con chuoät, choïn lieân keát.

A { COLOR: #003063; TEXT-DECORATION: none } A:hover { COLOR: #003063; TEXT-DECORATION: underline } A:link { FONT-WEIGHT: bold; COLOR: red; TEXT-DECORATION: none } A:visited { FONT-WEIGHT: bold; COLOR: black; TEXT-DECORATION: none }

Chaúng haïn, chuùng ta khai baùo trang JSP vôùi noäi dung ñöôïc aùp duïng vôùi kieåu ñònh daïng khai baùo trong theû style nhö vuù duï 6-1.

Ví duï 6-1: Khai baùo theû style

<%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <title>Style trong JSP</title> <style> A { COLOR: #003063; TEXT-DECORATION: none } A:hover { COLOR: #003063; TEXT-DECORATION: underline } A:link { FONT-WEIGHT: bold; COLOR: red; TEXT-DECORATION: none } A:visited { FONT-WEIGHT: bold; COLOR: black; TEXT-DECORATION: none } .title { FONT-WEIGHT: normal; FONT-SIZE: 22px; COLOR: #003063; } .text{ FONT: 11px Arial, Helvetica, sans-serif } </style> </head> <body>

[email protected] 3-2

Page 44: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<h4>Style Tag</h4> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TR> <TD vAlign=top class=title> *** Quaûn Trò SQL Server 2000 *** </TD> </TR> <TR> <TD class=text> <div align=justify> Tìm hieåu caùch caøi ñaët, caáu hình, quaûn trò, backup & restore, import & export, thieát keá, laäp trình, töï ñoäng hoaù taùc vuï quaûn trò, baûn sao döõ lieäu, baûo maät vaø choáng thaâm nhaäp döõ lieäu baèng. <b>SQL Injection</b>.</div> </TD> </TR> <TR><TD><hr size=1 color=red></TD</TR> <TR><TD>Welcome to <a href="www.huukhang.com" class=> www.huukhang.com</a></TD </TR> </TABLE> </body> </html>

Khi trieäu goïi trang ex1.jsp treân trình duyeät, noäi dung cuûa trang web ñöôïc ñònh daïng theo theû style nhö hình 6-1.

Hình 6-1: AÙp duïng theû style

[email protected] 3-3

Page 45: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Töông töï nhö vaäy khi baïn muoán thoáng nhaát noäi dung trong nhöõng theû khaùc cuûa moät trang web thì khai baùo moät ñònh daïng trong theû style. Tuy nhieân, khi ñaët teân truøng vôùi theû HTML, moïi theû ñoù trong trang seõ cuøng chung moät ñònh daïng. Chaúng haïn, baïn khai baùo ñònh daïng cho theû td nhö sau:

TD { FONT: 10px Arial, Helvetica, sans-serif }

Moïi noäi dung trình baøy trong theû td seõ coù ñònh daïng nhö treân. Neáu baïn muoán coù ñònh daïng khaùc thì khai baùo thuoäc tính class cho theû td ñoù, ví duï söû duïng ñònh daïng khaùc cho theû td:

<td class=text>ABC</td>

Thay vì chuoãi ABC seõ coù ñònh daïng laø FONT: 10px Arial, Helvetica, sans-serif thì chuùng seõ coù ñònh daïng cuûa FONT: 11px Arial, Helvetica, sans-serif.

Chuù yù raèng, trong moãi trang web baïn phaûi khai baùo theû style vaø ñònh nghóa thoáng nhaát cho caùc theû. Khi coù söï thay ñoåi baïn phaûi thay ñoåi trong moïi trang web. Ñeå söû duïng chung cho moïi trang web trong öùng duïng, baïn caàn xaây döïng moät taäp tin style, taäp tin ñöôïc bieát ñeán vôùi teân goïi custom style sheet (css).

Baát kyø trang web naøo trong öùng duïng, muoán aùp duïng kieåu ñònh daïng trong taäp tin css thì khai baùo lieân keát taäp tin css baèng theû link.

Ví duï, chuùng ta khai baùo taäp tin style.css bao goàm caùc ñònh daïng nhö ví duï 6-2.

Ví duï 6-2: Khai baùo taäp tin css

A { COLOR: #003063; TEXT-DECORATION: none } A:hover { COLOR: #003063; TEXT-DECORATION: underline } A:link { FONT-WEIGHT: bold; COLOR: red; TEXT-DECORATION: none } A:visited { FONT-WEIGHT: bold; COLOR: black; TEXT-DECORATION: none } .title { FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #003063; } .text{ FONT: 11px Arial, Helvetica, sans-serif }

Sau ñoù trong trang JSP, baïn khai baùo lieân keát taäp tin naøy baèng theû link, neáu muoán aùp duïng ñònh daïng naøy trong moãi theû HTML baïn söû duïng thuoäc tính class nhö khai baùo ñònh daïng cuûa theû style ngay trong trang ñoù nhö ví duï 6-3.

Ví duï 6-3: Khai baùo söû duïng taäp tin css

[email protected] 3-4

Page 46: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<html> <head> <title> Welcome to Link Style Sheet File </title> <LINK href="style.css" rel=stylesheet> <META http-equiv=Content-Type content="text/html; charset=utf-8"> </head> <body> <h4>Style File</h4> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TR> <TD vAlign=top class=title> *** Quaûn Trò SQL Server 2000 *** </TD> </TR> <TR> <TD class=text> <div align=justify> Tìm hieåu caùch caøi ñaët, caáu hình, quaûn trò, backup & restore, import & export, thieát keá, laäp trình, töï ñoäng hoaù taùc vuï quaûn trò, baûn sao döõ lieäu, baûo maät vaø choáng thaâm nhaäp döõ lieäu baèng. <b>SQL Injection</b>.</div> </TD> </TR> <TR><TD><hr size=1 color=red></TD</TR> <TR><TD>Welcome to <a href="www.huukhang.com" class=> www.huukhang.com</a></TD </TR> </TABLE> </body> </html>

Trieäu goïi trang ex.jsp treân trình duyeät nhö hình 6-3, maøu vaø kích thöôùc font cuøng vôùi kieåu chöõa cuûa noäi dung khoâng thay ñoåi so vôùi ex1.jsp, bôûi vì phaàn theû style ñöôïc taùch ra thaønh taäp tin style.css, sau ñoù duøng theû link ñeå lieân keát taäp tin css naøy vaøo trang jsp trôû laïi.

[email protected] 3-5

Page 47: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 6-3: Lieân keát taäp tin css

Chuù yù raèng, neáu khai baùo thuoäc tính class trong theû <table> thì nhöõng noäi dung trong theû <table> seõ coù ñònh daïng theo ñònh daïng khai baùo trong thuoäc tính class. Töông töï, neáu khai baùo thuoäc tính class trong theû <tr> thì noäi dung trong theû <tr> seõ coù ñònh daïng gioáng nhö ñònh daïng khai baùo trong thoâng tin class.

2. THOÁNG NHAÁT KÍCH THÖÔÙC CUÛA MOÏI TRANG JSP

Khi xaây döïng öùng duïng web chuyeân nghieäp, ñieàu ñaàu tieân baïn neân quan taâm laø söï thoáng nhaát veà kích thöôùc cuûa caùc phaàn treân trang web. Ñieàu naøy coù nghóa laø khi ngöôøi söû duïng thay ñoåi trang web khi duyeät, phaàn top, left, right, bottom coù kích thöôùc nhö nhau.

Ñeå laøm ñieàu naøy, baïn chia trang web ra thaønh 5 phaàn: top, left, right, body vaø bottom.

Phaàn top thöôøng trình baøy caùc thuoäc tính nhö quaûn caùo (baner), logo (bieåu töôïng cuûa coâng ty), menu (thöïc ñôn cuûa öùng duïng) vaø moät soá thoâng tin khaùc.

Phaàn left laø thoâng tin veà caùc menu phuï hay coøn goïi laø menu cuûa menu chính, beân caïnh menu con naøy trang web thöôøng coù caùc lieân keát veà lieân heä, quaûng caùo, mailing list (ñaêng kyù email), gôûi ñeán baïn beø (send to friend), ....

Ñoái vôùi phaàn right, thöôøng laø phaàn giôùi thieäu veà caùc thoâng ñaëc bieät vaø quaûng caùo, chaúng haïn ñoái vôùi öùng duïng baùn saùch, phaàn right thöôøng laø danh saùch caùc nhoùm saùch baùn chaïy, saép phaùt haønh, ...

Phaàn bottom thöôøng thoâng tin lieân laïc cuûa coâng ty, chuû nhaân cuûa web site vaø baûn quyeàn. Ngoaøi ra, phaàn bottom ñoâi khi laø danh saùch caùc menu con khaùc.

Toùm laïi, tuyø thuoäc vaøo yù töôûng thieát keá moãi phaàn nhö treân bao goàm caùc thuoäc tính maø nhaø thieát keá caàn trình baøy sao cho phuø hôïp. Tuy nhieân, phaàn body laø phaàn trình baøy noäi dung chính cuûa moãi trang web. Ngoaøi ra, tuyø vaøo töøng tröôøng hôïp cuï theå, trang web coù theå khoâng coù phaàn left vaø right.

[email protected] 3-6

Page 48: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Nhö vaäy, chuùng ta seõ chia trang web ra thaønh 5 phaàn, phaàn body chính laø phaàn chính cuûa trang web ñoù, coøn 4 phaàn coøn laïi ñöôïc cheøn vaøo khi coù nhu caàu.

Chaúng haïn, coù nhöõng trang web do thoâng tin trình baøy trong phaàn body nhieàu, neân caàn khoâng gia lôùn hôn, baïn coù theå khoâng caàn söû duïng hai phaàn left vaø right.

Ñeå laøm ñieàu naøy, tröôùc tieân chuùng ta thieát keá trang sample.jsp coù 5 phaàn nhö hình 6-3.

Hình 6-3: Trang sample.jsp

------------------------------------------------------------------------------------------- Löu yù:

Taïo moät table goàm 3 haøng 3 coät vaø khai baùo border=1 ñeå ñeã canh leà sau ñoù baïn coù theå khai baùo laïi thuoäc tính naøy baèng 0.

• • • •

Phaàn top vaø bottom laø moät haøng vaø merge 3 coät thaønh 1. Beân trong moãi phaàn coù theå coù moät hay nhieàu theû table khaùc. Coù theå khoâng coù phaàn left vaø right nhöng baét buoäc phaàn top vaø bottom phaûi coù. Baïn coù theå söû duïng chieàu roäng cuûa table theo kích thöôùc töông ñoái (%) hay soá chæ ñònh, ñoái vôùi maøn hình 600*800 thì chieàu roäng thöôøng söû duïng laø 780, khi ngöôøi söû duïng choïn ñoä phaân giaûi cuûa maøn hình lôùn hôn thì kích thöôùc cuûa table naøy khoâng thay ñoåi, trong khi ñoù noäi dung seõ phuû ñaày maøn hình khi baïn khai baùo kích thöôùc theo 100%.

-------------------------------------------------------------------------------------------

Ñeå coù giao dieän nhö trang sample.jsp nhö treân, baïn coù theå khai baùo nhö ví duï 6-3.

Ví duï 6-3: Noäi dung trang sample.jsp

<html> <head> <title> Welcome to Including File </title> <LINK href="style.css" rel=stylesheet> <META http-equiv=Content-Type content="text/html; charset=utf-8">

[email protected] 3-7

Page 49: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

</head> <body bottomMargin=0 leftMargin=0 topMargin=0 rightMargin=0> <TABLE cellSpacing=2 cellPadding=2 width="778" border=1 align=center> <TR HEIGHT="100"> <TD Align=center colspan=3> TOP </TD> </TR> <TR HEIGHT="280"> <TD vAlign=top width="20%"> LEFT </TD> <TD vAlign=top width="60%"> BODY </TD> <TD vAlign=top width="20%"> RIGHT </TD> </TR> <TR HEIGHT="50"> <TD colspan=3 align=center> BOTTOM </TD </TR> </TABLE> </body> </html>

Trong tröôøng hôïp baïn muoán coù ñöôøng phaân caùch giöõa moãi phaàn baèng image, baïn coù theå khai baùo laïi trang sample.jsp coù 5 haøng vaø 5 coät nhö template.jsp nhö hình 6-4.

Hình 2-4: Phaân caùch coù vieàng

Ñeå trình baøy trang tempale.jsp nhö hình 6-4, baïn khai baùo noäi dung trang naøy nhö ví duï 6-4.

Ví duï 6-4: Khai baùo template.jsp

[email protected] 3-8

Page 50: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<html> <head> <title> Welcome to Including File </title> <LINK href="style.css" rel=stylesheet> <META http-equiv=Content-Type content="text/html; charset=utf-8"> </head> <body bottomMargin=0 leftMargin=0 topMargin=0 rightMargin=0> <TABLE width="778" border=0 cellSpacing=0 cellPadding=0 align=center> <TR HEIGHT="100"> <TD Align=center colspan=5> TOP </TD> </TR>

<!---Khai baùo ñöôøng phaân caùch---> <TR HEIGHT="1"> <TD colspan=5 bgcolor=gray></TD> </TR> <TR HEIGHT="280"> <TD vAlign=top width="150">LEFT</TD>

<!---Khai baùo ñöôøng phaân caùch---> <TD bgcolor=gray width="1"></TD> <TD vAlign=top width="476">BODY</TD>

<!---Khai baùo ñöôøng phaân caùch---> <TD bgcolor=gray width="1"></TD> <TD vAlign=top width="150">RIGHT</TD> </TR>

<!---Khai baùo ñöôøng phaân caùch---> <TR HEIGHT="1"> <TD colspan=5 bgcolor=gray></TD> </TR> <TR HEIGHT="50"> <TD colspan=5 align=center> BOTTOM </TD </TR> </TABLE> </body> </html>

Sau ñoù taùch trang template.jsp naøy thaønh 5 trang khaùc nhau ñöôïc ñaët teân töông öùng laø top.htm, left.htm, right.htm vaø bottom.htm, trong ñoù phaàn body töông öùng vôùi trang templates.jsp.

Ñeå khai baùo cheøn taäp tin trong trang jsp, baïn söû duïng cuù phaùp nhö sau: <%@include file=”filename”%>

Trong ñoù trang templates.jsp khai baùo cheøn top.htm, left.htm, right.htm vaø bottom.htm nhö ví duï 6-5.

Ví duï 6-5: Khai baùo cheøn taäp tin trong templates.jsp

<html> <head> <title> Welcome to HUUKHANG.COM </title>

[email protected] 3-9

Page 51: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<LINK href="style.css" rel=stylesheet> <META http-equiv=Content-Type content="text/html; charset=utf-8"> </head> <body bottomMargin=0 leftMargin=0 topMargin=0 rightMargin=0> <TABLE width="778" border=0 cellSpacing=0 cellPadding=0 align=center> <TR HEIGHT="100"> <TD Align=center colspan=5> <%@include file="top.htm"%> </TD> </TR>

<!---Khai baùo ñöôøng phaân caùch---> <TR HEIGHT="1"> <TD colspan=5 bgcolor=gray></TD> </TR> <TR HEIGHT="280"> <TD vAlign=top width="150"> <%@include file="left.htm"%> </TD>

<!---Khai baùo ñöôøng phaân caùch---> <TD bgcolor=gray width="1"></TD> <TD vAlign=top width="476">BODY</TD>

<!---Khai baùo ñöôøng phaân caùch---> <TD bgcolor=gray width="1"></TD> <TD vAlign=top width="150"> <%@include file="right.htm"%> </TD> </TR>

<!---Khai baùo ñöôøng phaân caùch---> <TR HEIGHT="1"> <TD colspan=5 bgcolor=gray></TD> </TR> <TR HEIGHT="50"> <TD colspan=5 align=center> <%@include file="bottom.htm"%> </TD </TR> </TABLE> </body> </html>

Khi trieäu goïi trang templates.jsp, noäi dung cuûa 4 tang left.htm, right.htm, top.htm, bottom.htm cheøn vaøo trang templates.jsp nhö hình 6-5.

[email protected] 3-10

Page 52: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

[email protected] 3-11

Hình 6-5: Trang templates.jsp sau khi cheøn

Trong ñoù, noäi dung cuûa trang top.htm ñònh nghóa töông töï nhö ví duï 6-5-1.

Ví duï 6-5-1: Noäi dung trang top.htm

<TABLE width="100%" border=0 cellSpacing=0 cellPadding=0 HEIGHT="100%" align=center> <TR > <TD width="150" Align=center> LOGO </TD> <TD Align=center> BANNER </TD> </TR> <TR HEIGHT="1"> <TD colspan=2 bgcolor=gray></TD> </TR> <TR HEIGHT="20%" bgcolor=black class=menu> <TD width="150" > Welcome </TD> <TD> Home | Search | Contact | Help </TD> </TR> </TABLE>

Page 53: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Noäi dung cuûa taäp tin left.htm ñöôïc ñònh nghóa töông töï nhö ví duï 6-5-2.

Ví duï 6-5-2: Noäi dung trang left.htm

<TABLE width="100%" border=0 cellSpacing=0 cellPadding=0 HEIGHT="100%" align=center> <TR > <TD width="150" Align=center> LEFT </TD> </TR> </TABLE>

Neáu coù söû duïng trang right.htm thì noäi dung cuûa taäp tin naøy ñöôïc ñònh nghóa töông töï nhö ví duï 6-5-3.

Ví duï 6-5-3: Noäi dung trang right.htm

<TABLE width="100%" border=0 cellSpacing=0 cellPadding=0 HEIGHT="100%" align=center> <TR > <TD width="150" Align=center> FREE ADV </TD> </TR> </TABLE>

Töông töï nhö vaäy, trang bottom.htm coù noäi dung nhö ví duï 6-5-4.

Ví duï 6-5-4: Noäi dung trang bottom.htm

<TABLE width="100%" border=0 cellSpacing=0 cellPadding=0 HEIGHT="100%" align=center> <TR class=text> <TD Align=center> HUUKHANG.COM<br> Copyright ©2000-2005. All Rights Reserved. </TD> </TR> </TABLE>

Chuù yù raèng, trong moãi trang khai baùo cheøn khoâng coù caùc theû ñoùng vaø môû html, body bôûi khi cheøn thì noäi dung cuûa taäp tin ñöôïc cheøn seõ ñöôïc cheøn vaøo taäp tin bò cheøn vaø trong taäp tin bò cheøn ñaõ coù hai theû naøy.

Kòch baûn trình chuû jsp hoã trôï caùc taäp tin ñöôïc cheøn vôùi caùc teân môû roäng nhö htm, jsp, inc, lib, html. Do thöïc chaát cuûa vieäc khai baùo cheøn laø cheøn ñoaïn maõ trong taäp tin cheøn vaøo taäp tin boï cheøn, trong tröôøng hôïp naøy trang cheøn htm hay jsp ñeàu gioáng nhau ñoù laø lyù do taïi sao caùc trang cheøn ôû treân ñeàu coù teân môû roäng laø htm.

Tuy nhieân, khi baïn goïi trang cheøn naøy moät mình ví duï tom.htm, neáu beân trong coù maõ jsp thì maõ ñoù khoâng ñöôïc thoâng dòch. Neáu nhöõng trang cheøn naøy coù nhu caàu goïi moät mình thì baïn coù theå chuyeån chuùng thaønh trang jsp thay vì htm nhö ñaõ trình baøy.

Sau khi coù ñöôïc trang templates.jsp, baïn coù theå söû duïng trang naøy laø maãu cho caùc trang khaùc baèng caùch save as thaønh caùc trang jsp khaùc khi laäp trình. Khi khai baùo cheøn taäp tin, baïn coù theå söû duïng ñöôøng daãn töông ñoái hoaëc tuyeät ñoái cuûa taäp tin cheøn so vôùi aäp tin bò cheøn.

[email protected] 3-12

Page 54: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

3. KHAI BAÙO HAØM VAØ THUÛ TUÏC DUØNG CHUNG

Sau khi khai baùo cheøn taäp tin thaønh moät taäp tin maãu, chuùng ta coù theå söû duïng taäp tin naøy ñeå save as thaønh trang nhieàu trang jsp khaùc.

Chaúng haïn, chuùng ta khai baùo moät trang jsp coù teân common.jsp, trong taäp tin bao goàm nhöõng phöông thöùc söû duïng nhieàu laàn trong caùc trang jsp khaùc. Ví duï chuùng ta khai baùo phöông thöùc nhaän giaù trò kieåm tra, neáu giaù trò null htì traû veà roãng nhö ví duï 6-6.

Ví duï 6-6: Noäi dung thuû tuïc getVal trong common.jsp

public String getVal(String strVal,String def) { return (strVal==null?def:strVal); }

Töông töï nhö vaäy, chuùng ta khai baùo phöông thöùc nhaän moät chuoãi cha sStr, chuoãi con oldStr vaø chuoãi thay theá newStr neáu tìm thaáy chuoãi con, sau ñoù tìm kieám trong chuoãi cha, neáu tìm thaáy chuoãi con thì thay theá chuoãi thay theá nhö ví duï 6-7.

Ví duï 6-7: Noäi dung thuû tuïc replaceString trong common.jsp

public String replaceString(String sStr,String oldStr,String newStr) { sStr=(sStr==null?"":sStr); String strVar=sStr; String tmpStr=""; String finalStr=""; int stpos=0,endpos=0,strLen=0; while (true) { strLen=strVar.length(); stpos=0; endpos=strVar.indexOf(oldStr,stpos); if (endpos==-1) break; tmpStr=strVar.substring(stpos,endpos); tmpStr=tmpStr.concat(newStr); strVar=strVar.substring(endpos+oldStr.length()>sStr.length()?endpos:endpos+oldStr.length(),strLen); finalStr=finalStr.concat(tmpStr); stpos=endpos; } finalStr=finalStr.concat(strVar); return finalStr; }

Löu yù raèng, khi khai baùo phöông thöùc trong JSP ñeå duøng chung baïn söû duïng caëp daáu <%! %>

Ñeå söû duïng phöông thöùc naøy, baïn khai baùo cheø taäp tin common.jsp vaøo trang jsp vaø goïi caùc phöông thöùc naøy nhö phöông thöùc ñöôïc khai baùo ngay trong trang jsp ñoù.

Ví duï, chuùng ta khai baùo trang login.jsp cho pheùp ngöôøi söû duïng nhaäp username vaø password, sau ñoù submit, trong trang login_authentication.jsp seõ laáy hai thôøi gian naøy baèng caùch söû duïng ñoái töôïng Request. Tuy nhieân, trong tröôøng hôïp ngöôøi söû duïng nhaäp giaù trò coù daáu ‘ hay giaù trò laø null thì keát noái cô sôû döõ lieäu seõ phaùt sinh loãi.

Chính vì vaäy trong tröôøng hôïp naøy chuùng ta söû duïng phöông thöùc getVal vaø replaceString trong taäp tin common.jsp ñeå thay theá neáu tìm thaáy daáu ‘ trong giaù trò vöøa laáy ra nhö ví duï 6-8.

[email protected] 3-13

Page 55: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Ví duï 6-8: Duøng thuû tuïc replaceString trong common.jsp

<%@include file="common.jsp"%> <% String username=""; String password=""; username= getVal(request.getParameter("username"),""); password= getVal(request.getParameter("password"),""); username= replaceString(username,"'","''"); password= replaceString(password,"'","''"); if (username.equals("khang")){ if(password.equals("123456")){ response.sendRedirect("myaccount.jsp"); } else{ /*sai password*/ response.sendRedirect("login.jsp"); } } else{ /*sai user*/ response.sendRedirect("login.jsp"); } %>

4. KEÁT CHÖÔNG

Trong baøi naøy chuùng ta taäp trung tìm hieåu caùch khai baùo taäp tin duøng chung sau ñoù cheøn vaøo trang jsp.

Ngoaøi ra, baïn tham khaûo chi tieát caùc khai baùo bieán, phaùt bieåu, haøm, thuû tuïc trong taäp tin jsp, sau ñoù khai baùo cheøn vaø söû duïng caùc khai baùo naøy.

Trong baøi keá tieáp, chuùng ta tieáp tuïc tìm hieåu caùch töông taùc vôùi cô sôû döõ lieäu.

[email protected] 3-14

Page 56: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

BAØI 7: JAVA DATABASE CONNECTIVITY

JavaSoft Inc giôùi thieäu JDBC (Java Database Connectivity) cho pheùp

caùc öùng duïng Java truy caäp vaøo cô sôû döõ lieäu. vôùi JDBC baïn coù theå caäp nhaät, theâm vaø truy vaán döõ lieäu baát kyø.

Ñeå keát noái cô sôû döõ lieäu SQL Server trong Java, chuùng ta coù nhieàu caùch öùng vôùi nhieàu phöông thöùc keát noái cô sôû döõ lieäu, trong phaàn naøy chuùng ta taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu SQL Server töø Java baèng caàu noái JDBC-ODBC vaø caùc goùi hoã trôï khaùc.

Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy

Giôùi thieäu JDBC API Caùc ñoái töôïng keát noái cô sôû döõ lieäu. Khai baùo ODBC. Söû duïng caàu noái JDBC-ODBC Truy vaán, caäp nhaät, theâm, xoaù döõ lieäu

1. GIÔÙI THIEÄU JDBC API

JDBC API (Application Programming Interface) laø moät taäp ñaët taû cho pheùp ñònh nghóa laøm theá naøo ñeå Java keát noái vôùi cô sôû döõ lieäu. JDBC API ñöôïc phaùt trieån bôûi coâng ty JavaSoft. Nhieàu khaùi nieäm cuûa JDBC API ñöôïc vay möôïn töø caùc taøi nguyeân khaùc nhö ODBC (Open Database Connectivity) cuûa Microsoft.

1.1.

1.2.

Trình ñieàu khieån cuûa JDBC

JDBC API ñònh nghóa ñeå theå hieän döõ lieäu nhö theá naøo, thöïc thi taäp leänh ñeå theâm, xoaù hay caäp nhaät döõ lieäu nhö theá naøo töø yeâu caàu cuûa ngöôøi söû duïng.

Saûn phaåm cuûa JDBC

Saûn phaåm cuûa JDBC bao goàm ba loaïi chính laø goùi java.sql, Test suite, caàu noái JDBC-ODBC vaø java.sql.package.

JDBC API laø taäp caùc interface vaø class cho pheùp keát noái cô sôû döõ lieäu, chuùng chöùa ñöïng tong gôùi java.sql vaø nhöõng interface naøy bao goàm:

CallableStatement: Chöùa ñöïng caùc phöông thöùc ñeå thöïc thi thuû tuïc SQL coù hoã trôï caùc tham soá In vaø Out.

Connection: Baûo trì vaø theo gioûi keát noái cô sôû döõ lieäu.

DatabaseMetaData: Cung caáp caùc thoâng tin cuûa cô sôû döõ lieäu.

Driver: Taïo ra ñoái töôïng keát noái.

PrepareStatement: Bieân dòch phaùt bieåu SQL tröôùc khi thöïc thi.

ResultSet: Cung caáp caùc phöông thöùc ñeå truy caäp döõ lieäu töø phaùt bieåu SQL.

Phaïm Höõu Khang [email protected]

Page 57: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

1.2.1.

1.2.2.

1.3.

2.

ResultSetMetaData: Thu thaäp thoâng tin sieâu döõ lieäu phuø hôïp vôùi ñoái töôïng ResultSet cuoái cuøng.

Statement: Thöïc thi phaùt bieåu SQL vaø truy vaán döõ lieäu traû veà töø ñoái töôïng ResultSet.

Test Suite

Test Suite duøng ñeå kieåm tra caùc chöùc naêng cuûa trình ñieàu khieån JDBC, noù baûo ñaûm raèng taát caû phöông thöùc vaø lôùp caøi ñaët trong JDBC API ñöôïc caøi ñaët.

Caàu noái JDBC-ODBC

Caàu noái JDBC-ODBC laø trình ñieàu khieån JDBC cho pheùp chöông trình Java söû duïng ODBC ñeå keát noái cô sôû döõ lieäu. Trong tröôøng hôïp naøy chuùng ta söû duïng ODBC cuûa heä ñieàu haønh Windows ñeå keát noái cô sôû döõ lieäu Windows hoã trôï.

Caùc trình ñieàu khieån JDBC

JDBC Driver bao goàm 4 loaïi chính: JDBC-ODBC Bridge, Native API Java, JDBC Network vaø Native Protocol.

CAÙC ÑOÁI TÖÔÏNG KEÁT NOÁI CÔ SÔÛ DÖÕ LIEÄU

Nhö giôùi htieäu ôû treân, chuùng ta seõ coù 3 ñoái töôïng chình ñeå laøm vieäc vôùi cô sôû döõ lieäu laø Connection, Statement vaø ResultSet.

Tröôùc khi söû duïng caùc ñoái töôïng naøy, baïn phaûi khai baùo import java.sql.* vaø khai baùo trình ñieàu khieån JdbcODBC nhö sau:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

2.1.

2.1.1.

2.1.2.

Connection

Connection laø ñoái töôïng duøng ñeå môû keát noái cô sôû döõ lieäu baèng trình ñieàu khieån JDBC, baèng caùch söû duïng phöông thöùc DriverManager.getConnection cuûa ñoái töôïng Connection baïn coù theå môû keát noái cô sôû döõ lieäu vôùi loaïi cô sôû döõ lieäu cuøng vôùi caùc tham soá khaùc.

Khai baùo

Khai baùo ñoái töôïng Connection, baïn söû duïng cuù phaùp nhö sau: Connection con = DriverManager.getConnection("jdbc:odbc:Northwind","hocvien","");

Hay Connection con = null; con = DriverManager.getConnection("jdbc:odbc:Northwind","hocvien","");

Taïo ñoái töôïng Statement

Sau khi môû keát noái cô sôû döõ lieäu baèng ñoái töôïng Connection, baïn coù theå söû duïng phöông thöùc createStatement ñeå traû veà ñoái töôïng Statement baèng cuù phaùp:

con.createStatement();

Phaïm Höõu Khang [email protected]

Page 58: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

2.1.3.

2.1.4.

2.2.

2.2.1.

2.2.2.

2.2.3.

2.2.4.

2.3.

Ñoùng keát noái

Ñeå ñoùng keát noái cô sôû döõ lieäu, baïn söû duïng cuù phaùp: con.close();

Giaûi phoùng keát noái

Töông töï nhö treân, khi khoâng coù nhu caàu söû duïng ñoái töôïng connection, baïn caàn huyû ñoái töôïng naøy ñeå giaûi phoùng boä nhôù maø ñoái töôïng ñaõ chieám.

con.dispose();

Statement

Ñoái töôïng Statament duøng ñeå thöïc thi phaùt bieåu SQL duøng cho haønh ñoäng truy vaán vaø caäp nhaät, thay ñoåi xoaù döõ lieäu.

Khai baùo

Khai baùo ñoái töôïng Statement, baïn söû duïng cuù phaùp nhö sau: Statement st = con.createStatement();

Hay Statement st = null; st = con.createStatement();

Thöïc thi phaùt bieåu SQL

Sau khi môû keát noái cô sôû döõ lieäu baèng ñoái töôïng Connection vaø khai baùo ñoái töôïng Statement, baïn coù theå söû duïng phöông thöùc executeUpdate ñeå thöïc thi phaùt bieåu SQL daïng haønh ñoäng:

st.executeUpdate(sql);

Hay khai baùo bieán int ñeå nhaän soá maåu tin ñöôïc thöïc thi int records= st.executeUpdate(sql);

Ñoùng ñoái töôïng

Ñeå ñoùng keát noái cô sôû döõ lieäu, baïn söû duïng cuù phaùp: st.close();

Giaûi phoùng ñoái töôïng

Töông töï nhö trong tröôøng hôïp ñoái töôïng connection, khi khoâng coù nhu caàu söû duïng ñoái töôïng statement, baïn caàn huyû ñoái töôïng naøy ñeå giaûi phoùng boä nhôù maø ñoái töôïng ñaõ chieám.

st.dispose();

ResultSet

Ñoái töôïng ResultSet naém giöõ moät taäp döõ lieäu cho pheùp baïn thao taùc treân taäp döõ lieäu baèng caùc phöông thöùc vaø thuoäc tính cuûa noù.

Phaïm Höõu Khang [email protected]

Page 59: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

2.3.1.

2.3.2.

2.3.3.

2.3.4.

Khai baùo

Khai baùo ñoái töôïng ResultSet, baïn söû duïng cuù phaùp nhö sau: ResultSet rs = st.executeQuery(sql);

Hay ResultSet rs = null; // hoaëc ResultSet rs; rs= st.executeQuery(sql);

Ñoïc döõ lieäu töø ñoái töôïng ResultSet

Sau khi môû keát noái cô sôû döõ lieäu baèng ñoái töôïng Connection, baïn coù theå söû duïng phöông thöùc createStatement ñeå traû veà ñoái töôïng Statement, baïn coù theå ñoïc taäp döõ lieäu ñeå ñieàn vaøo ñoái töôïng ResultSet vaø coù theå ñoïc ñoái töôïng baèng phöông thöùc next() nhö sau:

rs.next()

Neáu caàn kieåm tra ñoái töôïng toàn taïi maåu tin hay khoâng, baïn coù theå söû duïng phaùt bieåu oif nhö sau:

if(rs.next()) { }

Trong tröôøng hôïp duyeät töøng maåu tin beân trong ñoái töôïng, baïn söû duïng phaùt bieåu while nhö sau:

while(rs.next()) { }

Ñeå ñoïc giaù trò töø field, baïn söû duïng phöông thöùc cuûa ñoái töôïng naøy, chaúng haïn ñoái vôùi tröôøng hôïp naøy chuùng ta söû duïng phöông thöùc getString(fieldname) nhö sau:

string x=rs.getString("CustomerID")

Ñoùng ñoái töôïng ResultSet

Ñeå ñoùng ñoái töôïng ResultSet, baïn söû duïng cuù phaùp: rst.close();

Giaûi phoùng ñoái töôïng ResultSet

Töông töï nhö treân, khi khoâng coù nhu caàu söû duïng ñoái töôïng ResultSet, baïn caàn huyû ñoái töôïng naøy ñeå giaûi phoùng boä nhôù maø ñoái töôïng ñaõ chieám.

rst.dispose();

Phaïm Höõu Khang [email protected]

Page 60: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

3. KHAI BAÙO ODBC

Ñeå söû duïng ODBC trong khai baùo caàu noái JDBC-ODBC, tröôùc tieân baïn khai baùo trình ñieàu khieån trong ODBC. Ñeå laøm ñieàu naøy, baïn choïn ODBC trong Cntrol panel hay töø Administrative Tools, cöûa soå xuaát hieän nhö hình 9-1 sau:

Hình 9-1: Taïo Data Source Name

Choïn vaøo DSN System | Add ñeå theâm teân tham chieáu, cöûa soå xuaát hieän yeâu caàu baïn nhaäp teân (seõ söû duïng trong khai baùo) vaø chæ ñònh server (tröôøng hôïp naøy duøng daáu . töông ñöông vôùi SQL cuûa maùy cuïc boä) nhö hình 9-2.

Böôùc keá tieáp choïn vaøo ñaët quyeàn keát noái cô sôû döõ lieäu baèng SQL hay Windows, trong tröôøng hôïp naøy chuùng ta choïn vaøo tuyø choïn thöù hai nhö hình 9-3. Khi choïn vaøo tuyø choïn naøy, baïn caàn cung caáp username vaø password ñeå ñònh nghóa cô sôû döõ lieäu SQ Server.

Neáu caùc tham soá treân cung caáp hôïp leä, choïn Next cöûa soå keá tieáp xuaát hieän nhö hình 9-4 yeâu caàu baïn choïn teân cô sôû döõ lieäu caàn laøm vieäc. Löu yù raèng, cô sôû döõ lieäu maëc ñònh chính laø cô sôû döõ lieäu khai baùo maëc ñònh trong SQL Server khi ngöôøi söû duïng vôùi username ñoù ñöôïc taïo ra.

Choïn Next vaø ñeán böôùc cuoái cuøng, baïn coù theå kieåm tra keát noái cô sôû döõ lieäu vöøa choïn coù thaønh coâng hay khoâng baèng caùch nhaán vaøo nuùt Test Conneciton nhö hình 9-5.

Phaïm Höõu Khang [email protected]

Page 61: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 9-2: Khai baùo DSN

Hình 9-3: Nhaäp username vaø password

Phaïm Höõu Khang [email protected]

Page 62: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 9-4: Choïn teân cô sôû döõ lieäu

Hình 9-5: Kieåm tra keát noái cô sôû döõ lieäu

Phaïm Höõu Khang [email protected]

Page 63: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

4. SÖÛ DUÏNG CAÀU NOÁI JDBC-ODBC

Sau khi khai baùo xong ODBC vôùi teân chæ ñònh, giaû söû trong tröôøng hôïp naøy chuùng ta choïn teân SQL vôùi cô sôû döõ lieäu Northwind cuøng vôùi taøi khoaûn sa vaø password laø sa.

try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:SQL","sa","sa"); ... } catch(Exception e) { System.out.println("Error : " + e); } }

5. SÖÛ DUÏNG ÑOÁI TÖÔÏNG CONNECTION, STATEMENT VAØ RESULTSET

5.1. Söû duïng phöông thöùc executeQuery

Trôû laïi taäp tin java, baïn coù theå khai baùo ñeå keát noái cô sôû döõ lieäu vaø truy vaán döõ lieäu baïn coù theå khai baùo vaø söû duïng phöông thöùc executeQuery vaø ñoái töôïng Resultset nhö ví duï sau:

... try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:SQL","sa","sa"); Statement st = con.createStatement(); String sql = "Select * from Customers"; ResultSet rs = st.executeQuery(sql); while(rs.next()) { out.println(rs.getString("CustomerID")); } con.close(); } catch(Exception e) { out.println("Error : " + e); } } ...

Chaúng haïn, chuùng ta tham khaûo ví duï veà chöùc naêng ñaêng nhaäp heä thoáng baèng caùch söû duïng ODBC-JDBC nhö sau:

<%@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <% int err=0; String userid=""; String username=""; String email=""; String password=""; String fullname=""; try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Phaïm Höõu Khang [email protected]

Page 64: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); username= request.getParameter("username"); username=replaceString(username,"'", "''"); session.putValue("username",username); password= request.getParameter("password"); String strSQL=""; String pwd=""; strSQL="select * from tblusers where username = '" + username + "'"; rst=smt.executeQuery(strSQL); if (rst.next()){ userid= rst.getString("UserID"); pwd=rst.getString("Password"); fullname= rst.getString("Fullname"); email= rst.getString("Email"); if(pwd.equals(password)){ session.putValue("userid",userid); session.putValue("email",email); session.putValue("fullname",fullname); response.sendRedirect("myaccount.jsp"); } else{ /*sai password*/ session.putValue("userid","0"); response.sendRedirect("login.jsp"); } } else{ /*sai user*/ session.putValue("userid","-1"); response.sendRedirect("login.jsp"); } smt.close(); cn.close(); } catch (Exception e){ /*sai ket noi*/ session.putValue("userid","-2"); out.println(e); response.sendRedirect("login.jsp"); } %>

Töø trang login.jsp, ngöôøi söû duïng nhaäp username/password vaø nhaán OK, baïn trieäu goïi trang login_authentication.jsp, baèng caùch söû duïng 3 ñoái töôïng Connection, Statement vaø Resultset ñeå keát noái cô sôû döõ lieäu vaø kieåm tra. Neáu username/password hôïp leä thì trang myaccount.jsp seõ ñöïôc trieäu goïi, neáu khoâng chuùng ta seõ trôû veà trang login.jsp.

5.2. Söû duïng phöông thöùc executeNonQuery

Trong tröôøng hôïp theâm hay caäp nhaät, theâm, xoaù döõ lieäu hay thöïc thi SP baïn söû duïng phöông thöùc executeUpdate, baïn coù theå khai baùo nhö ví duï sau:

try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:SQL","sa","sa"); Statement st = con.createStatement(); String sql = "Delete from Customers where Country=’Vietnam’"; int records = st.executeUpdate(sql);

Phaïm Höõu Khang [email protected]

Page 65: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

out.println("Effected records : " + records.ToString()); con.close(); } catch(Exception e) { out.println("Error : " + e); } }

Chaúng haïn, chuùng ta khai baùo trang them.jsp ñeå theâm maåu tin vaøo baûng tblCategories nhö sau: %@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <% try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); String strSQL=""; strSQL="insert into tblCategories values('ABC')"; smt.executeNonQuery(strSQL); smt.close(); cn.close(); } catch (Exception e){ /*sai ket noi*/ out.println(e); } %>

6. KEÁT LUAÄN

Trong baøi naøy, chuùng ta tìm hieåu JDBC API, caùc ñoái töôïng laøm vieäc vôùi cô sôû döõ lieäu, khai baùo ODBC vaø caùc phöông thöùc cuûa caùc ñoái töôïng Connection, Statement vaø ResultSet.

Trong baøi keá tieáp chuùng ta tieáp tuïc tìm hieåu veà caùc caùch trình baøy döõ lieäu baèng 3 ñoái töôïng treân vôùi cô sôû döõ lieäu SQL Server.

Phaïm Höõu Khang [email protected]

Page 66: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

BAØI 8: THEÂM, XOAÙ, CAÄP NHAÄT DÖÕ LIEÄU

Sau khi chuùng ta ñaõ laøm quen vôùi JDBC (Java Database

Connectivity), baïn coù theå söû duïng caàu noái JDBC-ODBC hay caùc goùi keát noái khaùc ñeå xoaù, caäp nhaät, theâm vaø truy vaán döõ lieäu baát kyø. Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy

Theâm döõ lieäu Xoaù döõ lieäu Caäp nhaät döõ lieäu Thöïc thi thuû tuïc noäi taïi cuûa SQL Server

1. THEÂM DÖÕ LIEÄU

Ñeå theâm maåu tin vaøo baûng döõ lieäu SQL Server, baïn söû duïng phöông thöùc executeUpdate nhö ví duï trang insert.jsp sau:

<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <html> <head> <title>Theâm maåu tin vaøo cô sôû döõ lieäu trong JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <% boolean isok=false; try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); String strSQL=""; strSQL="insert into tblCategories values('Database')"; smt.executeUpdate(strSQL); isok=true; smt.close(); cn.close(); } catch (Exception e) { /*sai ket noi*/ out.println(e); isok=false; } if( isok) out.println("Theâm maåu tin thaønh coâng"); else out.println("Theâm maåu tin khoâng thaønh coâng ");

Phaïm Höõu Khang [email protected]

Page 67: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

%> </body> </html>

2. CAÄP NHAÄT DÖÕ LIEÄU

Trong tröôøng hôïp caäp nhaät döõ lieäu cuõng töông töï nhö theâm maåu tin, baïn söû duïng phöông thöùc executeUpdate ñeå thöïc thi phaùt bieåu SQL daïng Update. Chaúng haïn, chuùng ta tham khaûo ví duï veà caäp nhaät döõ lieäu nhö trang update.jsp sau:

<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <html> <head> <title>Caäp nhaät maåu tin vaøo cô sôû döõ lieäu trong JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <% boolean isok=false; int j=0; try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); String strSQL=""; strSQL="update tblCategories set CateName='Databases' " strSQL+= " where CateID=41"; j= smt.executeUpdate(strSQL); isok=true; smt.close(); cn.close(); } catch (Exception e) { /*sai ket noi*/ out.println(e); isok=false; } if( isok) out.println("Caäp nhaät " + j + " maåu tin thaønh coâng"); else out.println("Caäp nhaät maåu tin khoâng thaønh coâng "); %> </body> </html>

3. XOAÙ MAÅU TIN

Trong tröôøng hôïp xoaù maåu tin trong cô sôû döõ lieäu baïn cuõng söû duïng phöông thöùc executeUpdate nhö trang delete.jsp sau:

<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.sql.*" %>

Phaïm Höõu Khang [email protected]

Page 68: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<%@ include file="common.jsp"%> <html> <head> <title>Xoaù maåu tin vaøo cô sôû döõ lieäu trong JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <% boolean isok=false; int j=0; try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); String strSQL=""; strSQL="delete from tblCategories where CateID>=30 "; j= smt.executeUpdate(strSQL); isok=true; smt.close(); cn.close(); } catch (Exception e) { /*sai ket noi*/ out.println(e); isok=false; } if( isok) out.println("Xoaù " + j + " maåu tin thaønh coâng"); else out.println("Xoaù maåu tin khoâng thaønh coâng "); %> </body> </html>

4. THÖÏC THI THUÛ TUÏC NOÄI TAÏI CUÛA SQL SERVER

4.1. Thuû tuïc khoâng coù giaù trò traû veà

Baïn coù theå thöïc thi moät thuû tuïc noäi taïi khoâng coù giaù trò traû veà cuûa SQL Server cuõng nhö moät phaùt bieåu SQL daïng haønh ñoäng, chaúng haïn chuùng ta coù thuû tuïc theâm maåu tin vaøo tblCategories nhö trang procedure.jsp sau:

create proc AddCategories @name nvarchar(50) as Insert into tblCategories values(@name)

Löu yù raèng, khi goïi thuû tuïc naøy trong SQL Server baïn söû duïng cuù phaùp nhö sau:

AddCategories ‘Phan Tich‘

Phaïm Höõu Khang [email protected]

Page 69: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Sau ñoù, töø trang JSP baïn khai baùo ñeå thöïc thi thuû tuïc naøy nhö sau: <%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <html> <head> <title>Theâm maåu tin vaøo cô sôû döõ lieäu trong JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <% boolean isok=false; int j=0; try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); String myName ="Phan Tich"; String strSQL=""; strSQL="AddCategories '" + myName +"'"; j= smt.executeUpdate(strSQL); isok=true; smt.close(); cn.close(); } catch (Exception e) { /*sai ket noi*/ out.println(e); isok=false; } if( isok) out.println("Theâm " + j + " maåu tin thaønh coâng"); else out.println("Theâm maåu tin khoâng thaønh coâng "); %> </body> </html>

4.2. Thöïc thi thuû tuïc coù giaù trò traû veà

Baïn coù theå thöïc thi moät thuû tuïc noäi taïi coù giaù trò traû veà cuûa SQL Server cuõng nhö moät phaùt bieåu SQL daïng Select, chaúng haïn chuùng ta coù thuû tuïc theâm maåu tin vaøo tblCategories vaø laáy soá töï ñoäng laø maõ cuûa Category ñoù phaùt sinh nhö trang procedurewithvalue.jsp sau:

create proc getCategoryID @name nvarchar(50) as insert into tblCategories values(@name) select @@identity as No

Löu yù raèng, khi goïi thuû tuïc naøy trong SQL Server baïn söû duïng cuù phaùp nhö sau:

Phaïm Höõu Khang [email protected]

Page 70: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

getCategoryID ‘Phan Tich He Thong‘

Thì keát quaû traû veà laø soá töï ñoäng töông öùng vôùi maõ Category. Sau ñoù, töø trang JSP baïn khai baùo ñeå thöïc thi thuû tuïc naøy baèng ñoái töôïng ResultSet nhö trang procedurewithvalue.jsp sau:

<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <html> <head> <title>Theâm maåu tin vaøo cô sôû döõ lieäu trong JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <% boolean isok=false; int j=0; try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); String myName ="Phan Tich He Thong"; String strSQL=""; strSQL="getCategoryID '" + myName +"'"; rst= smt.executeQuery(strSQL); if (rst.next()) j=rst.getInt("No"); isok=true; smt.close(); cn.close(); } catch (Exception e) { /*sai ket noi*/ out.println(e); isok=false; } if( isok) out.println("CategoryID is " + j); else out.println("Theâm maåu tin khoâng thaønh coâng "); %> </body> </html>

4.3. Thöïc thi thuû tuïc coù giaù trò traû veà laø taäp döõ lieäu

Baïn coù theå thöïc thi moät thuû tuïc noäi taïi coù giaù trò traû veà laø moät taäp döõ lieäu cuûa SQL Server cuõng nhö moät phaùt bieåu SQL daïng Select, chaúng haïn chuùng ta coù thuû tuïc thöïc thi nhöõng haønh ñoäng naøo ñoù, sau ñoù lieät keâ maåu tin cuûa baûng tblCategories nhö trang procedurewithresultset.jsp sau:

create proc getResultset @id int

Phaïm Höõu Khang [email protected]

Page 71: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

as --Nhieàu tính toaùn vaø haønh ñoäng ô ñaây select * from tblCategories where CateID>@id

Löu yù raèng, khi goïi thuû tuïc naøy trong SQL Server baïn söû duïng cuù phaùp nhö sau:

getResultset 20

Thì keát quaû traû veà laø danh saùch maåu tin coù maõ Category lôùn hôn 20. Sau ñoù, töø trang JSP baïn khai baùo ñeå thöïc thi thuû tuïc naøy baèng ñoái töôïng ResultSet nhö trang procedurewithresulset.jsp sau:

<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <html> <head> <title>Lieät keâ maåu tin vaøo cô sôû döõ lieäu trong JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <% boolean isok=false; int j=0; try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); String strSQL=""; strSQL="getResultset '" + j +"'"; rst=smt.executeQuery(strSQL); while(rst.next()) { out.println(rst.getString("CateID")+"-"); out.println(rst.getString("CateName")); out.println("<br>"); } isok=true; smt.close(); cn.close(); } catch (Exception e) { /*sai ket noi*/ out.println(e); isok=false; } if(!isok) out.println("Lieät keâ maåu tin khoâng thaønh coâng "); %> </body> </html>

Phaïm Höõu Khang [email protected]

Page 72: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

5. LIEÄT KEÂ DÖÕ LIEÄU THEO TUYØ CHOÏN

Baèng caùch lieät keâ danh saùch cuûa baûng coù quan heä cha, cho pheùp ngöôøi söû duïng choïn moät phaàn töû, baïn coù theå lieät keâ danh saùch caùc maåu tin coù quan heä trong baûng coù quan heä N. Ñeå laøm ñieàu naøy, tröôùc tieân baïn lieât keâ danh saùch trong baûng tblCategories treân theû select, sau ñoù moãi laàn ngöôøi söû duïng choïn moät CategoryID thì baïn lieât keâ danh saùch caùc maåu tin trong baûng tblSubCategories nhö ví duï trang chooseandshow.jsp.

<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <html> <head> <title>Lieät keâ maåu tin trong JSP</title> <LINK href="style.css" rel=stylesheet> <LINK href="newstyle.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <br> <form action=chooseandshow.jsp method=post name=form1> Category: <select name=cateid onchange="document.form1.submit();"> <option value=''></option> <% //Laáy giaù trò töø theû select coù teân cateid neáu coù submit String cateid=request.getParameter("cateid"); Connection cn; Statement smt; ResultSet rst=null; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); try{ // Lieät keâ danh saùch Category trong theû select coù teân cateid String strSQL="select * from tblCategories"; rst=smt.executeQuery(strSQL); while(rst.next()) { String id=rst.getString("CateID") ; out.println("<option value='" + id + "' "); if(cateid.toString().equals(id)) out.println(" selected"); out.println(">"); out.println(rst.getString("CateName")); out.println("</option>"); } } catch (Exception e) { /*sai ket noi*/ out.println(e); } out.println("</select></form></br>"); rst.close(); //Neáu coù submit thì lieät danh saùch subcategory theo cateid if(cateid!=null) { int j=0; try{ String strSQL=""; strSQL="select * from tblSubCategories Where cateid='" + cateid +"'";

Phaïm Höõu Khang [email protected]

Page 73: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

rst=smt.executeQuery(strSQL); while(rst.next()) { j++; out.println(rst.getString("SubCateID")+"-"); out.println(rst.getString("SubCateName")); out.println("<br>"); } } catch (Exception e) { /*sai ket noi*/ out.println(e); } rst.close(); if(j==0) out.println("SubCategory not found!"); } smt.close(); cn.close(); %> </body> </html>

6. KEÁT LUAÄN

Trong baøi naøy, chuùng ta tìm hieåu trình baøy döõ lieäu, theâm, xoaù, caäp nhaät vaø thöïc thi thuû tuïc noäi taïi SQL Server baèng 3 ñoái töôïng Connection, Statement vaø ResultSet vôùi cô sôû döõ lieäu SQL Server.

Phaïm Höõu Khang [email protected]

Page 74: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

BAØI 9: THEÂM, XOAÙ, CAÄP NHAÄT DÖÕ LIEÄU

Sau khi chuùng ta ñaõ laøm quen vôùi thao taùc cô sôû döõ lieäu, trong baøi

naøy chuùng ta tieáp tuïc tìm hieåu xaây döïng chöùc naêng ñaêng nhaäp heä thoáng öùng duïng. Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy

Moâ hình chöùc naêng ñaêng nhaäp Login, Trang chính vaø Logout

1. MOÂ HÌNH CHÖÙC NAÊNG ÑAÊNG NHAÄP

Rong moïi öùng duïng Web, neáu cho pheùp ngöôøi söû duïng ñaêng nhaäp heä thoáng baïn ñeàu phaûi söû duïng trang login, trang chính sau khi ñaêng nhaäp thaønh coâng vaø trang logout theo moâ hình sau.

Begin

Username vaø Password

Khôûi taïo moät soá Session

Database Validate

Ñaêng nhaäp thaønh coâng

Client Validate

No

Yes

Logout

Database

Huyû taát caû Session

Phaïm Höõu Khang [email protected]

Page 75: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

1. Ngöôøi söû duïng nhaäp username vaø password.

2. Nhaán nuùt Login.

3. Kieåm tra treân client (JavaScript) ngöôøi söû duïng ñaõ nhaäp username (email) vaø Password (neáu baét buoäc phaûi coù Password). Neáu username vaø password hôïp leä thì nhaûy ñeán böôùc 4, ngöôïc laïi trôû veà böôùc 1.

4. Keát noái cô sôû döõ lieäu vaø kieåm tra username coù toàn taïi hay khoâng?

Neáu toàn taïi thì so saùnh Password •

2.

Neáu truøng Password thì khôûi taïo moät soá Session caàn thieát vaø troû ñeán trang chính cuûa taøi koaûn ngöôøi söû duïng.

Ngöôïc laïi thì trôû veà böôùc 1 vôùi thoâng baùo “Sai password”.

Trong tröôøng hôïp khoâng toàn taïi thì trôû veà böôùc 1 vôùi thoâng baùo “Khoâng toàn taïi username”.

5. Sau khi ñaêng nhaäp thaønh coâng, neáu ngöôøi söû duïng Logout thì huyû taát caû caùc Session ñaõ taïo ra vaø trôû veà böôùc 1.

Löu yù: Döïa vaøo ñaâu chuùng ta trình baøy chuoãi thoâng baùo trong trang login.

1. Laàn ñaàu tieân hay sau khi logout neáu ngöôøi söû duïng goïi trang login thì chuùng ta thoâng baùo “Xin vui loøng cung caáp username vaø password ñeå ñaêng nhaäp heä thoáng”.

2. Trong tröôøng hôïp sai password maø goïi laïi trang login thì chuùng ta thoâng baùo “ Sai password, xin vui loøng nhaäp laïi password”.

3. Töông töï nhö vaäy, khi kieåm tra khoâng tìm thaáy username maø goïi laïi trang login thì chuùng ta thoâng baùo “ Khoâng toàn taïi username, xin vui loøng nhaäp laïi username”.

Nhö vaäy, chuùng ta döïa vaø session coù teân userid, neáu ñaêng nhaäp thaønh coâng thì session coù giaù trò laø soá id cuûa ngöôøi söû duïng. Trong tröôøng hôïp sai password thì chuùng ta gaùn giaù trò cho session naøy laø 0, neáu username khoâng toàn taïi thì giaù trò gaùn laø –1. Khi loãi phaùt sinh thì gaùn giaù trò laø -2.

LOGIN, TRANG CHÍNH VAØ LOGOUT

2.1. Trang LOGIN

Ñeå xaây döïng trang login, baïn khai baùo thaønh ba phaân ñoaïn, tröôùc tieân laø khai baùo ñoaïn JavaScript ñeå kieåm tra username / password nhö ví duï sau:

<script language="JavaScript"> function checkinput(){

if(document.form1.username.value==""){ alert("Xin vui long nhap username"); document.form1.username.focus(); return false; } if(document.form1.password.value=="" ){ alert("Xin vui long nhap password"); document.form1.password.focus(); return false; }

Phaïm Höõu Khang [email protected]

Page 76: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

return true; }

</script>

Sau ñoù, döïa vaøo giaù trò cuûa session coù teân userid, baïn coù theå thoâng baùo chuoãi thoâng baùo nhö sau:

<% String userid=getVal((String)session.getValue("userid"),""); String err="Xin vui loøng nhaäp username vaø password"; if(userid.equals("0")){ err="<font color=\"#FF0000\">Sai password,Xin vui lòng nhaäp password</font>";} if(userid.equals("-1")){ err="<font color=\"#FF0000\">Sai username,Xin vui lòng nhaäp username</font>";} if(userid.equals("-2")){ err="<font color=\"#FF0000\">Loãi heä thoáng, Xin vui loøng thöû laïi</font>";}

%>

Sau ñoù, khai baùo theû form cuøng vôùi caùc theû input cho pheùp ngöôøi söû duïng nhaäp username/password vaø goïi phöông thöùc checkinput():

<form action=login_authentication.jsp name=form1 method=post onSubmit="return checkinput();"> <table align=center> <tr> <td colspan="2" height="19"> <h4><b><font color="#FF0000"> <font color="#0000CC">Nhaân vieân quaûn lyù</font> </font></b></h4><hr> </td> </tr><tr> <td colspan=2 height="19"> <div align="left"><%=err%></div> </td> </tr> <tr> <td height="19"> <div align="left">Username</div> </td> <td height="19"> <div align="left"> <input type="text" name="username" size="30" maxlength="50" class=textbox> </div> </td> </tr> <tr> <td height="31"> <div align="left">Password</div> </td> <td height="31"> <div align="left"> <input type="password" name="password" size="30" maxlength="10" class=textbox> </div> </td> </tr> <tr> <td >&nbsp;</td>

Phaïm Höõu Khang [email protected]

Page 77: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<td>&nbsp;</td> </tr><tr> <td ></td> <td ><input type=submit value="Ñaêng nhaäp"> &nbsp; <input type=reset value=Huyû></td> </tr> </table> </form>

Khi ngöôøi söû duïng trieäu goïi trang login laàn ñaàu tieân, maøn hình xuaát hieän nhö hình 9-1.

Hình 9-1: Trang login

Neáu ngöôøi söû duïng khoâng nhaäp user/password maø nhaán nuùt “Ñaêng nhaäp” thì cöûa soå thoâng baùo do phöông thöùc checkinput khai baùo ôû treân phun ra nhö hình 9-2.

Hình 9-2: Thoâng baùo yeâu caàu nhaäp username/password

Phaïm Höõu Khang [email protected]

Page 78: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Trong tröôøng hôïp ñaõ nhaäp username maø chöa cung caáp passwprd thì cöûa soå xuaát hieän nhö hình 9-3.

Hình 9-3: Yeâu caàu nhaäp password

Löu yù raèng, sau khi thoâng baùo yeâu caàu ngöôøi söû duïng cung caáp username hay password, neáu ngöôøi söû duïng nhaán nuùt IK laäp töùc con troû seõ chæ vaøo textbox töông öùng.

Neáu caû hai giaù trò ñeáu cung caáp, trang khai baùo trong thuoäc tính action cuûa theû form seõ ñöôïc trieäu goïi. Trong tröôøng hôïp naøy chính laø trang login_authentication.jsp.

2.2. Trang kieåm tra cô sôû döõ lieäu

Sau khi submit ñeán trang login_authentication.jsp, baïn keát noái cô sôû döõ lieäu vaø ñoïc trong baûng tblusers vôùi phaùt bieåu Select vaø meänh ñeà Where öùng vôùi coät username.

Neáu tìm thaáy maåu tin toàn taïi baïn tieáp tuïc so saùnh giaù trò trong coät password vôùi passsword nhaäp töø trang login.jsp, neáu password hôïp leä thì khôûi taïo session vaø troû ñeán trang myaccount.jsp.

Trong tröôøng hôïp khoâng tìm thaáy maåu tin naøo coù username baèng vôùi username maø ngöôøi söû duïng cung caáp thì baïn trôû veà trang login.jsp vôùi giaù trò cuûa session coù teân userid laø –1.

Ñoái vôùi tröôøng hôïp so saùnh password khoâng baèng nhau thì baïn trôû veà trang login.jsp vôùi giaù trò cuûa session coù teân userid laø 0.

Neáu loãi phaùt sinh do keát noái cô sôû döõ lieäu thì baïn baïn trôû veà trang login.jsp vôùi giaù trò cuûa session coù teân userid laø –2.

<%@ page import="java.sql.*" %> <%@ include file="common.jsp"%> <% int err=0; String userid=""; String username=""; String email=""; String password=""; String fullname=""; try{ Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); username= request.getParameter("username"); username=replaceString(username,"'", "''"); session.putValue("username",username);

Phaïm Höõu Khang [email protected]

Page 79: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

password= request.getParameter("password"); String strSQL=""; String pwd=""; strSQL="select * from tblusers where username = '" + username + "'"; rst=smt.executeQuery(strSQL); if (rst.next()){ userid= rst.getString("UserID"); pwd=rst.getString("Password"); fullname= rst.getString("Fullname"); email= rst.getString("Email"); if(pwd.equals(password)){ session.putValue("userid",userid); session.putValue("email",email); session.putValue("fullname",fullname); response.sendRedirect("myaccount.jsp"); } else{ /*sai password*/ session.putValue("userid","0"); response.sendRedirect("login.jsp"); } } else{ /*sai user*/ session.putValue("userid","-1"); response.sendRedirect("login.jsp"); } smt.close(); cn.close(); } catch (Exception e){ /*sai ket noi*/ session.putValue("userid","-2"); out.println(e); response.sendRedirect("login.jsp"); } %>

Chuùng ta thay theá giaù trò nhaäp coù daáu ‘ thaønh hai daáu nhaùy ñôn lieân tieáp baèng phöông thöùc replaceString khai baùo trong trang common.jsp nhö sau:

username= request.getParameter("username"); username=replaceString(username,"'", "''");

Löu yù raèng, khi username vaø password ñeàu hôïp leä thì chuùng ta khai baùo nhö sau:

if(pwd.equals(password)) { session.putValue("userid",userid); session.putValue("email",email); session.putValue("fullname",fullname); response.sendRedirect("myaccount.jsp"); }

Neáu sai password thì baïn khai baùo nhö sau: else{

Phaïm Höõu Khang [email protected]

Page 80: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

/*sai password*/ session.putValue("userid","0"); response.sendRedirect("login.jsp"); }

Trong tröôøng hôïp khoâng tìm thaáy username toàn taïi trong cô sôû döõ lieäu thì baïn khai baùo nhö sau:

else{ /*sai user*/ session.putValue("userid","-1"); response.sendRedirect("login.jsp"); }

Neáu loãi phaùt sinh do heä thoáng hay keát noái cô sôû döõ lieäu, baïn khai baùo trong phaùt bieåu catch nhö sau:

catch (Exception e){ /*sai ket noi*/ session.putValue("userid","-2"); response.sendRedirect("login.jsp"); }

Sau khi ñaêng nhaäp thaønh coâng, trang myaccount.jsp xuaát hieän nhö hình 9-4.

Hình 9-4: Trang myaccount.jsp

Baïn coù theå trình baøy nhieàu loaïi thoâng tin trong trang naøy, tuy nhieân chuùng toâi chæ xuaát ra giaù trò cuûa session coù teân laø fullname nhö ví duï sau.

Phaïm Höõu Khang [email protected]

Page 81: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<%@ page contentType="text/html; charset=UTF-8" %> <%@ include file="common.jsp"%> <%@ include file="checksession.jsp"%> <html> <head> <title>Du lich</title> <LINK href="style.css" rel=stylesheet> <META HTTP-EQUIV="Content-Type" CONTENT="text/html ; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table width="100%" border="0" cellspacing="5" cellpadding="5"> <tr><td> <table width="100%"> <tr> <td colspan="2" height="19" align=center> <b><font color="#FF0000"><font color="#0000CC"> Xin chaøo baïn ñeán vôùi WebSite Baùn Haøng </font></b> </td></tr> <tr><td colspan=2><hr></td></tr> <tr><td>Logged as: <%=getVal((String)session.getValue("fullname"),"")%> </td><td align=right> <b><a href="logout.jsp">Logout</a></b> </td> </tr> </table> </td></tr></table> </body> </html>

Tuy nhieân, trang myaccount.jsp chæ ñöôïc söû duïng khi ngöôøi söû duïng ñaõ ñaêng nhaäp, ñieàu naøy coù nghóa laø baïn phaûi kieåm tra session userid phaûi coù giaù trò lôùn hôn 0 môùi cho pheùp trình baøy thoâng tin treân trang naøy neáu khoâng thì trieäu goïi trang login.jsp ñeå yeâu caàu ngöôøi söû duïng ñaêng nhaäp.

Trong tröôøng hôïp naøy chuùng khai baùo tröùc tieáp trong trang myaacount.jsp hay khai baùo thaønh trang söû duïng chung laø checksession.jsp sau ñoù khai baùo cheøn vaøo myaccount.jsp.

<% String userid=getVal((String)session.getValue("userid"),""); if(userid.equals("")|| userid.equals("0") || userid.equals("-1")|| userid.equals("-2")) response.sendRedirect("login.jsp"); %>

Treân trang myaccount.jsp chuùng ta khai baùo moät URL cho pheùp ngöôøi söû duïng thoaùt (logout) khoûi öùng duïng baèng caùch trieäu goïi trang logout.jsp. Trang naøy thöïc hieän quaù trình huyû taát caû caùc session ñaõ taïo ra trong quaù trình söû duïng cuûa ngöôøi duøng vaø troû ñeán trang login.jsp.

<% session.putValue("userid",""); session.putValue("username",""); session.putValue("email",""); session.putValue("fullname",""); response.sendRedirect("login.jsp"); %>

Phaïm Höõu Khang [email protected]

Page 82: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

3. KEÁT LUAÄN

Trong baøi naøy, chuùng ta tìm hieåu chöùc naêng ñaêng nhaäp heä thoáng, baøi keá tieáp chuùng ta tieáp tuïc tìm hieåu veà xaùo döõ lieäu daïng maûng control treân form.

Löu yù raèng, caùc trang jsp treân khoâng söû duïng cheø taäp tin, trong thöïc teá baïn caàn khai baùo caùc trang top, left, right vaø bottom sau ñoù cheøn vaøo moãi trang web khaùc.

Phaïm Höõu Khang [email protected]

Page 83: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

BAØI 10: XOAÙ, CAÄP NHAÄT DÖÕ LIEÄU DAÏNG MAÛNG

Trong baøi tröôùc chuùng ta ñaõ laøm quen vôùi caùch xoaù maåu tin trong cô

sôû döõ lieäu SQL Server. Ñoái vôùi tröôøng hôïp xoaù moät luùc nhieàu maåu tin, chuùng ta phaûi xaây döïng trang JSP coù söû duïng theû input daïng checkbox. Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy

Lieät keâ döõ lieäu daïng danh saùch Xoaù nhieàu maåu tin Caäp nhaät nhieàu maåu tin

1. LIEÄT KEÂ DÖÕ LIEÄU

Ñeå xoaù nhieàu maåu tin cuøng moät luùc, tröôùc tieân baïn khai baùo trang JSP ñeå lieät keâ danh saùch maåu tin trong maûng döõ lieäu chaèng haïn, moãi laäp trình xuaát hieän moät checkbox töông öùng. Checkbox naøy coù giaù trò laø maõ nhaän daïng cuûa maåu tin ñoù. Trong tröôøng hôïp naøy chuùng ta duøng coät khoaù cuûa maõ saùch trong baûng tblItems.

Tuy nhieân, ñeå cho pheùp laáy ñöôïc nhieàu giaù trò choïn cuûa saûn phaåm, baïn khai baùo caùc checkbox naøy cuøng teân (giaû söû teân laø chkid) vaø giaù trò trò laø ItemID cuûa moãi saûn phaåm nhö ví duï 10-1 trong trang deletesach.jsp.

try{ rst=smt.executeQuery(strSQL); while(rst.next())

{ ID=rst.getString("ItemID");

out.println("<tr><td width=50 ><input type=checkbox "); out.println("name=chkid value='"+ID+"'></td>"); out.println("<td width=50 valign=top>"+ID+"</td>"); strO =rst.getString("ItemName"); out.println("<td width=250 valign=top>"); out.println( strO + "</td>"); strO =rst.getString("ListPrice"); out.println("<td width=50 valign=top>"); out.println( strO + "</td>"); strO =getVal(rst.getString("SalesDiscount"),""); out.println("<td width=50 valign=top>"); out.println( strO + "</a></td>"); strO =getVal(rst.getString("SalesPrice"),""); out.println("<td width=50 valign=top>"); out.println( strO + "</a></td>"); strO =rst.getString("ItemStyle"); out.println("<td width=100 valign=top>"); out.println( strO + "</a></td>"); out.println( "</tr>"); totalRecords++;

} ...

Tuy nhieân, do nhieàu cuoán saùch thuoäc caùc taùc giaû khaùc nhau, chính vì vaäy baïn khai baùo danh saùch taùc giaû treân theû select cho pheùp ngöôøi söû duïng lieät keâ saùch theo nhoùm taùc giaû nhö hình 10-1.

Phaïm Höõu Khang [email protected]

Page 84: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 10-1: Lieät keâ danh saùch saùch

Ñeå lieät keâ danh saùch taùc giaû trong baûng tblAuthors, baèng caùch khai baùo phöông thöùc nhaän chuoãi SQL daïng Select vaø giaù trò maëc ñònh traû veà nhieàu phaàn töû theû option trong taäp tin database.jsp nhö ví duï 10-2.

<%! public String getOption(String strSQL,String strSelect) { String OptionString=""; Connection cns; Statement smts; ResultSet rsts; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cns = DriverManager.getConnection(odbc,sysuser,syspwd); smts = cns.createStatement(); String ID=""; String strO; String strU; rsts=smts.executeQuery(strSQL); while(rsts.next()) { ID=rsts.getString("ID"); OptionString+="<option value='"+ID+"' ";

Phaïm Höõu Khang [email protected]

Page 85: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

if(!strSelect.equals("")) if(strSelect.equals(ID)) OptionString+=" selected "; strO =rsts.getString("Name"); strU=new String(strO.getBytes("ISO-8859-1"),"UTF-8"); OptionString+= ">" + strO + "</option>"; } rsts.close(); smts.close(); cns.close(); } catch (Exception e){ OptionString=e.toString(); } return OptionString; } %>

Sau ñoù, goïi phöông thöùc naøy trong trang deletesach.jsp nhö ví duï 10-3. <%@ include file="database.jsp"%> <% String strID=getVal(request.getParameter("selectid"),""); String strOptions="<option value=''>Tat ca tac gia</option>"; strOptions+=getOption("Select AuthorID AS ID, AuthorName AS NAME from tblAuthors",strID); %>

Laàn ñaàu tieân baïn coù theå choïn maëc ñònh moät taùc giaû hoaëc lieät keâ taát caû, khi ngöôøi söû duïng choïn taùc giaû naøo ñoù thì trang deletesach.jsp seõ lieät keâ danh saùch saùch cuûa taùc giaû ñoù. Ñeå laøm ñieàu naøy, baïn khai baùo theû form vôùi theû select nhö ví duï 10-4.

<form name=frmSelect method=post action=deletesach.jsp> <tr><td> <font size=3><b>Danh sách Sách</b></font></td><td align=right> Taùc giaû: <select name=selectid onchange="document.frmSelect.submit();"> <%=strOptions%></select></td> </tr> </form>

Khi ngöôøi söû duïng choïn caùc maåu tin nhö hình 10-2 vaø nhaán nuùt Delete, döïa vaøo giaù trò cuûa nuùt coù teân action (trong tröôøng hôïp naøy laø Delete), baïn coù theå khai baùo bieán ñeå laáy giaù trò choïn baèng caùch khai baùo nhö ví duï 10-5.

deleterecord=request.getParameterValues("chkid"); if(deleterecord!=null){ for(int k=0;k<deleterecord.length;k++){ delStr+="'"+deleterecord[k]+"'"+","; } delStr=delStr.substring(0,delStr.length()-1); }

Döïa vaøo theû hidden khai baùo trong caùc trang trình baøy danh saùch maåu tin nhö sau: <input name="from" type=hidden value="deletesach">

Baïn coù theå bieát töø trang naøo goïi ñeán trang dosql.jsp ñeå quay trôû veà khi thöïc hieän xong taùc vuï xöû lyù.

Phaïm Höõu Khang [email protected]

Page 86: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Ngoaøi ra, döïa vaøo giaù trò cuûa nuùt action ñeå thöïc hieän phaùt bieåu SQL. Chaúng haïn, trong tröôøng hôïp naøy neáu ngöôøi söû duïng nhaán huùt Delete thì baïn khai baùo nhö ví duï 10-6 sau:

if(action.equals("Delete")) { strSQL=" delete from tblItems Where ItemID "; msg="Xoá sách thành công"; }

Sau ñoù, söû duïng ñoái töôïng Connection, Statement baïn coù theå thöïc thi phaùt bieåu SQL vöøa khai baùo ôû treân nhö ví duï 10-7.

if(!strSQL.equals("") ) { strSQL+=" in (" + delStr +")"; Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); smt = cn.createStatement(); int i = smt.executeUpdate(strSQL); smt.close(); cn.close(); }

Löu yù raèng, baïn cuõng neân khai baùo try catch trong khi laøm vieäc vôùi cô sôû döõ lieäu. Ngoaøi ra, baïn cuõng phaûi xaùc nhaän tröôùc khi thöïc thi haønh ñoäng xoaù maåu tin choïn baèng caùch khai baùo ñoaïn Javascript nhö sau:

<script> function isok() { return confirm('Are you sure to delete?'); } </script>

Sau ñoù goïi trong bieán coá onsubmit cuûa form nhö sau: <form action=dosql.jsp method=post onsubmit="return isok();">

2. CAÄP NHAÄT NHIEÀU MAÅU TIN

Töông töï nhö tröôøng hôïp Delete, khi baïn duyeät (approval) moät soá maåu tin theo moät coät döõ lieäu naøo ñoù, chaúng haïn, trong tröôøng hôïp naøy chuùng ta cho pheùp söû duïng nhöõng saûn phaåm ñaõ qua söï ñoàng yù cuûa nhaø quaûn lyù thì coät döõ lieäu Activate cuûa baûng tbltems coù giaù trò laø 1.

Ñeå laøm ñieàu naøy, tröôùc tieân baïn lieät keâ danh saùch saûn phaåm nhö hình 10-3.

Phaïm Höõu Khang [email protected]

Page 87: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Phaïm Höõu Khang [email protected]

Hình 10-3: Lieät keâ danh saùch saûn phaåm duyeät hay chöa

Maëc ñònh laø danh saùch saûn phaåm chöa duyeät, ñeå laøm ñieàu naøy baïn hai baùo hai theû input loaïi radio vaø maëc ñònh laø choïn vaøo tuyø choïn thöù nhaát, trong tröôøng hôïp ngöôøi söû duïng choïn vaøo tuyø choïn thöù hai thì sau khi submit baïn choïn laïi tuyø choïn thöù hai nhö ví duï 10-8.

<table border=0 width=100%><tr><td>

Duyeät <input type=radio name=selectstatus

onclick="document.frmSelect.submit();" value="0" checked>No

<input type=radio name=selectstatus

onclick="document.frmSelect.submit();" value="1"

<%if(strStatus.equals("1")){ %> checked<%}%>>Yes</td><td>

Taùc giaû: <select name=selectid onchange="document.frmSelect.submit();">

<%=strOptions%></select>

</td></tr></table>

Ñeå laáy giaù trò ngöôøi söû duïng choïn treân hai tuyø choïn naøy, baïn khai baùo nhö sau:

String strStatus=getVal(request.getParameter("selectstatus"),"0");

Page 88: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Maëc ñònh phaùt bieåu SQL daïng select coù meänh ñeà Where vôùi coät Activate tuyø thuoäc vaøo giaù trò choïn cuûa moät trong hai tuyø choïn treân baïn khai baùo nhö ví duï 10-9:

String strSQL="select ItemID, ItemName,ListPrice, SalesDiscount, SalesPrice, ItemStyle,Activate from tblItems ";

strSQL+=" where Activate='" + strStatus+ "' ";

if(!strID.equals(""))

strSQL+=" and AuthID='" + strID+ "'";

Tuyø thuoäc vaøo soá maåu tin lieät keâ thuoäc traïng thaùi chöa duyeät thì nuùt Approve hieän ra, ngöôïc laïi laø nuùt Unapprove. Ñieàu naøy coù nghóa laø nuùt Approve duøng cho nhöõng maåu tin chöa duyeät vaø ngöôïc laïi. Ñeå laøm ñieàu naøy baïn khai baùo nhö ví duï 10-10.

<input name=action type=submit

value="<%if(strStatus.equals("1")){ %>Unapprove<%}else{%>Approve<%}%>">&nbsp;</td></tr>

Nhö vaäy, döïa vaøo nuùt action coù giaù trò laø Delete, Approve hay Unapprove baïn ñònh nghóa phaùt bieåu SQL trong trang dosql.jsp. Ñoái vôùi tröôøng hôïp naøy chuùng ta khai baùo theâm trong trang dosql.jsp nhö ví duï 10-11.

if(action.equals("Approve"))

{

strSQL=" update tblItems set Activate=1 Where ItemID ";

msg="Duyeät saùch thaønh coâng";

}

if(action.equals("Unapprove"))

{

strSQL=" update tblItems set Activate=0 Where ItemID ";

msg="Huyû duyeät saùch thaønh coâng";

}

3. KEÁT LUAÄN

Trong baøi naøy, chuùng ta tìm hieåu chöùc naêng xoaù, caäp nhaät nhieàu maåu tin baèng caùch söû duïng theû input loaïi checkbox cuøng teân vaø khaùc giaù trò, baøi keá tieáp chuùng ta tieáp tuïc tìm hieåu veà caùch tìm kieám vaø phaân trang trong JSP.

Phaïm Höõu Khang [email protected]

Page 89: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

BAØI 11: TÌM KIEÁM, PHAÂN TRANG

Chuùng ta vöøa laøm quen caùch trình baøy döõ lieäu döôùi nhieàu hình thöùc

khaùc nhau. Trong chöông naøy, chuùng ta tieáp tuïc tìm hieåu caùch xaây döïng cô sôû döõ lieäu vaø trang JSP cho pheùp ngöôøi söû duïng tìm kieám theo hình thöùc ñôn giaûn hay phöùc taïp.

Sau khi cung caáp caùc tieâu chuaån tìm kieám, neáu ngöôøi söû duïng submit thì trang keát quaû seõ trình baøy danh saùch maåu tin thoaû ñieàu kieän ñoù.

Trong tröôøng hôïp soá maåu tin lieät keâ coù soá löôïng nhieàu, baïn coù theå phaân chia ra nhieàu trang nhaèm giuùp cho ngöôøi söû duïng deã xem thoâng tin do hoï tìm kieám. Caùc vaán ñeà chính seõ ñöôïc ñeà caäp:

Xaây döïng baûng döõ lieäu phuïc vuï tìm kieám Tìm kieám ñôn giaûn Tìm kieám naâng cao Phaân trang vaø ñieàu höôùng

1. XAÂY DÖÏNG BAÛNG DÖÕ LIEÄU PHUÏC VUÏ TÌM KIEÁM

Khi thieát keá döõ lieäu, baûng löu tröõ thoâng tin chi tieát cuûa saûn phaåm coù theå coù nhieàu coät, neáu ngöôøi söû duïng cung caáp moät töø khoaù ñeå tìm kieám maåu tin thoaû yeâu caàu naøy, baïn phaûi khai baùo phaùt bieåu Select coù meänh ñeà Where döïa treân caùc coät döõ lieäu cho pheùp tìm.

Tuy nhieân, khi ngöôøi söû duïng cung caáp töø khoaù tìm kieám khoâng thuoäc ñeà taøi cuûa cuoán saùch maø chæ coù moät chöông hay phaàn naøo ñoù trình baøy veà vaán ñeà ñoù, ñoái vôùi tröôøng hôïp naøy chuùng ta xöû lyù nhö theá naøo.

Ñeå cho pheùp keát quaû tìm kieám traû veà öùng vôùi töø khoaù do ngöôøi söû duïng cung caáp maø cuoán saùch coù theå cuøng ñeà taøi hay moät phaàn cuûa chuùng trình baøy veà vaán ñeà coù töø khoaù naøy, chuùng ta khai baùo coät döõ lieäu coù teân keywords.

Coät keywords cho pheùp baïn nhaäp taát caû caùc töø khoaù chính maø saûn phaåm coù ñeà caäp. Chaúng haïn, chuùng ta coù baûng tblItems löu tröõ danh saùch nhieàu loaïi saùch, trong baûng naøy coù coät keywords löu tröõ caùc töø khoaù nhö: COM, COM+, DLL, API, Access, Excel, World, PowerPoint, Outlook, Crystal Report, Unicode, Grid, SQL öùng vôùi cuoán saùch “Kyõ xaûo laäp trình Visual Basic 6.0” vaø SQL Server, Database, Servlet, JSP, JavaScript, SQL, Access, Shopping Cart, Payment, RMI, EJB, Class öùng vôùi cuoán saùch “Xaây döïng öùng duïng thöông maïi ñieän töû baèng JSP vaø Servlet”.

Phaïm Höõu Khang [email protected]

Page 90: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Nhö vaäy, khi ngöôøi söû duïng tìm kieám töø khoaù SQL thì nhöõng cuoán saùch coù trình baøy veà SQL seõ ñöôïc lieät keâ, ñoái vôùi tröôøng hôïp naøy hai cuoán saùch treân vaãn naèm trong danh saùch lieät keâ maëc duø ñeà taøi cuoán saùch laø Java vaø JSP.

Vôùi caáu truùc nhö treân, baïn söû duïng thuaät toaùn tìm kieám theo ñoä öu tieân vaø taùch chuoãi ñeå lieät keâ nhöõng cuoán saùch coù töïa ñeà veà ñeà taøi naøy lieät keâ tröôùc sau ñoù lieät keâ nhöõng cuoán saùch coù trình baøy moät phaàn veà SQL.

Toùm laïi, baïn khai baùo coät keywords ñeå löu tröõ taát caû caùc töø khoaù maø cuoán saùch coù trình baøy veà chuùng. Thay vì so saùnh chuoãi tìm kieám theo yeâu caàu cuûa ngöôøi söû duïng treân nhöõng coät döõ lieäu lieân quan thì baïn chæ caàn so saùnh treân chính coät naøy.

Ñoái vôùi tröôøng hôïp naøy, baïn söû duïng pheùp toaùn LIKE vôùi kyù hieäu % chaúng haïn, cho pheùp baïn so saùnh gaàn ñuùng vôùi chuoãi yeâu caàu tìm kieám.

Tuy nhieân, Microsoft cung caáp moät dòch vuï tìm kieám goïi laø Full-Text Search cho pheùp baïn söû duïng caùc haøm cuûa SQL Server ñeå tìm kieám töø treân moïi coät cuûa baûng döõ lieäu.

TÌM KIEÁM ÑÔN GIAÛN

Sau khi khai baùo coät döõ lieäu coù teân keywords trong baûng tblItems, baïn coù theå nhaäp caùc töø khoaù cuûa töøng saûn phaåm coù toaøn boä hay moät phaàn noäi dung trình baøy veà töø khoaù naøy vaøo coät keywords.

Töø öùng duïng JSP, baïn thieát keá trang tìm kieám ñôn giaûn (basic search) nhö hình 11-1 vôùi textbox cho pheùp ngöôøi söû duïng Internet nhaäp töø khoaù baát kyø. Löu yù raèng, trang naøy coù theå laø moät trang hay moät phaàn trong trang chính khaùc.

Hình 11-1: Trang tìm kieám ñôn giaûn

2.

Phaïm Höõu Khang [email protected]

Page 91: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Ñeå thöïc hieän ñieàu naøy, baïn khai baùo noäi dung HTML cuûa phaàn body trong trang timkiemcoban.jsp nhö ví duï 11-1.

Ví duï 11-1: Phaàn BODY cuûa trang tìm kieám ñôn giaûn ... <body topmargin="0" leftmargin="0" rightmargin="0"> <form action="ketquacoban.jsp" method="GET" name="frmView" onsubmit="return checkinput();"> <table width="100%" border="0" cellspacing="3" cellpadding="3"> <tr> <td colspan="2" ><b> <font face="Arial">Xin vui loøng cung caáp caùc thoâng tin tìm kieám vaøo oâ töø khoaù.<br> </font> </td> </tr> <tr> <td width="30%"><font face="Arial">T� khoá</font></td> <td width="70%"> <font face="Arial"> <input name="keyword" id="word" class=text size="30" > </font></td> </tr> <tr align="left"> <td height="51"> </td><td> <input type=submit value="Tìm Ki�m"> <input type=reset value="Hu�"> <input type=hidden name= "Searchfrom" value="CB"> </td> </tr> </table> </form> </body>

Trong ví duï treân, chuùng ta söû duïng phöông thöùc GET cho theû form nhaèm cho pheùp truyeàn giaù trò tìm kieám cuûa ngöôøi söû duïng leân QueryString thay vì duøng phöông thöùc Post.

Ngoaøi ra, baïn khai baùo ñoaïn JavaScript ñeå yeâu caàu nhaäp töø khoaù tröôùc khi nhaán nuùt Tìm Kieám trong trang timkiemcoban.jsp nhö ví duï 11-2.

Ví duï 11-2: Phaàn khai baùo cheøn file

<SCRIPT language=JavaScript> function checkinput()

Phaïm Höõu Khang [email protected]

Page 92: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

{ if (document.frmView.keyword.value=="" ) { alert("Xin vui long nhap ten, tua de, ten tac gia, nha xuat ban"); document.frmView.keyword.focus(); return false; } return true; } </SCRIPT>

Sau khi ngöôøi söû duïng nhaäp chuoãi ASP vaøo phaàn töø khoaù nhö hình 11-2 vaø nhaán nuùt Tìm Kieám, trang ketquacoban.jsp seõ ñöôïc trieäu goïi, keát quaû trình baøy nhö hình 11-3.

Hình 11-2: Tìm kieám töø khoaù

Ñeå laáy giaù trò nhaäp töø trang timkiemcoban.jsp vaø keát noái cô sôû döõ lieäu, keá ñeán lieät keâ nhöõng maåu tin trong baûng tblItems coù töø truøng vôùi töø ASP taïi coät keywords thì baïn khai baùo meänh ñeà Where trong trang ketquacoban.jsp baïn nhö ví duï 11-3.

Ví duï 11-3: Khai baùo tìm kieám ñôn giaûn if (!(keyword==null)){ strShow += keyword + ", "; strWhere+= " and (ItemName like '%" ;

Phaïm Höõu Khang [email protected]

Page 93: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

strWhere+= keyword; strWhere+= "%' or Keywords like '%" ; strWhere+= keyword; strWhere+= "%' or SubCateName like '%" ; strWhere+= keyword; strWhere+= "%')"; }

Trong ñoù, phaàn ñònh nghóa phaùt bieåu SQL daïng Select vôùi giaù trò tìm kieám töø trang tìm kieám nhö ví duï 11-4 sau:

Ví duï 11-4: Khai baùo kieåm tra <% String strShow=""; String strWhere=""; String keyword=request.getParameter("keyword"); if (keyword==null) { response.sendRedirect("timkiemcoban.jsp"); } if (!(keyword==null)){ strShow += keyword + ", "; strWhere+= " and (ItemName like '%" ; strWhere+= keyword; strWhere+= "%' or Keywords like '%" ; strWhere+= keyword; strWhere+= "%' or SubCateName like '%" ; strWhere+= keyword; strWhere+= "%')"; } %>

Keát quaû tìm kieám lieät keâ nhö hình 11-3 bao goàm danh saùch caùc saûn phaåm coù moät trong nhöõng töø khoaù baèng ASP.

Phaïm Höõu Khang [email protected]

Page 94: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 11-3: Keát quaû tìm kieám

Ñeå laøm ñieàu naøy, baïn khai baùo keát noái cô sôû döõ lieäu vaø ñoïc caùc field trình baøy nhö ví duï 11-5.

Ví duï 11-5: Khai baùo tìm kieám ñôn giaûn <% Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); String strSQL="select * from vwItems where ItemID>0 " ; strSQL += " " + strWhere; String sorts=request.getParameter("sort"); String x="ItemName,ProName,AuthorName"; if( !(sorts==null) && (x.indexOf(sorts)!=-1) ) { strSQL=strSQL + " order by CustomerRating ASC,"; strSQL=strSQL + sorts; strSQL=strSQL + " ASC";

Phaïm Höõu Khang [email protected]

Page 95: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

} String qryString="keyword=" + keyword ; smt = cn.createStatement(); int viewrow=1; try{ rst=smt.executeQuery(strSQL); while(rst.next()) { %>

TÌM KIEÁM NAÂNG CAO

Tìm kieám naâng cao laø cho pheùp ngöôøi söû duïng cung caác tieâu chuaån tìm kieám phöùc taïp hôn, chaúng haïn trong tröôøng hôïp naøy chuùng ta thieát keá trang timkiem.jsp nhö hình 11-4.

Hình 11-4: Tìm kieám naâng cao

3.

Phaïm Höõu Khang [email protected]

Page 96: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Ñoái vôùi trang naøy, yeâu caàu ngöôøi söû duïng ít nhaát phaûi nhaäp giaù trò öùng vôùi field, baèng caùch khai baùo ñoaïn JavaScript ñeå kieåm tra quaù trình raøng buoäc naøy.

Ví duï 11-6: Khai baùo raøng buoäc tìm kieám naâng cao <SCRIPT language=JavaScript> function checkinput() {

if(document.frmView.word.value=="" && document.frmView.subject.value=="" && document.frmView.name.value=="" && document.frmView.author.value=="" && document.frmView.publish.value=="" && document.frmView.ISBN.value=="")

{ alert("Xin vui long nhap tu khoa/ten/tua de/ten tac gia/nha xuat ban de tim kiem"); document.frmView.word.focus(); return false; } return true; } </SCRIPT>

Sau khi nhaán nuùt Tìm kieám, trang ketqua.jsp seõ ñöïôc trieäu goïi, töông töï nhö tröôøng hôïp tìm kieám cô baûn, baïn khai baùo meänh ñeà Where nhö ví duï 11-7.

Ví duï 11-7: Khai baùo meänh ñeà Where <% Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); String strSQL="select * from vwItems where ItemID>0 " ; String strCount="select count(*) as No from vwItems where ItemID>0 "; strSQL += " " + strWhere; strCount+=strWhere; String sorts=request.getParameter("sort"); String x="ItemName,ProName,AuthorName"; if( !(sorts==null) && (x.indexOf(sorts)!=-1) ) { strSQL=strSQL + " order by CustomerRating ASC,"; strSQL=strSQL + sorts; strSQL=strSQL + " ASC"; }

Phaïm Höõu Khang [email protected]

Page 97: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

String qryString="keyword=" + keyword + "&name=" + name +"&subject="+subject+"&author="+author+"&publish="+publish+"&isbn="+isbn+"&sort=" + sorts; smt = cn.createStatement(); int viewrow=1; try{ rst=smt.executeQuery(strSQL); while(rst.next()) { %>

Giaû söû baïn tìm kieám töø khoaù SQL, keát quaû traû veà nhö hình 11-5.

Hình 11-5: Keát quaû tìm kieám naâng cao

PHAÂN TRANG VAØ ÑIEÀU HÖÔÙNG

Khi trình baøy döõ lieäu treân trang keát quaû tìm kieám hay lieät keâ, soá maåu tin coù theå vöôïc quaù khoâng gian trang web coù theå theå hieän, chính vì vaäy phaân trang laø ñieàu caàn thieát.

4.

Phaïm Höõu Khang [email protected]

Page 98: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Giaû söû raèng, baïn muoán trình baøy baøy 10 maåu tin treân moãi trang, moã laàn xuaát hieän 5 trang, neáu soá trang nhieàu hôn 5 seõ xuaát hieän theâm lieân keát Next cho pheùp trình baøy 5 trang keá tieáp.

Töông töï nhö vaäy, khi ngöôøi söû duïng ñang ñöùng sau 5 trang ñaàu tieân, xuaát hieän lieân keá Previous cho pheùp ngöôøi söû duïng trôû veà 5 trang tröôùc ñoù.

Ñeå laøm ñieàu naøy, chuùng ta söû duïng nhöõng thuoäc tính vaø phöông thöùc cuûa ñoái töôïng ResultSet baèng Absolute(i): Troû con troû ñeán maåu tin ñaàu tieân cuûa trang thö i.

Chaúng haïng, khi lieät keâ danh saùch saûn phaåm theo alphabet, soá löôïng maåu tin laø 23 maåu tin, baïn chia chuùng ra thaønh 5 trang moãi trang 5 maåu tin vaø moãi laàn trình baøy 3 trang nhö hình 13-7.

Phaïm Höõu Khang [email protected]

Page 99: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 11-6: Phaân trang

Ñeå laøm ñieàu naøy, baïn khai baùo hai bieán record vaø pages töông öùng vôùi soá maåu tin caàn trình baøy treân moät trang vaø soá trang caàn trình baøy trong moät phaân ñoaïn:

int pageCurrent=1; //trang lay tu QueryString int pages=5; if (request.getParameter("pages")!=null) { try { pages=Integer.parseInt(request.getParameter("pages")); } catch(Exception ex) { pages=5; } } int record=5;// moi lan hien 5 mau tin if (request.getParameter("rows")!=null) { try { record=Integer.parseInt(request.getParameter("rows")); } catch(Exception ex) { record=5; } }

Keá ñeán, tröôùc khi söû duïng phöông thöùc executeQuery cuûa ñoái töôïng Statement vaø söû duïng thuoäc tính:

if(pageCurrent>1) { row=(pageCurrent-1)*record; rst.absolute(row); }

Moãi khi ngöôøi söû duïng trieäu goïi trang JSP naøy, baèng caùch söû duïng ñoái töôïng Request ñeå laáy soá trang töø tham soá page:

Phaïm Höõu Khang [email protected]

Page 100: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

if (request.getParameter("page")!=null) { try { pageCurrent=Integer.parseInt(request.getParameter("page")); } catch(Exception ex) { pageCurrent=1; } }

Löu yù raèng, maëc ñònh trang thöù 1 ñöôïc goïi trong tröôøng hôïp trieäu goïi trang JSP ñaàu tieân.

Sau khi coù ñöôïc trang thöù i caàn trình baøy, baèng caùch söû duïng phöông thöùc Absolute ñeå ñònh vò con troû ñeán maåu tin ñaàu tieân cuûa trang thöù i:

if(pageCurrent>1) { row=(pageCurrent-1)*record; rst.absolute(row); } viewrow=1; while(rst.next()&& viewrow<=record) {

Khi con troû ñöôïc ñònh vò traïi maåu tin ñaàu tieân cuûa trang thö i (bieán PageCurrent), baïn chæ caàn trình baøy ñuùng vôùi soá maåu tin döïa treân bieán record:

while(rst.next()&& viewrow<=record) { %> <tr> <td width="25%" valign="top"> <img src="hinh/ <%=rst.getString("ImagePathSmall")%>" height="100"></td> <td width="75%" valign="top"> <b> <a href="chitiet.jsp?itemid= <%=rst.getString("ItemID")%> &aid=<%="AuthID"%>"> <font face="Arial"> <%=rst.getString("ItemName")%>

Phaïm Höõu Khang [email protected]

Page 101: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

</font></a></b><br> <strong> <%=rst.getString("AuthorName")%></strong><br> �ánh giá c�a khách hàng: <%String CR=rst.getString("CustomerRating");%> <img src="icons/stars <%=(CR==null)?"A1":CR%>.gif" width="64" height="12"><br> Nhà xu�t b�n: <%=rst.getString("ProName")%><br> Giá bìa: <%=rst.getString("ListPrice")%> Gi�m giá: <%=rst.getString("SalesDiscount")%>% <br>

Giá bán: <%=rst.getString("SalesPrice")%><br> Ki�u bìa: <%=rst.getString("ItemStyle")%> <br> <%=rst.getString("Available")%> <br><br></td> </tr> <%viewrow++; } rst.close(); } catch (Exception e){ out.println(e); } smt.close(); cn.close();

Sau khi coù ñöôïc soá trang Pages, soá record maåu tin treân moät trang, moãi laàn trình baøy page trang vaø trang hieän haønh PageCurrent, baïn coù theå khai baùo ñoaïn maõ JSP ñeå coù ñöôïc chuoãi phaân trang nhö ví duï 13-7.

Ví duï 13-7: Phaân trang

<tr> <td width="25%" height="19" align="left" valign="middle"><strong>Trang th�:<font color="#FF0000"> <%=pageCurrent%></font></strong></td> <td width="75%" height="19" align="right"><b> %if (totalRecords>record){%>Trang: <%=getPage(pageCurrent,record, pages,totalRecords, totalPages, "ketqua.jsp?"+qryString)%><%}%></b></td> </tr>

Nhö vaäy, ñeå söû duïng chung ñoaïn phaân trang naøy cho moïi trang JSP coù phaân trang, baïn khai baùo ví duï 13-7 thaønh moät taäp tin JSP vôùi hai bieán record vaø page cuøng vôùi haøm getPage nhö ví duï 11-8.

Phaïm Höõu Khang [email protected]

Page 102: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Ví duï 13-8: phöông thöùc traû veà chuoãi phaân trang

<%! public String getPage(int pageCurrent,int records, int pages, int totalRecords, int totalPages, String strURL) { int startNo=0;int endNo=0;int Segment=0; String strPage=""; totalPages=totalRecords/records; if((totalRecords%records)>0) totalPages+=1; if(totalPages<=1) strPage=""; else { Segment=pageCurrent/pages; if ((pageCurrent % pages)>0) Segment+=1 ; startNo=Segment*pages-pages+1; if (Segment*pages>totalPages) endNo=totalPages; else endNo=Segment*pages; if (Segment>1) { strPage=strPage + "<A href='"+strURL; strPage=strPage + "&page=" ; strPage=strPage + (Segment-1)*pages + "');" ; strPage=strPage + ">Previous</A> " ; } for (int No=startNo;No<=endNo;No++) { if (No==pageCurrent) strPage=strPage + "&nbsp" + No + "&nbsp"; else { strPage = strPage + "&nbsp<A href='"+strURL+"&page="; strPage=strPage + No + "');>" + No + "</A>&nbsp"; } } if (totalPages>pages*Segment) { strPage = strPage + "&nbsp<A href='"

Phaïm Höõu Khang [email protected]

Page 103: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

+strURL+"&page="; strPage = strPage + ((Segment*pages) + 1); strPage = strPage + "');>Next</A>" ; } } return strPage; } %>

Do haøm getPage trong trang paging.jsp seõ ñöôïc duøng chung cho moïi trang JSP, chính vì vaäy baïn khai baùo tham soá querystring ñeå nhaän teân cuûa trang JSP coù söû duïng haøm getPage khi phaân trang.

Chuù yù raèng, neáu ngöôøi söû duïng choïn vaøo chöõ L laäp töùc danh saùch caùc cuoán saùch coù tieàn toá laø L ñöôïc trình baøy, nhö vaäy khi ngöôøi söû duïng choïn trang thöù i thì kyù töï L cuõng seõ ñöôïc gaùn cho tham soá al treân QueryString.

Töông töï nhö vaäy trong tröôøng hôïp trình baøy keát quaû tìm kieám, baïn phaûi baûo ñaûm caùc tham soá trong trang tìm kieám ñöôïc xuaát hieän moãi khi ngöôøi söû duïng choïn trang thöù i.

Ví duï, chuùng ta xaây döïng trang tìm kieám naâng cao coù teân timkiempaging.jsp coù caáu truùc nhö trang ketquapaging.jsp, khi ngöôøi söû duïng nhaäp caùc tieâu chuaån tìm kieám vaø nhaán nuùt Tìm Kieám thì trang ketquapaging.JSP ñöôïc trieäu goïi, keát quaû tìm kieám xuaát hieän nhö hình 11-6.

KEÁT LUAÄN

Chuùng ta vöøa taäp trung tìm hieåu caùch caøi ñaët phaân trang vaø ñieàu höôùng trong trang JSP.

Trong chöông keá tieáp, chuùng ta tieáp tuïc tìm hieåu caùch trình baøy thoâng tin chi tieát cuûa saûn phaåm, xaây döïng gioû haøng vaø cho pheùp ngöôøi söû duïng ñôn ñaët haøng qua maïng.

5.

Phaïm Höõu Khang [email protected]

Page 104: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

BAØI 12: CHI TIEÁT SAÛN PHAÅM

Sau khi trình baøy keát quaû tìm kieám, neáu ngöôøi söû duïng choïn moät saûn

phaåm naøo ñoù thì baïn trình baøy caùc thoâng tin chi tieát cuûa saûn phaåm ñoù. Ngoaøi nhöõng thoâng tin chi tieát cuûa saûn phaåm, baïn neân trình baøy caùc thuoäc tính lieân quan khaùc nhö saûn phaåm boå sung, saûn phaåm thay theá, saûn phaåm ñöôïc caùc khaùch haøng khaùc mua khi choïn saûn phaåm naøy. Caùc vaán ñeà chính seõ ñöôïc ñeà caäp:

Chi tieát ñoä phaân giaûi Saûn phaåm boå sung Saûn phaåm cuûa khaùch haøng thöôøng mua

1. CHI TIEÁT SAÛN PHAÅM

Khi thieát keá döõ lieäu, baûng löu tröõ thoâng tin chi tieát cuûa saûn phaåm coù theå coù nhieàu coät, neáu ngöôøi söû duïng cung caáp moät töø khoaù ñeå tìm kieám maåu tin thoaû yeâu caàu naøy, baïn phaûi khai baùo phaùt bieåu Select coù meänh ñeà Where döïa treân caùc coät döõ lieäu cho pheùp tìm.

Sau khi khaùch haøng choïn moät saûn phaåm treân trang keát quaû tìm kieám, toaøn boä thoâng tin chi tieát cuûa saûn phaåm ñoù caàn ñöôïc trình baøy.

Nhöõng thoâng tin trình baøy tuyø thuoäc vaøo giaûi thuaät cuûa baïn, chaúng haïn, ngoaøi caùc thoâng tin chi tieát cuûa saûn phaåm, baïn trình baøy caùc thoâng tin lieân quan nhö saûn phaåm thay theá, saûn phaåm boå sung vaø nhöõng saûn phaåm maø ngöôøi söû duïng khaùc mua chuùng khi mua saûn phaåm naøy.

Ñeå trình baøy thoâng tin chi tieát cuûa saûn phaåm, baïn coù theå khai baùo ñeå ñònh nghóa meänh ñeà Where nhö ví duï 12-1.

Ví duï 12-1: Khai baùo meänh ñeà Where <% String strShow=""; String strWhere=" "; String id=request.getParameter("itemid"); if (id==null) { response.sendRedirect("ketqua.jsp"); } else { strWhere+= " and I.ItemID= '" + id + "'";

Phaïm Höõu Khang [email protected]

Page 105: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

} %>

Hình 12-1: Chi tieát saûn phaåm

Sau ñoù, baèng caùch ñònh nghóa phaùt bieåu Select nhö ví duï 12-2, baïn coù theå ñoïc döõ lieäu ñeå trình baøy nhö hình 12-1.

Ví duï 12-2: Ñònh nghóa phaùt bieåu Select <% Connection cn; Statement smt; ResultSet rst; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection(odbc,sysuser,syspwd); String strSQL="select ImagePathSmall,ItemName,AuthorName, ";

Phaïm Höõu Khang [email protected]

Page 106: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

strSQL+="CustomerRating,ProName,ListPrice,SalesDiscount, "; strSQL+="SalesPrice, ItemStyle,Available,cast(Subjects "; strSQL+="As varchar(8000)) as Subj,cast(Descriptions "; strSQL+="As varchar(8000)) as Description"; strSQL+=" from tblitems I inner join tblitemdetails D on "; strSQL+=" I.ItemID=D.ItemID right join tblAuthors A "; strSQL+="on A.AuthorID=I.AuthID right join tblProductions "; strSQL+="P on P.ProID=I.ProID where Activate=1 " ; strSQL += " " + strWhere; smt = cn.createStatement(); try{

Baèng caùch söû duïng caùc phöông thöùc ñoïc döõ lieäu cuûa töøng coät, nhö ví duï 12-3.

Ví duï 12-3: Chi tieát saûn phaåm <tr> <td width="25%" valign="top"> <img src="hinh/<%=rst.getString("ImagePathSmall")%>" height="100"></td> <td width="75%" valign="top"> <b>

<a href="chitiet.jsp?itemid=<%=id%>&aid=<%="AuthID"%>"> <%Name=rst.getString("ItemName");%> <font face="Arial"><%=Name%> </font></a></b><br> <strong><%=rst.getString("AuthorName")%></strong><br> Đánh giá của khách hàng: <%CR=rst.getString("CustomerRating");%> <img src="icons/stars<%=(CR==null)?"A1":CR%>.gif" width="64" height="12"><br> Nhà xuất bản: <%=rst.getString("ProName")%><br> Giá bìa: <%=rst.getString("ListPrice")%> Giảm giá: <%=rst.getString("SalesDiscount")%>%<br> Giá bán: <%=rst.getString("SalesPrice")%><br> Kiểu bìa: <%=rst.getString("ItemStyle")%> <br> <%=rst.getString("Available")%> <br><br></td> </tr>

Sau ñoù, khai baùo nuùt cho pheùp ngöôøi söû duïng theâm saûn phaåm naøy vaøo gioû haøng cuøng vôùi caùc theû hidden lieân quan.

Ví duï 12-4: Khai baùo nuùt ñeå theâm saûn phaåm vaøo gioû haøng <form action=them.jsp method=post> <tr> <td height="19" colspan="2"> <input type=hidden value="<%=id%>" name=id> <input type=hidden value="<%=Name%>" name=name> <input type=submit value="Gio Hang"> </td> </tr>

Phaïm Höõu Khang [email protected]

Page 107: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

</form>

Chaúng haïn, trong tröôøng hôïp naøy chuùng ta khai baùo theû hidden löu tröõ maõ vaø teân cuûa saûn phaåm ñang xem chi tieát la id, name vaø price.

SAÛN PHAÅM BOÅ SUNG

Saûn phaåm boå sung laø saûn phaåm ñöôïc söû duïng ñeå hoã trôï cho saûn phaåm tröôùc ñoù co hieäu quaû hoaøn thieän hôn. Chaúng haïn, khi baïn mua moät cuoán saùch Visual Basic 6.0 thì neân mua theâm cuoán saùch SQL Server bôû vì cuoán saùch SQL Server cung caáp kieán thöùc boå sung ñeå hoïc Visual Basic 6.0 toát hôn.

Ñeå laøm ñieàu naøy, baïn khai baùo theâm coät GreateBuy löu tröõ maõ cuûa nhöõng saûn phaåm maø nhaø quaûn lyù cho laø coù theå boå sung cho saûn phaåm ñoù. Ví duï nhöõng coá saùch coù saûn phaåm boå sung laø nhö sau:

select I.ItemID, ItemName, GreateBuy from tblItems I, tblItemDetails D Where I.ItemID=D.ItemID

Keát quaû trình baøy nhö hình 12-2 trong Query Analyzer nhö sau.

Hình 12-2: Saûn phaàm boå sung

2.

Phaïm Höõu Khang [email protected]

Page 108: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Baèng caùch laáy giaù trò trong coät GreateBuy cuûa töøng saûn phaåm, baïn coù theå khai baùo chuoãi Select öùng vôùi nhöõng saûn phaåm coù maõ naèm trong chuoãi giaù trò naøy:

String GreateBuy=””; ... GreateBuy=rst.getString("GreateBuy"); ... strSQL="select I.ItemID, ItemName, GreateBuy "; strSQL+=" from tblItems I, tblItemDetails D strSQL+=" Where I.ItemID=D.ItemID"; strSQL+=" and I.ItemID in (" + GreateBuy + ")";

Sau ñoù duyeät taát caû saûn phaåm vaø trình baøy nhö hình 12-3.

Hình 12-3: Saûn phaåm boå sung

Phaïm Höõu Khang [email protected]

Page 109: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Ñeå laøm ñieàu naøy, baïn khai baùo nhö sau: ... strSQL="select I.ItemID, ItemName, GreateBuy "; strSQL+=" from tblItems I, tblItemDetails D strSQL+=" Where I.ItemID=D.ItemID"; strSQL+=" and I.ItemID in (" + GreateBuy + ")"; rst=smt.executeQuery(strSQL); while(rst.next()) { id=rst.getString("ItemID"); %> <tr> <td height="19"><%=id%></td> <td height="19"><a href="chitiet.jsp?id=<%=id%>"> <%=rst.getString("ItemName")%></a></td> </tr> <% } rst.close(); ...

3. SAÛN PHAÅM CUÛA KHAÙCH HAØNG THÖÔØNG MUA

Ngoaøi danh saùch caùc saûn phaåm boå sung, nhaø quaûn lyù neân cung caáp nhöõng cuoán saùch maø thuôøng khaùch haøng mua ñính keøm khi mua cuoán saùch hieän haønh. Ñeå laøm ñieàu naøy, baïn khai baùo coät döõ lieäu trong baûng tbltemDetails coù teân laø Relations.

Baèng caùch khai baùo bieán Relations vaø laáy giaù trò töø coät naøy ra, sau ñoù khai baùo phaùt bieåu Select ñeå lieät keâ danh saùch caùc saûn phaåm naøy.

String Relations=""; ... Relations=rst.getString("Relations"); ... strSQL="select I.ItemID, ItemName, GreateBuy "; strSQL+=" from tblItems I, tblItemDetails D Where " ; strSQL+=" I.ItemID=D.ItemID"; strSQL+=" and I.ItemID in (" + Relations + ")"; rst=smt.executeQuery(strSQL);

Phaïm Höõu Khang [email protected]

Page 110: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Keát quaû trình baøy nhö hình 12-4.

Hình 12-4: Danh saûn phaåm lieân quan khaùc

Ñeå laøm ñieàu naøy, baïn khai baùo ñoaïn chöông trình nhö sa: <table width="100%" border="1" cellspacing="1" cellpadding="1"> <% strSQL="select I.ItemID, ItemName, GreateBuy "; strSQL+=" from tblItems I, tblItemDetails D "; strSQL+=" Where I.ItemID=D.ItemID"; strSQL+=" and I.ItemID in (" + Relations + ")"; rst=smt.executeQuery(strSQL); while(rst.next()) { id=rst.getString("ItemID"); %> <tr> <td height="19"><%=id%></td>

Phaïm Höõu Khang [email protected]

Page 111: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<td height="19"><a href="chitiet.jsp?id=<%=id%>"> <%=rst.getString("ItemName")%></a></td> </tr> <% } rst.close();

KEÁT LUAÄN

Chuùng ta vöøa taäp trung tìm hieåu caùch caøi ñaët gioû haøng, cho pheùp ngöôøi söû duïng theâm, caäp nhaät soá löôïng vaø huyû gioû haøng baèng JSP.

4.

Phaïm Höõu Khang [email protected]

Page 112: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Moân hoïc: Java Server Pages

BAØI 13: GIOÛ HAØNG VAØ CHI TIEÁT SAÛN PHAÅM

Baát kyø öùng duïng thöông maïi ñieån töû naøo coù baùn haøng qua maïng ñeàu

coù chöùc naêng gioû haøng, gioû haøng giuùp cho ngöôøi söû duïng löu tröõ saûn phaåm trong khi ñang choïn nhöõng saûn phaåm khaùc treân maïng.

Sau khi keát thuùc quaù trình theâm vaøo gioû haøng, ngöôøi söû duïng coù theå xem, xoaù hay caäp nhaäp soá löôïng cuûa gioû haøng.

Ngoaøi ra, ngöôøi söû duïng quyeát ñònh ñaët haøng sau khi xem xeùt gioû haøng. Caùc vaán ñeà chính seõ ñöôïc ñeà caäp:

Xaây döïng chöùc naêng gioû haøng Caäp nhaät, xoaù gioû haøng Ñaët haøng

XAÂY DÖÏNG GIOÛ HAØNG

Sau khi khaùch haøng choïn moät saûn phaåm treân trang keát quaû tìm kieám, toaøn boä thoâng tin chi tieát cuûa saûn phaåm ñoù caàn ñöôïc trình baøy.

Hình 13-1: Chi tieát saûn phaåm

1.

Phaïm Höõu Khang [email protected]

Page 113: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Ñeå xaây döïng gioû haøng trong JSP baïn coù theå söû duïng nhieàu caùch khaùc nhau nhö vector, session, cô sôû döõ lieäu, cookie. Tuy nhieân, ñoái vôùi baøi hoïc naøy chuùng ta söû duïng caùch duøng session keát hôïp vôùi maûng hai hcieàu ñeå xaây döïng vaø quaûn lyù gioû haøng trong JSP.

Khi ngöôøi söû duïng choïn nuùt “Gio Hang” trong trang chi tieát saûn phaåm, thì trang them.jsp ñöôïc trieäu goïi. Trang naøy laáy 3 giaù trò chính khai baùo hidden trong trang chi tieát laø id, name,price vaø update ñeå xaây döïng gioû haøng.

String id=getVal(request.getParameter("id"),""); String name=getVal(request.getParameter("name"),""); String price=getVal(request.getParameter("price"),"0"); String update=getVal(request.getParameter("update"),"");

Baèng caùch söû duïng maûng döõ lieäu hai chieàu goàm toái ña 10 saûn phaåm vaø moãi saûn phaåm chuùng ta löu tröõ 4 thoâng tin chính laø maõ, teân, soá löôïng vaø ñôn giaù cuûa saûn phaåm.

String cart[][] =new String[10][4]; int cartno=0;

Trong ñoù, bieán cart laø maûng löu tröõ thoâng tin cuûa saûn phaåm, cartno laø soá saûn phaåm coù trong maûng cart.

Trong tröôøng hôïp laàn ñaàu tieân ngöôøi söû duïng theâm saûn phaåm vaøo gioû haøng, chuùng ta döïa vaøo bieán session coù teân session.getValue("cartno") vôùi giaù trò laø 0 thì theâm saûn phaåm vaøo gioû haøng taïi phaàn töû thöù 0, coøn caùc phaàn töû coøn laïi chuùng ta khôûi taïo giaù trò laø roãng nhö sau:

}else { if(update.equals("")) { cart[0][0]=id; cart[0][1]=name; cart[0][2]="1"; cart[0][3]=price; for (int j=cartno+1;j<cart.length;j++) { cart[j][0]=""; cart[j][1]=""; cart[j][2]=""; cart[j][3]=""; } } }

Phaïm Höõu Khang [email protected]

Page 114: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Neáu saûn phaåm ñöôïc theâm vaøo trong laàn keá tieáp, chuùng ta laáy giaù trò töø bieán session coù teân cart vaø cartno, sau ñoù eùp kieåu sang maûng vaø kieåm tra neáu maõ saûn phaåm chöa toàn taïi thì theâm vaøo.

if(cartno<=9) { boolean check=false; for (int j=0;j<cartno;j++) { if(cart[j][0].equals(id)) { check=true; } } if (check==false) { cart[cartno][0]=id; cart[cartno][1]=name; cart[cartno][2]="1"; cart[cartno][3]=price; cartno++; } } Löu yù raèng, chæ cho pheùp theâm vaøo gioû haøng toái ña 10 saûn phaåm, chính vì vaäy chuùng ta chæ theâm khi giaù trò cuûa bieán cartno nhoû hoaëc baèng 9. Sau ñoù, chuùng ta trình baøy danh saùch nhöõng saûn phaåm ñaõ coù trong gioû haøng baèng caùch söû duïng voøng laëp for nhö sau: <table width=450 border="1" align=center> <tr> <td height="19">#</td> <td height="19">Ma</td> <td height="19"> Ten</td> <td height="19">So Luong</td> <td height="19">Don Gia</td> <td height="19">Tien</td> </tr> <%for (int j=0;j<cart.length;j++) { if(cart[j][0]==null || cart[j][0].equals("")) break; %> <tr> <td width=5><%=j+1%></td> <td width=20> <%=cart[j][0]%></td> <td width=300><%=cart[j][1]%></td> <td width=2> <input size=2 maxlength=3 value="<%=cart[j][2]%>" name="chk<%=cart[j][0]%>"> </td> <td width=25><%=cart[j][3]%></td>

Phaïm Höõu Khang [email protected]

Page 115: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<td width=25> <%= Integer.parseInt((String)cart[j][2])* Double.parseDouble((String)cart[j][3])%></td> </tr> <%}%> </table>

Keát quaû trình baøy nhö hình 13-2.

Hình 13-2: Danh saûn phaåm trong gioû haøng

Löu yù: Trong tröôøng hôïp khoâng coù saûn phaåm ñöôïc theâm vaøo gioû haøng hoaëc tröôøng hôïp caäp nhaät thì trang timkiem.jsp seõ ñöôïc trieäu goïi.

CAÄP NHAÄT GIOÛ HAØNG

Maëc ñònh cuûa moãi saûn phaåm khi theâm vaøo gioû haøng laø 1, sau khi trinh baøy nhö hình 13-2, baïn khai baùo nuùt Caäp Nhaät cho pheùp ngöôøi söû duïng thay ñoåi soá löôïng trong gioû haøng cho moãi saûn phaåm.

Ñeå laøm ñieàu naøy, tröôùc tieân khai baùo theû input coù teân laø chk vaø maõ saûn phaåm nhö sau:

<input size=2 maxlength=3 value="<%=cart[j][2]%>" name="chk<%=cart[j][0]%>"> ...

2.

Phaïm Höõu Khang [email protected]

Page 116: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<input type=submit name=update value="Cap Nhat">

Sau ñoù, baïn khai baùo bieán update ñeå laáy giaù trò cuûa nuùt Update khi ngöôøi söû duïng submit ñeå phaân bieät tröôøng hôïp caäp nhaät soá löôïng trong gioû haøng vôùi tröôøng hôïp khi theâm saûn phaåm vaøo gioû haøng töø trang chi tieát.

String update=getVal(request.getParameter("update"),"");

Trong tröôøng hôïp naøy, döïa vaøo maõ saûn phaåm trong gioø haøng, chuùng ta caäp nhaät sl nhö sau:

/*tröôøng hôïp theâm môùi töø trang chi tieát*/ else { for (int j=0;j<cartno;j++) { cart[j][2]=getVal(request.getParameter("chk" + cart[j][0]),"1"); } }

Löu yù raèng, chuùng ta chæ duyeät soá phaàn töû töø 0 ñeán soá phaàn töû ñang coù, vaø caäp nhaät phaàn töû soá löôïng baèng sôù löôïng töø maøn hình.

Ngoaøi ra, baïn coù theå khai baùo ñoaïn Javascript ñeå kieåm soaùt soá nhaäp hôïp leä treân töøng phaàn soá löôïng cuûa saûn phaåm.

Chaúng haïn, chuùng ta thay ñoåi soá löôïng cuûa saûn phaåm thöù nhaát leân 2 vaø saûn phaåm thöù hai thaønh 3, keát quaû trình baøy nhö hình 13-3.

Phaïm Höõu Khang [email protected]

Page 117: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 12-3: Caäp nhaät soá löôïng

3. HUYÛ GIOÛ HAØNG

Ñeå huyû gioø haøng, baïn söû duïng phöông thöùc removeAttribute ñeå huyû hai ñoái töôïng session coù teân cart vaø cartno. Ñeå laøm ñieàu naøy, baïn khai baùo trang xoa.jsp ñöôïc trieäu goïi, baïn khai baùo nhö sau:

<% session.removeAttribute("cart"); session.removeAttribute("cartno");%>

Sau khi xoaù gioû haøng, thoâng baùo xuaát hieän nhö hình 13-4.

Phaïm Höõu Khang [email protected]

Page 118: 8234 tai lieu_ve_lap_trinh_web

COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

Hình 13-4: Xoaù gioû haøng

4. KEÁT LUAÄN

Chuùng ta vöøa taäp trung tìm hieåu caùch caøi ñaët gioû haøng, cho pheùp ngöôøi söû duïng theâm, caäp nhaät soá löôïng vaø huyû gioû haøng baèng JSP.

Phaïm Höõu Khang [email protected]