You are on page 1of 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:
9 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
9 Giôùi thieäu JSP.
o Script.
o Khai baùo chæ muïc.

1. CAØI ÑAËT JRUN


1.1. 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.

1.2. 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


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. 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:

1.3.1. 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.

1.3.2. 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


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


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


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


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


COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

2. GIÔÙI THIEÄU JSP


2.1. 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.

2.2. 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.

2.3. 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.

Java
Call Engine
Parse
Web (JSK)
Server

Request
Taäp tin
JSP Taäp tin
Instantiate
Java
Servlet
Request
Compile

Response
Taäp tin
Class

Response
Instantiate
Process and
Render

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

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


COMPUTER LEARNING CENTERWWW.HUUKHANG.COM

2.4. 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

3. 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


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:

9 Caâu leänh.
9 Bieán vaø kieåu döõ lieäu.
9 Haèng.
9 Baûng daõy
9 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


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


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


COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

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

4.2. 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);
%>

4.3. 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);
%>

4.4. 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


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. 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]);
%>

4.6. 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


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+old
Str.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


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. 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);
%>

5. 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


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
9 Toaùn töû.
9 Pheùp gaùn trong Java
9 Phaùt bieåu coù ñieàu khieån.
9 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ï


+ Addition a + b
- Subtraction a - b
Arithmetic * Multiplication a * b
/ a / b
Division
% a % b
Modulus
> Greater than a > b
< Less than a < b
>= Greater than or equal a >= b
Relational <= a <= b
Less than or equal
!= a != b
== Not equal a == b
Equal
! !a
Logical && Not a && b

huukhang@yahoo.com 3-1
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

|| AND a || b
OR

~ Complement ~a
& AND a & b
Bit-
| OR a | b
^ Exclusive OR a ^ b
manipulation <<
Left shift
a << b
>> a >> B
>>> Right shift a >>> b
Zero-filled right shift
Assignment
= Increment and assign a = b
++ Decrement and assign a++
-- Add and assign a--
+= Subtract and assign a += b
-= a -= b
Multiply and assign
*= a *= b
/= Divide and assign a /= b
Assignment %= Take modulus and assign a %= b
|= OR and assign a |= b
&= AND and assign a &= b
^= XOR and assign a ^= b
<<= a <<= b
>>= Left shift and assign a >>= b
>>>= Right shift and assign a >>>= b
Zero-filled left shift and
assign
Caste (type) Convert to type (char) b
instance
Instance of Is instance of class? a instanceof b

Create a new object of a


Allocation new new A()
class
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;

huukhang@yahoo.com 3-2
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);

huukhang@yahoo.com 3-3
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”);

%>

huukhang@yahoo.com 3-4
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”));

%>

huukhang@yahoo.com 3-5
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. Pheùp gaùn thoâng thöôøng nhaát nhö sau:

int j=i;
String str1 =” Hello!”;
boolean b=true;
3.2. Pheùp gaùn theâm moät giaù trò laø 1

int k=0;
k++;
3.3. 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
4. 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

huukhang@yahoo.com 3-6
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)
{

huukhang@yahoo.com 3-7
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”);
}
%>

huukhang@yahoo.com 3-8
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]);
}
%>
5. 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ù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, ….

huukhang@yahoo.com 3-9
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
9 Ñoái töôïng Request.
9 Ñoái töôïng Response.

1. Ñ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. 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>

huukhang@yahoo.com 3-1
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.

huukhang@yahoo.com 3-2
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.

huukhang@yahoo.com 3-3
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" %>


<%

huukhang@yahoo.com 3-4
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++;
}
%>

huukhang@yahoo.com 3-5
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>

huukhang@yahoo.com 3-6
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"));

huukhang@yahoo.com 3-7
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.

huukhang@yahoo.com 3-8
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

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

2. Ñ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.

<%@ 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;

huukhang@yahoo.com 3-9
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ä.

huukhang@yahoo.com 3-10
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");
}
%>

3. 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 hai ñoái töôïng chính laø
request vaø response.

huukhang@yahoo.com 3-11
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
9 Ñoái töôïng Session.
9 ÖÙng duïng ñoái töôïng Session.

1. Ñ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. 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.

