Professional Documents
Culture Documents
COM
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.
Baïn phaûi baûo daûm raèng chuùng ñang ôû cheá ñoä Started, trong tröôøng hôïp ñang ôû cheá
ñoä STOP thì baïn choïn dòch vuï naøy vaø nhaán nuùt Start.
Neáu JRUN ñang ôû cheá ñoä Start thì baïn seõ goõ http://localhost:8000 treân trình duyeät
vaø cung caáp username cung vôùi password ñeå ñaêng nhaäp vaøo maøn hình uqaûn trò JRUN neáu
muoán chöông.
Neáu JRUN Default Server ñang ôû cheá ñoä Start thì baïn coù theå goõ ñòa chæ sau treân
browser http://localhost:8100 ñeå chaïy öùng duïng maëc ñònh cuûa JSP.
Ngoaøi ra, neáu baïn khoâng caøi ñaët JRUN nhö moät dòch vuï cuûa heä ñieàu haønh Windows
thì moãi laàn baïn muoán chaïy öùng duïng JSP thì phaøi Start noù leân baèng caùch choïn Start |
Programs | JRUN 4.0 | JRUN Default Server hay JRUN Admin Server roi sau do khôûi
ñoäng JRUN Default Server, phaàn naøy seõ trình baøy trong phaàn caáu hình.
1.3.1. 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.
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
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.
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.
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.
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.
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
<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.
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
int licount=0;
String lsSQL=”Select * from tblusers where active=1”;
double account[];
boolean checkerror=false;
Boolean 2
Byte 1
Char 2
Float 4
Int 4
Long 8
Short 2
Connection
Statement
ResultSet
<%
String strSQL=”select * from tblusers ”;
String strWhere=” where active=0”;
%>
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);
<%!
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;
}
%>
Chaúng haïn tìm vò trí chuoãi hay kyù töï trong Chuoãi
<%
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.
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.
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.
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
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.
<%
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 /
<%
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
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
<%
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”;
<%
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
huukhang@yahoo.com 3-6
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
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”);
%>
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
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.
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.
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
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
huukhang@yahoo.com 3-4
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
huukhang@yahoo.com 3-5
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
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.
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.
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
// 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 > </td>
<td> </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
<%
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.
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
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.
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");
}
%>
huukhang@yahoo.com 3-3
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
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.
huukhang@yahoo.com 3-5
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
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
<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.
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.
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.
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.
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
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.
-------------------------------------------------------------------------------------------
Ñeå coù giao dieän nhö trang sample.jsp nhö treân, baïn coù theå khai baùo nhö ví duï 6-3.
<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.
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.
<html>
<head>
<title>
Welcome to HUUKHANG.COM
</title>
huukhang@yahoo.com 3-9
COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
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
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.
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.
Töông töï nhö vaäy, trang bottom.htm coù noäi dung nhö ví duï 6-5-4.
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
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.
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
<%@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
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
• 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.
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.
Connection con =
DriverManager.getConnection("jdbc:odbc:Northwind","hocvien","");
Hay
con.createStatement();
con.close();
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.
Statement st = con.createStatement();
Hay
Statement st = null;
st = con.createStatement();
st.executeUpdate(sql);
Hay khai baùo bieán int ñeå nhaän soá maåu tin ñöôïc thöïc thi
st.close();
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ù.
ResultSet rs = st.executeQuery(sql);
Hay
ResultSet rs = null;
// hoaëc ResultSet rs;
rs= st.executeQuery(sql);
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")
rst.close();
rst.dispose();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con =
DriverManager.getConnection("jdbc:odbc:SQL","sa","sa");
...
}
catch(Exception e)
{
System.out.println("Error : " + e);
}
}
...
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:
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.
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);
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:
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.
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
%>
</body>
</html>
</body>
</html>
</body>
</html>
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:
Sau ñoù, töø trang JSP baïn khai baùo ñeå thöïc thi thuû tuïc naøy nhö sau:
</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:
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:
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:
</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:
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:
</body>
</html>
String strSQL="";
strSQL="select * from tblSubCategories Where cateid='" + cateid +"'";
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.
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
Begin
Database
Validate
Logout
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.
<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;
}
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():
</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 > </td>
<td> </td>
</tr><tr>
<td ></td>
<td ><input type=submit value="Ñaêng nhaäp">
<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.
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.
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");
}
%>
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");
}
else{
/*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:
Sau khi ñaêng nhaäp thaønh coâng, trang myaccount.jsp xuaát hieän nhö hình 9-4.
</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");
%>
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.
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
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.
<%!
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+"' ";
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.
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.
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:
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ù.
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:
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.
Ñ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");
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:
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<%}%>"> </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.
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
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.
Ñ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()
{
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.
if (!(keyword==null)){
strShow += keyword + ", ";
strWhere+= " and (ItemName like '%" ;
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.
<%
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";
}
String qryString="keyword=" + keyword ;
smt = cn.createStatement();
int viewrow=1;
try{
rst=smt.executeQuery(strSQL);
while(rst.next())
{
%>
Ñ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";
}
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.
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:
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")%>
</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.
<%!
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 + " " + No + " ";
else
{
strPage = strPage + " <A
href='"+strURL+"&page=";
strPage=strPage + No + "');>" + No + "</A> ";
}
}
if (totalPages>pages*Segment)
{
strPage = strPage + " <A href='"
+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.
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
<%
String strShow="";
String strWhere=" ";
String id=request.getParameter("itemid");
if (id==null)
{
response.sendRedirect("ketqua.jsp");
}
else
{
strWhere+= " and I.ItemID= '" + id + "'";
}
%>
<%
Connection cn;
Statement smt;
ResultSet rst;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
cn = DriverManager.getConnection(odbc,sysuser,syspwd);
String strSQL="select ImagePathSmall,ItemName,AuthorName, ";
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>
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:
Keát quaû trình baøy nhö hình 12-2 trong Query Analyzer nhö sau.
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");
...
Sau ñoù duyeät taát caû saûn phaåm vaø trình baøy nhö hình 12-3.
...
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();
...
String Relations="";
...
Relations=rst.getString("Relations");
...
<%
}
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.
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
Ñ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.
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]="";
}
}
}
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:
<td width=25>
<%= Integer.parseInt((String)cart[j][2])*
Double.parseDouble((String)cart[j][3])%></td>
</tr>
<%}%>
</table>
...
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:
<% 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.