huukhang@yahoo.com 3-1
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

huukhang@yahoo.com 3-2
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","admin@huukhang.com");
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).

huukhang@yahoo.com 3-3
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.

huukhang@yahoo.com 3-4
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>

huukhang@yahoo.com 3-5
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>

2. 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 ñ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.

huukhang@yahoo.com 3-6
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
9 Xaây döïng taäp tin ñònh daïng noäi dung
9 Thoáng nhaát kích thöôùc cuûa moïi trang JSP
9 Khai baùo haøm vaø thuû tuïc duøng chung
9 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
}

huukhang@yahoo.com 3-1
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>

huukhang@yahoo.com 3-2
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

huukhang@yahoo.com 3-3
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

huukhang@yahoo.com 3-4
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.

huukhang@yahoo.com 3-5
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.

huukhang@yahoo.com 3-6
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">

huukhang@yahoo.com 3-7
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

huukhang@yahoo.com 3-8
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>

huukhang@yahoo.com 3-9
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.

huukhang@yahoo.com 3-10
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

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>

huukhang@yahoo.com 3-11
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.

huukhang@yahoo.com 3-12
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:e
ndpos+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.

huukhang@yahoo.com 3-13
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.

huukhang@yahoo.com 3-14
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
9 Giôùi thieäu JDBC API
9 Caùc ñoái töôïng keát noái cô sôû döõ lieäu.
9 Khai baùo ODBC.
9 Söû duïng caàu noái JDBC-ODBC
9 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. 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.

1.2. 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 huukhang@yahoo.com


COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

• 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.

1.2.1. 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.

1.2.2. 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ôï.

1.3. 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.

2. 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. 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.

2.1.1. 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","");

2.1.2. 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 huukhang@yahoo.com


COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

2.1.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();

2.1.4. 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();

2.2. 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.

2.2.1. 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();

2.2.2. 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);

2.2.3. Ñ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();

2.2.4. 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();

2.3. 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 huukhang@yahoo.com


COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

2.3.1. 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);

2.3.2. Ñ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")

2.3.3. Ñ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();

2.3.4. 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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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
9 Theâm döõ lieäu
9 Xoaù döõ lieäu
9 Caäp nhaät döõ lieäu
9 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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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
9 Moâ hình chöùc naêng ñaêng nhaäp
9 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ø Client


Password Validate

Huyû taát caû


No Session

Database
Validate

Khôûi taïo moät


soá Session
Yes

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


Database

Logout

Phaïm Höõu Khang huukhang@yahoo.com


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
ƒ 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.

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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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
9 Lieät keâ döõ lieäu daïng danh saùch
9 Xoaù nhieàu maåu tin
9 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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

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");

Phaïm Höõu Khang huukhang@yahoo.com


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 huukhang@yahoo.com


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:
9 Xaây döïng baûng döõ lieäu phuïc vuï tìm kieám
9 Tìm kieám ñôn giaûn
9 Tìm kieám naâng cao
9 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 huukhang@yahoo.com


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.
2. 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

Phaïm Höõu Khang huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

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

3. 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

Phaïm Höõu Khang huukhang@yahoo.com


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 huukhang@yahoo.com


COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

String qryString="keyword=" + keyword + "&name=" + name


+"&subject="+subject+"&author="+author+"&publish="+pu
blish+"&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


4. 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.

Phaïm Höõu Khang huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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.
5. 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.

Phaïm Höõu Khang huukhang@yahoo.com


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:
9 Chi tieát ñoä phaân giaûi
9 Saûn phaåm boå sung
9 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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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.
2. 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

Phaïm Höõu Khang huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


COMPUTER LEARNING CENTER WWW.HUUKHANG.COM

<td height="19"><a href="chitiet.jsp?id=<%=id%>">


<%=rst.getString("ItemName")%></a></td>
</tr>

<%
}
rst.close();

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 huukhang@yahoo.com


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:
9 Xaây döïng chöùc naêng gioû haøng
9 Caäp nhaät, xoaù gioû haøng
9 Ñaët haøng

1. 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

Phaïm Höõu Khang huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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.
2. 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]%>">

...

Phaïm Höõu Khang huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com


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 huukhang@yahoo.com

You might also like