You are on page 1of 119

Bi ging Lp trnh Mng

LI NI U
Ngy nay, hu nh vic vit mt ng dng chy trn my n cc b khng cn c a
chung v thch hp na. Cc chng trnh v ng dng hin i phi tch hp v triu gi ln
nhau trn mng Intranet (mng cc b), mng Internet (mng ton cu) v ngn ng lp trnh
Java l mt trong nhng la chn tt nht lm vic ny. Java l mt ngn ng lp trnh khng
n gin, ngoi s ni ting v bn thn ngn ng, nn tng Java cn hng n cc ng dng
mng nh: giao tip trn mng theo m hnh khch/ch (client/server) So vi lp trnh thng
thng, lp trnh mng i hi ngi lp trnh nhng hiu bit v k nng chuyn su hn to
giao tip v trao i d liu gia cc my tnh vi nhau.
gip sinh vin chuyn ngnh CNTT trong Nh trng c th tip cn c vi nhng k
thut mi ny, chng ti mnh dn son tho cun Bi ging Lp trnh mng a vo
ging dy cho sinh vin CNTT hc nm th 3 trong Nh trng. Cun bi ging ny c son
tho da trn nn tng cc sinh vin CNTT sau 2 nm hc u trong trng c trang b
y cc kin thc v Ngn ng lp trnh hng i tng, Mng my tnh, Thit k Web. y
l mt mn hc vi c th l kin thc lun i mi v cp nht, do yu cu vi mn hc ny
l sinh vin phi t c thm ti liu, gio vin ch l ngi hng dn nhng vn c bn
nht cho sinh vin.
Lp trnh mng l mn hc mi c a vo ging dy, nn trong qu trnh son tho bi
ging khng trnh khi b ng v thiu st. Chng ti rt mong c s gip , ng gp
kin ca cc ng nghip v c gi quan tm ln ti bn sau cun sch c hon thin hn.
Mi kin ng gp c th gi v theo a ch email: qtmcn1@yahoo.com.
Chng ti xin chn thnh cm n!
H Ni 12/2005

Cc tc gi

Trang 1

Bi ging Lp trnh Mng

MC LC
LI NI U ......................................................................................................................................................1
MC LC.............................................................................................................................................................2
PHN 1: TNG QUAN V LP TRNH MNG ...........................................................................................5
I.

Cc giao thc mng...............................................................................................................................5


I.1.
I.2.
I.3.

II.

H giao thc TCP/IP....................................................................................................................................5


Giao thc TCP v UDP................................................................................................................................6
Dch v t pha my ch v khi nim cng (PORT) ..................................................................................7

Giao tip trn mng theo m hnh khch/ch (Client/Server) v khi nim socket..........................8
II.1.
II.2.
II.3.

Giao tip theo m hnh khch/ch (Client/Server).......................................................................................8


Lp trnh mng thng qua Socket ................................................................................................................8
Tm hiu mt s lp cn thit ca gi th vin Java.net ..............................................................................8

PHN 2:

NGN NG LP TRNH JAVA .............................................................................................15

CHNG 1: TNG QUAN V JAVA .................................................................................................................15


I. Lch s Java.........................................................................................................................................15
II.
Java l g? ......................................................................................................................................16
III.
Cu trc ca Java...........................................................................................................................16
IV.
Cc c tnh chnh ca Java...........................................................................................................18
IV.1.
IV.2.
IV.3.
IV.4.
IV.5.
IV.6.
IV.7.

An ninh .................................................................................................................................................18
Giao din lp trnh ng dng chun - Core API ...................................................................................19
Tng thch vi nhiu kiu phn cng .................................................................................................19
c tnh ng v phn tn ....................................................................................................................19
Hng i tng...................................................................................................................................19
a lung (multi-threads).......................................................................................................................20
Qun l b nh v qu trnh thu dn 'rc' .............................................................................................20

CHNG 2: CC THNH PHN C BN CA NGN NG LP TRNH JAVA .......................................................22


I. Ghi ch (Comment) .............................................................................................................................22
II.
Cu lnh v khi lnh .....................................................................................................................23
II.1.
II.2.

III.
IV.

Cu lnh .....................................................................................................................................................23
Khi lnh....................................................................................................................................................24

Tp k t dng trong JAVA.............................................................................................................24


T kha v tn ................................................................................................................................25

IV.1.
IV.2.

V.

Tn........................................................................................................................................................25
T kha.................................................................................................................................................25

Kiu d liu.....................................................................................................................................25
V.1.
V.2.
V.3.

VI.
VII.

Kiu d liu c bn ....................................................................................................................................26


Kiu d liu dn xut (Reference) ............................................................................................................26
Gi tr mc nh .........................................................................................................................................26

Hng (literal) ..................................................................................................................................27


Bin .................................................................................................................................................27

VII.1.
Kiu bin...............................................................................................................................................28
VII.1.1. Bin i tng..................................................................................................................................28
VII.1.2. Bin lp............................................................................................................................................28
VII.1.3. Bin cc b.......................................................................................................................................28
VII.1.4. Phm vi ca bin ..............................................................................................................................29

VIII.
IX.

Chuyn i kiu d liu .............................................................................................................29


Biu thc v Ton t.......................................................................................................................30

IX.1.
IX.2.
IX.3.
IX.4.
IX.5.
IX.6.
IX.7.
IX.8.
IX.9.
IX.10.

X.

Cc ton t s hc:................................................................................................................................30
Cc php ton tng gim.........................................................................................................................2
Ton t quan h v iu kin ..................................................................................................................2
Ton t lun l........................................................................................................................................2
Cc ton t lm vic vi bit ....................................................................................................................2
Ton t gn ...........................................................................................................................................33
Mt s ton t khc ..............................................................................................................................33
Php ton trn kiu chui ( String) .......................................................................................................34
u tin cc ton t...........................................................................................................................34
Biu thc...............................................................................................................................................35

Cc cu lnh iu khin..................................................................................................................35

Trang 2

Bi ging Lp trnh Mng


X.1.
Cu trc r nhnh .......................................................................................................................................35
X.1.1. Cu trc iu kin r nhnh if.............................................................................................................35
X.1.2. Cu trc iu kin r nhnh phc : switch ..........................................................................................36
X.2.
Cu trc lp ................................................................................................................................................38
X.2.1. Vng lp for ........................................................................................................................................38
X.2.2. Vng lp while v do: .........................................................................................................................39
X.3.
Ngoi l v cu lnh nm bt ngoi l .......................................................................................................41

CHNG 3: APPLETS ..................................................................................................................................43


I. i cng v HTML............................................................................................................................43
II.
Tng quan v applet........................................................................................................................43
II.1.
V d v Applet ..........................................................................................................................................43
II.2.
Vng i ca mt Applet ...........................................................................................................................44
II.2.1. Np mt Applet...................................................................................................................................44
II.2.2. Ri khi v quay tr v trang web cha applet...................................................................................45
II.2.3. Np li Applet (Reloading the Applet)................................................................................................45
II.2.4. Thot khi trnh duyt.........................................................................................................................45
II.2.5. Tm tt ................................................................................................................................................45
II.3.
Cc phng thc c bn.............................................................................................................................46
II.3.1. init() ....................................................................................................................................................46
II.3.2. start() ...................................................................................................................................................46
II.3.3. stop() ...................................................................................................................................................46
II.3.4. destroy() ..............................................................................................................................................46
II.4.
Cc phng thc v v nm bt s kin.....................................................................................................47
II.5.
Cc phng thc cho lp trnh giao din ngi dng ................................................................................47
II.5.1. Cc thnh phn UI xy dng sn.........................................................................................................47
II.5.2. Cc phng thc s dng cc thnh phn UI trong cc Applet......................................................48
II.5.3. Thm mt Text Field khng edit c vo applet Simple ..............................................................48
II.6.
Gii hn ca Applet ...................................................................................................................................49
II.6.1. Gii hn v bo mt ............................................................................................................................49
II.6.2. Cc kh nng ca Applet.....................................................................................................................50
II.7.
Test mt applet...........................................................................................................................................50

III.

Cc tnh nng cao cp ca Applet API...........................................................................................51

III.1.
III.2.
III.3.
III.4.
III.5.
III.6.
III.7.
III.7.1.
III.7.2.

Tm kim v np cc file d liu...........................................................................................................52


Hin th chui tnh trng ngn ..............................................................................................................52
Hin th ti liu trong trnh duyt..........................................................................................................53
Gi thng ip ti cc applet khc .......................................................................................................54
Tm mt applet bng tn: s dng phng thc getApplet...................................................................55
Tm tt c cc applet trn mt trang: s dng phng thc getApplets................................................59
an xen vo cc trang Web ..................................................................................................................60
Cc thuc tnh (Attributes).................................................................................................................61
Cc thng s ca applet .....................................................................................................................61

CHNG 4: CC GI & GIAO DIN ..........................................................................................................63


I. Gii thiu.............................................................................................................................................63
II.
Cc giao din..................................................................................................................................63
II.1.Cc bc to mt giao din .........................................................................................................................63
II.2.Hin thc giao din...........................................................................................................................................64

III.

Cc gi............................................................................................................................................66

III.1.To mt gi .....................................................................................................................................................68
III.2.Thit lp ng dn cho lp (classpath)..........................................................................................................70

IV.

Gi v iu khin truy xut.............................................................................................................72


IV.1. Gi java.lang ..................................................................................................................................................73
IV.1.1.Lp String (lp chui) ............................................................................................................................74
IV.1.2.Chui mc nh (String pool)..................................................................................................................75
IV.1.3.Cc phng thc ca lp String..............................................................................................................76
IV.1.4.Lp StringBuffer.....................................................................................................................................78
IV.1.5.Cc phng thc lp StringBuffer..........................................................................................................80
IV.1.5.Lp java.lang.Math.................................................................................................................................82
IV.1.6.Lp Runtime (Thi gian thc hin chng trnh)...................................................................................84
IV.1.7.Lp System .............................................................................................................................................85
IV.1.8.Lp Class ................................................................................................................................................87
IV.1.9.Lp Object ..............................................................................................................................................88
IV.2. Gi java.util....................................................................................................................................................89
IV.2.1.Lp Hashtable (bng bm)......................................................................................................................90
IV.2.2.Lp random.............................................................................................................................................93
IV.2.3.Lp Vector..............................................................................................................................................94
IV.2.4.Lp StringTokenizer ...............................................................................................................................97

Trang 3

Bi ging Lp trnh Mng


PHN 3:

LP TRNH SOCKET ............................................................................................................102

CHNG 1: LP TRNH TCP SOCKET ...........................................................................................................102


I. Xy dng chng trnh EchoServer ..................................................................................................102
II.
Xy dng chng trnh EchoClient ..............................................................................................103
CHNG 2: LP TRNH UDP SOCKET...........................................................................................................105
I. Xy dng chng trnh ExchangeRateServer ...................................................................................105
II.
Xy dng chng trnh ExchangeRateTable ................................................................................106
PHN 4:

LP TRNH TRN INTERNET ......................................................................................109

CHNG 1: JSP V CC KHI NIM M U ................................................................................................110


I. Cc c ch hot ng ca trang JSP ................................................................................................110
II.
Xy dng trang JSP ......................................................................................................................110
CHNG 2: CC C PHP C BN CA JSP ................................................................................................112
I. Cc i tng mc nh ca JSP ......................................................................................................112
II.
Cc th lnh JSP...........................................................................................................................112
II.1.
II.2.
II.3.
II.4.
II.5.

III.

Th bc m <% %>..................................................................................................................................112
Th hin th kt xut <%= %> .................................................................................................................113
Th ch dn bin dch trang <%@ page %>.............................................................................................114
Chn ch thch vo m trang JSP.............................................................................................................114
Khai bo phng thc v bin hng <%! %> ..........................................................................................116

Truy xut c s d liu trong trang JSP.......................................................................................116

TI LIU THAM KHO ...............................................................................................................................119

Trang 4

Bi ging Lp trnh Mng

Phn 1: Tng quan v lp trnh mng


I.Cc giao thc mng
I.1.H giao thc TCP/IP
hai hay nhiu my c th giao tip c vi nhau, chng phi dng mt ngn ng chung:
chng hn my ny phi gi nhng tn hiu g n my kia v my kia phi gi tr li nhng tn
hiu no nhn bit. Trn Internet ngy nay vic hai my c th trao i c vi nhau a s
u da theo quy c hay giao thc ct li l TCP/IP (Transmission Control Protocol/ Internet
Protocol). Theo giao thc ny, mi my s c t cho mt s ring bit gi l a ch IP (IP
address) c vai tr tng t s in thoi, chng hn my tnh c tn l www.microsoft.com s c
a ch IP l 207.46.230.219. Cc s IP ny l duy nht v khng my no c trng nhau (trn
ton th gii). Khi bn mun my ca mnh c a ch IP tham gia vo h thng Internet ton
cu nh l mt my ch (host hay server) ta phi ng k vi t chc quc t InterNIC (Internet
Network Information Center) nhn c mt s IP ring bit.
Vy ti sao va c a ch IP li va c tn ring cho tng my? Dng ci no xc nh
lin lc vi mt my ch (nh trn, ta nn dng www.microsoft.com hay s 207.46.230.219
kt ni vi mt my ch ca cng ty Microsoft). Tht ra tn v a ch IP l mt, nhng a ch IP
c ghi bng s, cn tn ca my ch li c ghi bng ch c ngha v gn gi hn vi con
ngi. Vi mi h thng u c s chuyn i trc tip t tn vng thnh a ch IP thch hp
trc khi d liu c gi i.
V d i vi Windows c th tham kho hai tp tin HOSTS v LMHOSTS y l hai tp tin
vn bn (c coi nh mt c s d liu) lu tr tp hp cc s IP cng vi tn tng ng. Ta
c th t thm vo a ch IP v tn my ch cch nhau bng khong trng. Khi c nhu cu truy
cp n mt my xa qua giao thc mng TCP/IP nu g vo tn my ch th h thng s t tm
a ch IP tng ng trong tp tin ny:
Tp tin HOSTS
216.32.74.52 www.myyahoo.com
164.71.2.70 www.fujitsu.com
Tn ca my ch cn c gi l tn vng (domain name) bi v chng c t theo th t
phn cp ca tn lnh th, vng, t chc, hay tn c nhn... mi nhm phn cp cch nhau bi
mt du chm (.). Cng vic theo di s thay i tn c phn phi qua Internet nh cc my
ch ln DNS (Domain Name System) theo di cc my ch khc trong vng con ca chng.
Trang 5

Bi ging Lp trnh Mng


Trc y mi my c th t mnh lu tr mt tp tin cha phn ln cc tn v a ch ca nhng
my ch thng dng (nh trong Windows l tp tin HOSTS v LMHOSTS), nhng ngy nay ta
khng lm nh vy na m a s cc tn vng cng nh a ch IP c ly xung t cc my
ch DNS.
Khi c tn vng ca mt my ch ta i t tri qua phi. V d:
Java.sun.com

tn my tnh

tn t chc

tn vng

Ni chung l theo quy c t phn ring bit nht n phn chung nht. Tuy nhin khng bt
buc l nh vy, ta vn c th t tn theo cch khc, khng nht thit l ch gm 3 hay 4 nhm
(v d: here.is.along.name.address.co.vn l hp l) bi v cui cng th tn vng cng c h
thng DNS chuyn thnh a ch IP m thi.

I.2.Giao thc TCP v UDP


Qu trnh chuyn d liu trn mng l kh phc tp. Chi tit qu trnh ny din ra tng t
nh trong thc t ta gi th hay bu phm, trc ht phi ghi r a ch ni n (trng hp ny
l a ch IP ca my ch), sau c th gi thng thng hoc gi bo m (ty theo cch gi
m th hay bu phm c chc chn n c tay ngi nhn hay khng), ngi nhn sau khi
nhn c c th hi m tr li l nhn hoc b mt mt g trong qu trnh chuyn ti.
Ngi gi c th gi tip nhng phn b mt (hoc khng cn gi na)
Cch chuyn d liu bo m da vo giao thc TCP (Transmission Control Protocol), cn
cch truyn khng m bo da vo giao thc UDP (User Datagram Protocol).
Giao thc TCP gi tng gi d liu i, ni nhn theo giao thc ny phi c trch nhim
thng bo v kim tra xem d liu n hay cha, c li hay khng c li. Trc khi chuyn
d liu bao gi cng c s kt ni gia my gi v my nhn. Do phi m bo d liu c
truyn chnh xc v lun duy tr kt ni nn s dng giao thc TCP cn chim thm mt s ti
nguyn ca h thng v cch lp trnh cho giao thc ny hi kh (phi thc hin cc bc kim
tra d liu theo yu cu ca TCP). Truyn d liu theo TC thng p dng cho cc dch v nh
truyn tp tin, cc dch v trc tuyn trn Internet i hi tin cy cao
Giao thc UDP ngc li khng ng tin cy lm, khng c s kt ni trc no gia ni gi
v ni nhn, d liu gi i mc nh rng my tnh u nhn lun trng thi sn sng tip

Trang 6

Bi ging Lp trnh Mng


n d liu gi n. Nu d liu gi n b li trong qu trnh truyn hay khng nhn c y
giao thc UDP cng khng c thng tin phn hi g li cho ni gi. Tuy nhin UDP khng i
hi s chnh xc cao nh dch v thng bo gi, t gi hay cc dch v gi nhn tin

I.3.Dch v t pha my ch v khi nim cng (PORT)


Ta c th kt ni vo Internet thng qua dch v ca nh cung cp cn gi l ISP (nh FPT,
Cnet ...) bng ng in thoi thng qua modem. Cc nh dch v ny ng vai tr nh nhng
my ch (server) gip d dng truy cp d liu t nhng vng khc nhau trn mng.
Khi kt ni vo my ch ta c th yu cu my ch nhiu dch v khc nhau, nh dch v truy
tm v c cc trang Web trn Internet, dch v gi nhn e-mail, dch v d tm h thng tn
vng DNS ... Mi dch v u c cch gi nhn d liu theo quy c ring. TCP v UDP ch chu
trch nhim a d liu t mt my tnh ny n mt my tnh khc, cn d liu c gi cho
dch v no th phi thng qua mt dch v na gi l cng (hay port). Mi chng trnh dch v
s s dng mt cng khc truy xut thng tin. Cng l mt s nguyn dng c gi tr t 1 n
16383
My ch (server) s quy nh cng c s dng cho mi loi dch v. Thng tin gia my
khch (client) v my ch (server) phi s dng cng tng ng nhau th mi trao i c vi
nhau. Tuy nhin, hu ht cc chng trnh dch v ni ting hin nay u c quy nh chun cng
dnh ring cho mnh nh:
Dch v cng (port)
FTP21
HTTP80
Telnet23
Finger79
SMTP25
Nu t xy dng mt ng dng lm dch v trn my ch ta phi chn cho mnh mt s cng
c cc gi tr khc vi nhng gi tr cng m nhng dch v ni ting khc s dng.

Trang 7

Bi ging Lp trnh Mng

II.Giao tip trn mng theo m hnh khch/ch (Client/Server) v


khi nim socket.
II.1.Giao tip theo m hnh khch/ch (Client/Server)
C rt nhiu dch v h tr trn Internet nh e-mail, nhm tin (newsgroup), chuyn tp tin
(file transfer), ng nhp t xa (remote login), truy tm cc trang Web ... Nhng dch v ny c
t chc v kin trc theo m hnh khch/ch (m hnh Client/Server). Cc chng trnh my
khch (client) nh trnh duyt (Web Browser) hay chng trnh gi nhn e-mail s to ra kt ni
(connection) vi mt my ch xa (server) sau gi cc yu cu n my ch, cc chng
trnh dich v trn my ch nh Web server hay Mail server ... s x l nhng yu cu ny v gi
kt qu ngc v cho my khch (chng hn Web theo a ch m my khch a n cn Mail
server th lu gi v gi v cho my khch nhng bc e-mail mi). Thng thng mt dch v
trn my ch phc v cho rt nhiu khch.

II.2.Lp trnh mng thng qua Socket


Nh vy trc khi yu cu mt dch v trn my ch thc hin iu g , my khch
(client) phi c kh nng kt ni c vi my ch. Qu trnh kt ni ny c Java thc hin
thng qua mt c ch tru tng ha gi l Socket (tm gi l c ch cm). Kt ni gia my
khch v my ch tng t nh vic cm phch in vo cm in. My khch thng c coi
nh phch cm in cn my ch c coi nh cm in, mt cm c th cm vo nhiu
phch in khc nhau cng nh mt my ch c th kt ni v phc v cho rt nhiu my khch.
Nu kt ni socket thnh cng th my khch v my ch c th trao i d liu vi nhau
thc hin cc yu cu v dch v trn my ch. Vic kt ni theo c ch socket cn bit hai thng
tin ch yu l a ch ca my cn kt ni v s hiu cng ca chng trnh dch v. Java cung
cp lp Socket (thng c dng nh phich cm in cho my khch) v lp ServerSocket
(thng c dng nh cm in t trn my ch). Hai lp ny c t trong gi th vin
Java.net.

II.3.Tm hiu mt s lp cn thit ca gi th vin Java.net


a. Lp InetAddress
V a ch Internet theo s IP v theo tn rt thng dng khi kt ni vo mng cho nn Java
xy dng hn mt lp InetAddress dnh ring cho vic qun l a ch theo tn v theo s. Lp
InetAddress cung cp cc phng thc static thng dng nht dng chuyn i v truy xut

Trang 8

Bi ging Lp trnh Mng


a ch IP (khng c phng thc khi dng cho lp ny). Thng ta s quan tm n cc
phng thc sau:

public static InetAddress getLocalHost ()


throws UnknownHostExceptiongetByName
Tr v i tng InetAddress l a ch ca my cc b (local host)

public static InetAddress getByName (String host)


throws UnknownHostException

Phng thc ny nhn a ch ca mt my bng kiu chui String v tr v i tng kiu


InetAddress thay mt cho a ch my ny.

public static InetAddress[] getAllByName (String host)


throws UnknownHostException

Phng thc ny nhn a ch ca mt my bng kiu chui v tr v tt c cc i tng


InetAddress thay mt cho a ch my ny.

public byte[] getAddress()


Tr v a ch IP ca i tng InetAddress di dng mt dy cc byte. V tr byte cao

nht nm byte 0.

public String getHostAddress()


Tr v a ch IP ca i tng InetAddress di dng mt chui c dnh dng phn

lm 4 nhm %d.%d.%d.%d (V d: 172.16.11.12).


Di y l v d cho thy cch dng lp InetAddress ly v cc thng tin ca a ch
my ch:
V d 1-0 AddrLookupApp.java
import java.net
b. Lp Socket
Lp Socket dng to kt ni t pha khch vi my ch thng c khi dng bng cc
phng thc sau:

public Socket (String host, int port)


throws UnknownHostException, IOException

To ra mt socket kt ni my c tn theo a ch host v s cng port.

public Socket(InetAddress address, int port) throws IOException

To ra mt socket kt ni a ch l i tng InetAddress v s cng port.

Trang 9

Bi ging Lp trnh Mng

Public Socket(String host, int port, boolean stream) throws IOException

To ra mt socket kt ni theo a ch host v s cng port tham s stream cui cng quy
nh kt ni theo TCP (stream=true) hay UDP (stream=false). Tuy nhin nu p dng to
socket cho giao thc UDP nn s dng lp thay th l DatagramSocket.
Cc phng thc khc h tr cho lp Socket t pha my khch bao gm:

InputStream get InputStream() throws IOException

Ly v lung nhp my khch c th nhp d liu tr v t pha my ch.

OutputStream get OutputStream() throws IOException

Ly v lung xut my khch c th ghi d liu gi n my ch.

InetAddress get InetAddress()

Ly a ch kt ni socket ca my ch

int getPort()

Ly v s cng dng kt ni ca my ch.


V d on m sau s thc hin kt ni vi my ch c a ch my.testing.server v m ra
hai lung xut nhp c v gi thng tin n my ch theo s cng 1234.
try{
Socket me=new Socket(my.testing.server, 1234);
// Lung nhp thng tin tr v my ch t pha kt ni
DataInputstream in = new DataInputStream(me.getInputStream());
// Lung xut ghi thng tin gi n my ch
DataOutputStream out = new DataOutputStream(me.getOutputStream());
Catch (Exception e) {
System.out.println(e);
}
c. Lp ServerSocket
Lp ServerSocket dng to kt ni t pha my ch vi cc my khch. i tng
ServerSocket c to ra trn my ch v lng nghe nhng kt ni t pha my khch gi n
theo mt s cng ng trc. i tng ServerSocket c khi dng t phng thc sau:

public ServerSocket(int port) throws IOException

port l s hiu cng m i tng ServerSocket phi lng nghe nhn bit nhng kt ni t
pha my khch gi n
ch i kt ni t cc my khch gi n i tng ServerSocket thng nh n phng
thc accept nh sau:

Socket accept () throws IOException


Trang 10

Bi ging Lp trnh Mng


Phng thc ny thc s dng li ch i cho n khi nhn c thng tin kt ni s tr v
i tng socket ca my khch ni c yu cu ni vo my ch.
Cui cng my ch c th ct t mi kt ni bng cch gi phng thc close ca i tng
ServerSocket

Public void close () throws IOException

V d on m sau s to mt i tng ServerSocket tr my ch lun lng nghe kt ni t


pha my khch gi n qua s cng 1234
Try {
ServerSocket server = new ServerSocket (1234);
Socket client;
// Chng trnh s dng li y ch i s kt ni
client = server.accept ();
// C mt kt ni gi n t pha my khch
System.out.println(Accept connect);
// X l cc yu cu v dch v
//
// Ct t cc kt ni
client.close ();
server.close ();
catch (Exception e) {
System.out.println (e);
}
d. Lp DatagramSocket
Lp ny c dng chuyn i mt gi d liu (biu din bng i tng
DatagramPackage) theo giao thc UDP. D liu c gi i khng bo m c nhn y v
c th b li trn ng truyn (c ch dng DatagramSocket khng an ton bng lp Socket).
Di y l mt s phng thc dng ca lp DatagramSocket:

public DatagramSocket () throws SocketException


Phng thc khi dng to kt ni UDP

public DatagramSocket (int port) throws SocketException


Phng thc khi dng to kt ni UDP vi s hiu cng port

public void synchronized send (DatagramSocket p) throws IOException


Gi gi d liu i.

Public void synchronized receive (DatagramSocket p) throws IOException


Trang 11

Bi ging Lp trnh Mng


Nhn gi d liu v.

public void synchronized close ()


ng kt ni.

e. Lp DatagramPackage
Lp ny dng cho mt gi d liu gi i trn mng theo kt ni DatagramSocket. Mt gi c
th cha cc thng tin nh d liu, chiu di gi, cc a ch IP v s cng m t cc gi d
liu c gi i. Di y l mt s phng thc hu dng ca lp DatagramPackage ny:

public DatagramPackage(byte buff[], int len)

Phng thc khi to ra gi c d liu cha trong b m buff[] v chiu di gi d liu l


len.

public DatagramPackage (byte buff[], int len, InetAddress iaddr, int port)

Phng thc khi to ra gi c d liu cha trong b m buff[] cng vi chiu di vng
m mun ly, a ch my ch v s hiu cng.

public InetAddress getAddress()

Tr v a ch cha trong gi d liu.

public byte[] getData()

Tr v d liu tht s cha trong gi.

public int getLength()

Tr v kch thc hay chiu di gi d liu.

public int getPort()

Tr v s hiu cng cha trong gi d liu.


f. Lp URL
URL(Uniform Resource Locator) l a ch nh v ti nguyn trn mng, thng mt mt
URL nh cp bao gm 3 phn: phn nghi thc(protocol), phn a ch hay tn my
ch(host name), v phn ch nh tn tp tin hay ti liu mun ly t my ch v.
Java ng gi tt c nhng c im ny vo mt lp URL. i tng URL c to ra bng
mt trong nhng phng thc khi to sau:

public URL(String spec) throws MalformedURLException

To mt i tng URL t a ch nh v l mt chui.

public

URL(String

protocol,

String

host,

int

port,

String

file)

throws

MalformedURLException

Trang 12

Bi ging Lp trnh Mng


To mt a ch nh v tuyt i vi y nghi thc(protocol), my ch(server), cng(port),
ng dn(file) ti tp tin cn ly trn my ch.

public URL(String protocol, String host, String file) throws MalformedURLException

To mt a ch nh v tuyt i vi y nghi thc(protocol), my ch(server), ng


dn(file) ti tp tin cn ly trn my ch(b qua thnh phn nh v cng giao tip, nu truy tm
trang web theo nghi thc http th cng chng trnh web server mc nh l 80).
Cc phng thc h tr khc dng cho lp URL l:

public final Object getContent() throws IOException

ly v ni dung m kt ni theo a ch URL c c.

String getFile()

Ly v tn tp tin hay ti liu nm trong chui a ch URL c c.

String getHost()

Ly tn my ch(thng l thnh phn thc 2 ca chui URL)

String getPort()

Ly v s hiu cng.

String getProtocol()

Ly v tn giao thc(thng l thnh phn u tin trong chui URL)

String getRef()

Ly v ni dung chui tham kho thm trong chui URL(c t sau du # ca chui)

Public final InputStream openStream() throws IOException

M lung nhp c thng tin tr v t my ch


V d on m sau y dng ly v ni dung trang web index.htm t my ch java.sun.com:
try{
// M kt ni n trang Web theo a ch nh v URL
URL o = new URL(http://java.sun.com/index.htm);
// To lung nhp c ni dung trang Web tr v t my ch
BufferedReader inStream = new BufferedReader(new InputStreamReader(o.openStream()));
// In ni dung trang Web index.htm ra mn hnh
String line;
while((line = in.readLine()) != null) {
Trang 13

Bi ging Lp trnh Mng


System.out.println (line);
}
}catch (Exception e) {
// Qu trnh m v kt ni vi trang web b li
System.out.println (e) ;
}

Trang 14

Bi ging Lp trnh Mng

Phn 2:

Ngn ng lp trnh Java

CHNG 1:

Tng quan v Java


I. Lch s Java
Chng ta bit n Sun Microsystems nh mt nh sn xut phn cng vi cc trm lm
vic UNIX. Trn thc t, hng Sun cng pht trin phn mm, c bit ni ting l h iu hnh
Solaris v h thng tp tin mng (Network File System - NFS). Nm 1990, Sun Microsystems bt
u thc hin d n c tn gi Green nhm pht trin phn mm trong cc thit b in t dn
dng. James Gosling, chuyn gia lp trnh phn mm mng c giao trch nhim thc hin d
n.
Ban u, Gosling s dng C++ vit phn mm iu khin, hin th s cho thit b nh
VCR (Video Cassette Recorder), PDA (Personal Digital Assistant). Nhng ngay sau , Gosling
pht hin ra rng C++ khng phi l ngn ng thch hp cho cng vic ny. Ngn ng C++
mm do iu khin h thng, nhng n li d gy ra nhng li dn n treo h thng. Mt
cch chi tit hn, C++ xm nhp trc tip n ti nguyn h thng, yu cu ngi lp trnh phi
t mnh qun l cc ti nguyn ny. iu ny to thnh mt ro cn khng cho C++ tr thnh
mt cng c vit cc phn mm c tin cy cao, tnh tng thch ln, c bit trong vic iu
khin cc thit b in t dn dng.
Gosling gii quyt vn ny bng cch to ra mt ngn ng lp trnh mi c tn l Oak.
Ngn ng ny c c php ging nh C++, nhng b qua cc tnh nng "nguy him" ca C++ nh
truy cp trc tip ti nguyn h thng, cc php ton vi con tr, np chng tc t. Oak c
thit lp vi mc ch to tnh tng thch cao (chy trn nhiu loi chip khc nhau), gip cc
nh sn xut thit b c th thay i kiu phn cng m khng phi vit li phn mm trc .
Khi ngn ng Oak trng thnh, World Wide Web cng ang bc vo thi k pht trin
mnh m, v i ng pht trin phn mm ca Sun thy rng y cng l ngn ng c bit thch
hp cho Internet. Vo nm 1994, h a ra WebRunner, mt trnh duyt Web vit bng Oak
(sau ny trnh duyt ny c i tn thnh HotJava v hin nay vn ang c tip tc pht
trin).
Cui cng, vo nm 1995, Oak c i tn thnh Java (do mc ch thng mi) v a
ra trnh din ti SunWorld 95. T n nay, Java nhanh chng pht trin. Thm ch trc khi

Trang 15

Bi ging Lp trnh Mng


trnh dch Java u tin c a ra vo thng 1 nm 1996, Java c coi l mt chun cng
nghip cho Internet.
Trong 6 thng u nm 1996, nhiu nh sn xut phn mm cng nh phn cng ng
u th gii mua bn quyn cng ngh Java t Sun, bao gm Adobe, Asymetrix, Borland,
IBM, Macromedia, Metrowerks, Microsoft, Novel, Oracle, Spyglass v Symantec... Cc hng
ny s kt hp Java vo cc sn phm ca h nh: cc phn mm, h iu hnh, cng c pht
trin.

II.Java l g?
Java l cng ngh cho php to ra cc phn mm phn tn (distributed software). y l
nhng phn mm t trn my ch (server), c np v qua kt ni mng v thc hin trn my
khch (client).
Mc d c to ra t nhng nm 70, Internet ch thc s quyn r cc doanh nghip vo
nhng nm 90 nh c s ra i ca World Wide Web. Web cho php ngi s dng truy cp trc
tip cc thng tin trn Internet m khng cn phi hc cc lnh phc tp, cung cp thng tin trc
tuyn v nhiu lnh vc vi hnh nh, m thanh,.. S ra i ca Java cho php Web tin xa hn
na, bin cc trang Web tnh thnh cc ng dng sng ng, c th tng tc vi ngi s dng.
Nhng l do cn bn mi ngi ch n Java l:
+ Cho php vit cc chng trnh mnh v tin cy.
+ Xy dng ng dng chy c trn hu ht cc phn cng v h iu hnh khc nhau
(multi-platform).
+ Phn phi cc ng dng trn mng vi bo mt v an ton cao.
Nh vy, c th ni Java thay i chc nng ca Internet, cng ging nh Web thay i
cch tip cn vo Internet ca chng ta. Ni cch khc, Java chuyn mng t ch ch n
thun cung cp thng tin v chia s ti nguyn sang ng vai tr h iu hnh. y chnh l nn
mng cho php xy dng cc my tnh mng (Network Computer - NC) ca Oracle, IBM v Sun.

III.Cu trc ca Java


Sc mnh Java c c chnh l nh cu trc ca n. Java c thit k nhm mc ch trc
ht l n gin ho cng vic ca ngi lp trnh. K n, do nhu cu chy trn mng, Java phi
tht s an ton v n nh, cng nh c kh nng lm vic c vi nhiu kiu phn cng, phn
mm khc nhau. Cu trc ngn ng Java thc s m bo c tt c cc tnh nng trn.

Trang 16

Bi ging Lp trnh Mng


Cng nh cc ngn ng lp trnh khc, Java cn mt trnh bin dch chuyn i m lnh
cho ngi c (m ngun) sang ng dng thc thi c. Cc trnh bin dch thng thng nh
Microsoft Visual C++ cho Windows 95 s bin dch chng trnh sang m lnh thc hin trn
mt loi phn cng nht nh no (trong trng hp ny l m lnh cho Intel x86). Tri li,
trnh bin dch Java li chuyn chng trnh ngun Java thnh cc bytecode. Cc bytecode ny
ch c th chy c trn my o Java (Java Virtual Machine -JVM).
Lu : Hin nay, my o Java (JVM) mi c to dng bng phn mm ch khng phi
phn cng. Sun Microsystems v mt s cng ty in t khc ang tin hnh nghin cu pht
trin chip picoJava, nhm mc ch to my o Java bng phn cng. Cc chip ny cho php a
Java vo cc thit b in t mt cch d dng hn, ng thi lm tng tc ti a cho cc JVM
vit bng phn mm.
B Java Developers Kit (JDK) do Sun cung cp bao gm mt s chng trnh tin ch cho
php bn bin dch, bt li v to ti liu cho mt ng dng Java. Hin nay trn th trng ang
c rt nhiu mi trng pht trin Java ca hng th ba rt tin li (nh Visual J++, Symantec
Cafe,..), nhng tt c cc chng trnh ny u da trn nn JDK. Cc trnh tin ch ca JDK bao
gm:
javac: B bin dch Java: Lm nhim v chuyn m ngun Java sang bytecode.
java: B thng dch Java: Thc thi cc ng dng Java trc tip t tp tin lp (class).
appletviewer: Mt trnh thng dch Java thc thi cc Java applet t tp tin HTML.
javadoc: To ti liu dng HTML t m ngun cng vi cc ch thch bn trong.
jdb (Java debuger): Cho php bn thc hin tng dng trong chng trnh, t cc im dng
(breakpoint), xem gi tr cc bin.
javah: To ra tp tin header ca C cho php C gi hm Java hoc ngc li.
javap: Trnh dch ngc java (disassembler): Hin th cc hm v d liu truy cp c bn
trong mt tp tin lp dch. N cng cho php hin th ngha ca bytecode.
Qu trnh bin dch Java nh sau: m ngun trong cc tp tin *.java, qua trnh bin dch javac
c chuyn thnh cc bytecode. Bytecode nm trong tp tin *.class, c gi l tp tin lp (bi
mi tp tin cha mt lp ring bit ca Java). Cc ng dng Java c th bao gm nhiu lp khc
nhau.
Ch : Mt lp (class) ca Java cng ging ht nh mt lp trong C++. Lp chnh l cc bin
d liu v th tc kt hp vi nhau thnh mt khi.

Trang 17

Bi ging Lp trnh Mng


Khi thc hin chng trnh Java, my o Java s dng trnh np lp (class loader) c cc
bytecode t a hoc kt ni mng. Cc lp c np s phi i qua trnh kim tra lp (class
verifier) chc chn rng chng s khng sinh ra cc li nh hng n h thng khi thc thi.
Qu trnh kim tra ny lm tng thi gian np mt lp, tuy nhin n ch phi thc hin c mt ln
m thi.
Phn thc hin (execution unit) trong my o Java s thc thi cc lnh quy nh trong tng
bytecode. B phn thc thi n gin nht l mt trnh thng dch, chuyn i tng bytecode sang
cc th tc cn lm trn tng h thng. Cch ny rt chm v trnh thng dch lun phi tra ngha
ca bytecode m n thc thi. khc phc nhc im ny, ngi ta a ra trnh bin dch Justin-time (JIT): Qu trnh chuyn i t bytecode sang m lnh ring ca tng h thng s c
lm lun mt ln ngay khi np chng trnh, do tng c tc ng k.
Chng trnh vit bng Java c th l ng dng ring bit (stand-alone application), hay l
ng dng k sinh trn Web (applet) hoc ng thi c hai. Applet l chng trnh c nhng
trong trang Web, c c v thc hin bi trnh duyt h tr Java (Java-enabled Web browser).
Khi trnh duyt c ti trang Web ny, applet s c thc thi. Tri li, mt ng dng Java ring
bit c chy bng dng lnh (java Tn-lp-cn-thc-thi Tham-s), khng cn thng qua trnh
duyt Web.
Mt trnh duyt Web h tr Java (Java-enabled browser) c my o Java ring. Hin nay, cc
trnh duyt h tr Java nh vy kh nhiu: Netscape 2.0 tr ln, HotJava, Microsoft Internet
Explorer 3.0 (bn beta 2 tr ln),... Cc trang Web nhng Java applet c cha ng dn kiu
URL ti tp tin lp chnh ca applet . Trnh duyt ch vic khi ng my o Java v cung cp
cho trnh np lp ng dn ny. Ch rng mi lp u a ra tn ca cc lp ph n cn, do
trnh np lp phi np mt s lp ph khc trc khi thc hin chng trnh.

IV.Cc c tnh chnh ca Java


Trong phn ny, chng ta s im qua by c tnh quan trng khin Java tr thnh mt cng
c pht trin mnh, tin cy.

IV.1.An ninh
An ninh l mt vn kh khn hng u m ngi lp trnh mng gp phi: Ngi s dng
lun e ngi hai iu: Th nht, thng tin h gi i trn mng c th b c ln v th hai, h
thng ca h c th b xm nhp v ph hoi. Cu trc an ninh ca Java nhm vo gii quyt
ng thi hai vn trn.

Trang 18

Bi ging Lp trnh Mng


Cu trc an ninh ca Java da vo ba thnh phn: Trnh np lp, trnh kim tra lp v trnh
qun l an ninh (SecurityManager). Chng ta bit rng trnh kim tra lp lm nhim v m
bo chc chn chng trnh Java c bin dch ng n, khi thc hin s khng gy li nh
hng n h thng cng nh khng ng chm n nhng d liu "ring t" trn my khch
hng.
Bn cnh , trnh np lp phn bit r lp no n t mng, lp no nm ngay trn my
khch hng. iu ny ngn lp ti t mng "gi dng" mt lp trn my khch hng thc hin
cc tc v b cm i vi lp ny. Ngoi ra n cn gip tch bit hot ng ca cc lp khc
nhau ti t cc my ch khc nhau.
Trnh qun l an ninh kim sot cc hot ng mt my o Java c quyn lm di cc iu
kin khc nhau. Mt v d rt c bn l hot ng c/ghi tp tin (file I/O) c qun l cht ch
bi trnh qun l an ninh: Cc applet ch c quyn c/ghi cc tp tin ti my server cha n m
thi! Tuy nhin, trnh qun l an ninh cng l mt lp trong Java, do chng ta c th vit mt
lp an ninh ring cho mnh bng cch to mt lp dn xut t lp SecurityManager.

IV.2.Giao din lp trnh ng dng chun - Core API


Java cung cp cho ngi lp trnh mt th vin cc hm chun, l Core API. Cc hm
chun ny c t trong cc gi (package) - l tp hp ca cc lp c mi quan h vi nhau (v
d nh gi java.awt cha cc lp Abstract Windowing Toolkit, gip ngi lp trnh xy dng
ng dng vi giao din GUI trn cc platform khc nhau).

IV.3.Tng thch vi nhiu kiu phn cng


M bytecode ca Java c th chy trn hu nh mi loi phn cng v h iu hnh hin nay
nh: PC, Macintosh... cng nh cc my khc c chy my o Java. Mt im na l th vin
cc th tc chun Java c cha y cc hm c th dng chung cho cc platform khc nhau.

IV.4.c tnh ng v phn tn


H iu hnh Windows cho php cc chng trnh s dng chung v np t ng cc th
vin lin kt ng DLL. Chia s tp tin DLL lm gim dung lng b nh cng nh a cn dng
v tng tnh cu trc ca chng trnh. Java cng c c tnh ny: cc lp c np t ng khi
cn v nhiu chng trnh c th dng chung mt lp. N cn h tr c tnh phn tn, tc l cc
phn ca chng trnh c th nm trn my ch ln trn my khch hng.

IV.5.Hng i tng
Lp trnh hng i tng (OOP) l phng thc vit cc ng dng d bo tr, d nng cp
v c bit l c th ti s dng cc m lnh. Java l mt ngn ng hng i tng, do n c
Trang 19

Bi ging Lp trnh Mng


y cc c tnh trn. Ngoi ra, th vin lp Java cung cp kh y cho ngi lp trnh
bt u mt d n mi.

IV.6.a lung (multi-threads)


Cc ng dng vit bng Java c th c nhiu tin trnh c x l cng mt lc. Mt ng
dng n lung ch c th thc hin mt tc v ti mt thi im: Gi s ng dng ang bn ly
t trn mng xung mt tp tin mt vi pht, trong thi gian ny ng dng khng th lm cc
vic khc nh v li mn hnh... Vi ng dng vit bng Java, bn c th to hai tin trnh song
song lm vic: mt tin trnh np tp tin, mt tin trnh khc lm nhim v cp nht mn hnh.

IV.7.Qun l b nh v qu trnh thu dn 'rc'


Qun l b nh l mt vn kh phc tp i vi C v C++. Trong thi gian thc hin
chng trnh, ngi lp trnh chu trch nhim khi to cc vng nh, sau khi dng xong li gii
phng chng. Ch cn mt li nh trong cng c th lm cn kit ti nguyn hay dn n treo
h thng. Java vt b gnh nng ny cho ngi lp trnh: Cc vng nh c to ra trong
chng trnh s t ng c gii phng thng qua qu trnh thu dn "rc" (Garbage Collection).
Cc vng nh t ng c gii phng nu nh n khng c quy chiu n bi bt c i tng ang hot ng no.
Cc qun l b nh ca Java cng c thm tnh an ninh ca cc my o. Trong C v C++,
ngi lp trnh c th truy cp n h thng thng qua con tr (pointer). Vi Java, php ton vi
con tr b cm, do con tr lun ch n d liu cn thit ca ng dng trn my o, ngn nga
ng dng truy xut n ti nguyn bn ngoi my o.
Cu trc v cc c tnh trn y ca Java cho thy Java c nhng im mnh v yu ring.
Tuy nhin, chng ta c th tin rng, trong tng lai, Java s dn dn hon thin nhng nhc
im, pht trin v tip tc lm thay i b mt ca Internet cng nh Intranet.

Trang 20

Bi ging Lp trnh Mng

Kim tra s tin b


1. Bn c th vit cc chng trnh dng th tc bng Java. ng/Sai
2. Java l ngn ng c kiu d liu cht ch. ng/Sai
3. ...........................l chng trnh Java chy c lp, v s dng giao din ha ngi s
dng nhp d liu.
4. ...........................s dng JDBC API kt ni c s d liu.
5. ..........................hiu mt dng cc lnh my tnh tru tng.
6. Coalescing v Compaction l g?
7. Lnh ............... c s dng dch file m ngun .java.
8. Lp ......... phi l lp cha ca cc applet, applet l chng c th nhng vo trang Web hay
chy bng Java AppletViewer.

Bi tp
1. Ci t Java 2
2. G cc lnh sau ti du nhc v lit k cc tham s khc nhau ca chng:
javac
java

Trang 21

Bi ging Lp trnh Mng


CHNG 2:

Cc thnh phn c bn ca ngn ng lp trnh java


Vn phm Java ch nh cch vit nh sau:
- Li ch thch: c thm vo bi ngi lp trnh vi mc ch gii thch.
- Cc cu lnh: Mi lnh l dng n ca chng trnh.
- Khi lnh: t cc cu lnh nhm li cng vi nhau nh mt khi
- Cu trc file: Cc b phn cu thnh ca mt file Java ngun v lnh l c xc nh r.
- Cc t kha: Cc t c nh ngha trc trong ngn ng Java (khng c s dng nh
danh hiu).
- Danh hiu: Cc tn bn t ra cho cc lp, cc bin v cc hm. Danh hiu khng hn ch
cc k t theo ch nh, nhng cha phi c s dng ty , c vi qui c cho danh hiu.
- Hng (literals): Cc gi tr hng c vit mt cch khc nhau ty thuc vo kiu d liu.
V d: phn bit cc k t "123" vi s 123.
- Biu thc: S kt hp nhiu mi quan h to ra mt gi tr d liu.
- Ton t: Cc ton t c thc hin nh php cng, tr, nhn, cc ton t ton hc v
khng ton hc khc.
Mi khi nim vn phm trn s c m t trong cc phn sau:

I.Ghi ch (Comment)
Cc li ch thch c th c thm vo trong m ngun Java bng hai cch ging nh trong
C++. Cch th nht bt u li ch thch vi du /* v kt thc */ cho php t nhiu dng ch
thch trong cp du trn.
V d:
a = b + c;
/* Here is comment which
extends across two lines
*/

Ni chung bn khng th t cc ch thch trong ch thch


V d:
/* Here is a comment which /* a comment within a comment*/
extends across two line*/

Trang 22

Bi ging Lp trnh Mng


Trong v d ny ch thch u tin kt thc trc bng du */ dng hai khng bt u m
du ch thch. Kt qu ca cu ny l li trong qu trnh bin dch.
Nhiu dng ch thch c ngha c bit cho tin ch javadoc khi k hiu u tin bn trong
du ch thch l mt du * .
V d:
a = b+ c;
/* * This comment has

epecial meaning for the javadoc

unitily.It will be part of documenttation


automaticlly generated By the javadoc program
*/

Cch th hai nh du // v ghi li ch thch sau trn cng mt dng.


V d:
a = b + c;//this comment extends to the end of this line of text

Nhng ch thch ny c th t trong cp du ch thch /* */.


Nh vy, ghi ch nhm gip cho ngi lp trnh d dng nh li qu trnh suy ngh nht l
khi cn b sung, sa cha nng cp chng trnh
C 3 loi ghi ch trong chng trnh Java:
Bt u

Kt thc

/*

*/

//

Mc ch
on code b gii hn l phn ghi ch.
Ghi ch trn 1 dng, trnh bin dch b qua t // n cui dng

/**

*/

Ghi ch dnh cho javadoc, trnh bin dch b qua

II.Cu lnh v khi lnh


II.1.Cu lnh
Mt cu lnh trong Java c kt thc bng 1 du chm phy (;)
Th d:
Dng

a = b + c + d + e + f + g;

Cng ging nh a = b + c + d +
e + f + g;

Khong trng gii hn gia cc lnh c th bao gm bt k s k t trng no. Cc k t trng


l cc khong trng, cc du tab, cc du v u dng, xung dng.
Ch : Trn h thng UNIX v Masintosh, mi dng vn bn thng kt thc bi k t
xung dng (m ASCII 13). Trong Windows, cc dng vn bn thng khng gii hn bi cc
Trang 23

Bi ging Lp trnh Mng


k t xung dng, v u dng (CR/CF hay m ASCII l 13/10). Java bin dch nhn ra cc k t
trn cng nh cc k t trng v khng quan tm n nhng dng vn bn kt thc.

II.2.Khi lnh
Cc cu lnh n c th nhm li thnh cc khi bi vy mt khi lnh c th d dng kim
sot s thc hin ca nhiu cu lnh khc. B lnh ca Java khng gii hn trong cp ngoc nhn
{v }. Bn nhn thy cc khi lnh c dng to thnh nhm cc lnh thuc mt lp:
class Flight {

float

int

altitude;

int

heading;

int

speed;

float

latitude;

longintude;

//change the flight's heading by angle degree


void

turnFlight (int angle){


heading

= (heading + angle) % 360 ;

// make sure angle is in the range 0-359 degrees


if (heading<0)
heading = heading + 360 ;
} //end turnFlight
} //end Flight

Nh bn thy cc khi lnh c th t trong cc khi khc


Tng s cc khong trng t gia cc du ngoc nhn v cc cu lnh l ty nhng cng
c qui c l du ngoc nhn bn tri phi t sau mt dng (hay bt u mt dng tip theo),
du ngoc nhn bn phi l thuc chnh dng v ch tht u dng thng dng lm ni
bt nhm lnh.

III.Tp k t dng trong JAVA


Mi ngn ng u c xy dng t mt b k t no . Cc k t c nhm li theo
nhiu cch to nn cc t. n lt mnh cc t li c lin kt theo mt quy tc no
to nn cc cu lnh, t kha, tn...
Ngn ng JAVA c xy dng trn b k t sau :
26 ch ci hoa : A..Z v 26 ch ci thng a..z.
10 ch s : 0..9
Cc k hiu ton hc : +, -, *, /, %, =, ()...
Du ni : _
Cc k hiu c bit khc : ;, :, {}, [ ], ?, \, &, |, #, $...
Trang 24

Bi ging Lp trnh Mng


Ngoi ra ngn ng JAVA cn dng b k t Unicode. l mt b k t, n khng ch bao
gm nhng k t c trong b k t ASCCI m cn c vi triu k t khc tng ng vi hu
ht cc bng ch ci trn th gii.

IV.T kha v tn
IV.1.Tn
Cng tng t nh cc ngn ng lp trnh khc nh C, C++, ngn ng lp trnh JAVA cng
quy nh cch t tn nh sau :
Tn c th c bt u bng mt k t, hoc du $, _... nhng khng th bt u bng mt
s v khng c du cch trong tn. Ngoi ra n cn c th dng b k t Unicode t tn.
JAVA phn bit ch hoa v ch thng.

IV.2.T kha
T kha l nhng t c ngha xc nh. Thng c s dng khai bo cc kiu d liu,
vit cc ton t v cc cu lnh.
Sau y lit k mt s t kha ca JAVA
abstract

case

const

else

for

boolean

cast

continue

extends

future

break

catch

default

final

generic

byte

char

do

finally

goto

byvalue

class

double

float

implements

inteface

operator

public

super

thows

volatile

import

long

rest

outer

swicth

transient

while

inner

native

package

return

synchronized

try

instanceof

new

private

short

this

var

int

null

protected

static

throw

void

Ch :
-

Khng c dng t kha t tn cho hng, bin, mng, hm...


T kha phi vit bng ch thng

V.Kiu d liu
Mi bin phi c mt kiu d liu. Kiu d liu ca bin xc nh cc gi tr m bin c th
cha ng v cc ton t thao tc trn chng.

Trang 25

Bi ging Lp trnh Mng


Ngn ng Java c 2 loi d liu:
-

Kiu d liu c bn - Primitive

Kiu d liu dn xut - Reference

Kiu d liu c bn l cc khi d liu c xc nh trong ngn ng

V.1.Kiu d liu c bn
Kiu
boolean
char
byte
short
int
long
float
double

M t
true , false
K t n
Byte-length
integer
S nguyn ngn
S nguyn
S nguyn di
S thc
S thc

ln
1 bit
16 bits
8 bits
16 bits
32 bits
64 bits
32 bits
64 bits

Min Max
\u0000 \uFFFF
-128 127
-32768 32767
-2147483648 2147483647
-9223372036854775808
9223372036854775807
+/-3.40282347E+38 +/-1.40239846E45
+/-1.79769313486231570E
+/-4.9065645841246544E-324

V.2.Kiu d liu dn xut (Reference)


Array, class v interface u l kiu d liu dn xut. Gi tr ca bin kiu dn xut tri
ngc vi kiu d liu gc, n tham chiu ti (a ch) mt gi tr hay l tp hp cc gi tr m
bin khai bo.
Mt kiu Reference c gi l mt con tr hay l mt a ch b nh ca ngn ng lp trnh
khc. Ngn ng lp trnh Java khng h tr r rng cch s dng a ch ging nh cc ngn ng
khc. Thay vo bn c th s dng tn bin.

V.3.Gi tr mc nh
Mt li hay gp phi khi lp trnh l s dng nhng bin cha c khi to. iu ny
thng gy ra li kh on c bi v n c th nhn bt k gi tr no trong vng nh khi
chng trnh bt u chy. Java trnh c li trn bng cch khi to gi tr mc nh cho
cc bin
Trang 26

Bi ging Lp trnh Mng


Kiu

Gi tr mc nh

byte

short

int

long

0L

float

0.0f-

double

0.0d

char

null

boolean

false

dn xut

null

VI.Hng (literal)
Hu ht cc ngn ng u c mt cch khai bo bin l hng s ( l gi tr khng i).
Java khng l ngoi l T kha final ch dn mt bin cc b hoc bin thnh phn khng th
thay i. Mc ch chnh s dng ca bin final nh l biu th mt hng s. Bn c th thch
hng s l tn, v tn c nh ngha trong mt ch nh n trong m ngun ca bn. Nu
sau ny bn phi thay i s trong m ngun ca bn, bn ch cn thay i ti bin final nh
ngha.
(Cc hm thnh v cc lp c th khai bo nh l final . Mt hm thnh phn final khng th
chng ln nhau, v mt lp final khng th l lp con).
C php:
final Type ConstName = Value;

V du:
final int MAX = 10;

Lu : C hai cch khai bo hng trong C v C++ l #define v const u khng dng trong
JAVA.

VII.Bin
Mt chng trnh tham chiu ti gi tr ca bin bng tn bin. Tn bin phi l duy nht
trong cng mt phm vi, c th c nhiu bin cng tn nhng khai bo cc phm vi khc nhau.

Trang 27

Bi ging Lp trnh Mng


Mi bin cn c khia bo trc khi s dng. Vic khai bo c thc hin theo mu sau.
L nhng v tr trong b nh m gi tr c th c lu tr chng c tn v kiu gi tr.
C php:
Type

Variable;

Type

Variable = Value;

hay:

VII.1.Kiu bin
C th l mt trong ba hnh thc sau :
-

Mt trong 8 kiu d liu c bn.

Tn ca mt lp.

Mt mng.

khai bo mt kiu bin mi, ta phi khai bo mt lp mi. Sau cc bin mi c khai
bo l kiu ca lp .
JAVA c 3 loi bin : Bin lp, bin i tng , bin cc b.

VII.1.1.Bin i tng
Thng dng nh ngha thuc tnh, trng thi cho mt i tng n c th l bin ton
cc ca mt i tng. Khai bo nh sau :
Type

Variable;

VII.1.2.Bin lp
Tng t nh bin i tng, nhng gi tr ca n nm trong chnh lp . N nh hng
ton cc n mt lp v tt c cc i tng trong lp. Rt thch hp trao i thng tin gia
cc i tng khc nhau trong cng mt lp hay theo di trng thi ton cc ca mt i tng.
khai bo mt bin l bin lp ta dng t kha static nh sau :
static Type

Variable;

VII.1.3.Bin cc b
c khai bo v s dng trong thn phng thc. Bin cc b bt buc phi gn gi tr
trc khi s dng. Khng ging nh cc ngn ng lp trnh khc. JAVA khng c bin ton cc.
Bin i tng hay bin lp c dng truyn thng tin ton cc gia hai hay nhiu i
tng.

Trang 28

Bi ging Lp trnh Mng

VII.1.4.Phm vi ca bin
Ging nh ngn ng COBOL tt c cc bin u l bin ton cc. Bin ton cc l mt bin
c th truy cp bt c t u trong mt chng trnh v do vy m bin ton cc phi l bin c
tn c nht. Do tt c cc bin trong COBOL l ton cc nn mi bin trong chng trnh
COBOL l duy nht. T , trong thc tin vic s dng mt bin n cho nhiu mc ch khc
nhau trong tng phn ca chng trnh. Vic kim sot bin ton cc l mt cng vic kh khn
v lm nhiu chng trnh tr nn kh chu. c bit, mt thay i trong mt phn nh ca m c
th nh hng bt li n hu ht cc phn khc ca chng trnh.
Gii php cho vn rc ri ca bin ton cc l s dng bin cc b, bin ny c thi gian
tn ti gii hn v quan h ch trong phn nh ca m. Bn c th dng hai bin cc b c cng
tn nh danh trong cc phn khc nhau ca chng trnh.
Cc bin c nh ngha vi mt hm thnh phn l cc b lin quan n hm thnh phn, v
vy bn c th dng cng tn bin trong vi hm thnh phn, nh v d sau:
Class MyClass {
int i;

// member variable

int First() {
int j;

//

local variable

// i v j u c th truy cp t y
return 1;
}
int Second() {
int j;

//

local variable

// i v j u c th truy cp t y
return 2;
}
}

Bin j nh ngha trong hm First() c to ra khi hm ny c gi v mt i khi hm


ny thot. iu ny cng ng cho bin cc b j trong hm Second(). Bin j xut hin ng thi
trong c hai hm nhng chng khng gy xung t bi v hai bin cc b hon ton c lp vi
nhau. C mt cch khc ngh l: tng tng trnh bin dch s i tn cc bin cc b (j)
tn ca mi bin l duy nht (nh v d: j1 v j2).

VIII.Chuyn i kiu d liu


Trong JAVA c cc kiu d liu c bn, kiu i tng. Do ta c 3 dng chuyn i kiu
d liu.
- Chuyn i cho cc kiu d liu c bn
Trang 29

Bi ging Lp trnh Mng


C php : (NewType ) Value;
- Chuyn i kiu cho cc i tng: i tng ca mt lp c th c chuyn i kiu
tr thnh mt i tng ca mt lp khc. Vi iu kin cc i tng mun i kiu phi thuc
cc lp tha k nhau.
C php : (NewClass) Object ;
- Chuyn i kiu d liu c bn sang i tng v ngc li: Thng thng ta khng th
chuyn i c nhng trong gi java.lang c sn nhng lp c bit tng ng vi tng kiu
nguyn thy. Nh lp Integer cho kiu int, lp Float cho kiu float... do ta c th to ra cc
i tng tng ng bng cch dng ton t new.
v d : int Intobj = new Integer (32);
Khi mun ly li gi tr ban u ta dng phng thc c sn trong lp tng ng. Nh
intValue() cho kiu int...

IX.Biu thc v Ton t


Ton t l nhng k hiu c bit m thng thng c dng trong biu thc. Nh +,-,/,*...

IX.1.Cc ton t s hc:


Tng t nh ngn ng lp trnh C v C++ Java gm cc php ton nh sau : +,-,*,/,%.
Ton t

Cch dng

M t

op1 + op2

Cng hai ton hng

op1 - op2

Tr

op1 * op2

Nhn

op1 / op2

Chia

op1 % op2

Chia ly d

V d:
public class ArithmeticDemo {
public static void main(String[] args) {
//a few numbers
int i = 37;
int j = 42;
double x = 27.475;

Trang 30

Bi ging Lp trnh Mng


double y = 7.22;
System.out.println("Variable values...");
System.out.println("

i = " + i);

System.out.println("

j = " + j);

System.out.println("

x = " + x);

System.out.println("

y = " + y);

//adding numbers
System.out.println("Adding...");
System.out.println("

i + j = " + (i + j));

System.out.println("

x + y = " + (x + y));

//subtracting numbers
System.out.println("Subtracting...");
System.out.println("

i - j = " + (i - j));

System.out.println("

x - y = " + (x - y));

//multiplying numbers
System.out.println("Multiplying...");
System.out.println("

i * j = " + (i * j));

System.out.println("

x * y = " + (x * y));

//dividing numbers
System.out.println("Dividing...");
System.out.println("

i / j = " + (i / j));

System.out.println("

x / y = " + (x / y));

//computing the remainder resulting from dividing numbers


System.out.println("Computing the remainder...");
System.out.println("

i % j = " + (i % j));

System.out.println("

x % y = " + (x % y));

//mixing types
System.out.println("Mixing types...");
System.out.println("

j + y = " + (j + y));

System.out.println("

i * x = " + (i * x));

}
}

Kt qu ca chng trnh:
Variable values...
i = 37

y = 7.22
Adding...

j = 42

i + j = 79

x = 27.475

x + y = 34.695

Trang 31

Bi ging Lp trnh Mng


Subtracting...

i / j = 0

i - j = -5

x / y = 3.8054

x - y = 20.255

Computing the remainder...


i % j = 37

Multiplying...

x % y = 5.815

i * j = 1554

Mixing types...

x * y = 198.37

j + y = 49.22

Dividing...

i * x = 1016.58

IX.2.Cc php ton tng gim


Dng cc ton t ++ v -- tng gim gi tr ca bin.

IX.3.Ton t quan h v iu kin


Ton t

ngha

V d

==

Bng

a == 10;

!=

Khng bng

a != b

<

B hn

5 < 6

>

Ln hn

7 > 4

<=

B hn hoc bng

a <= 6

>=

Ln hn hoc bng

b >= 8

IX.4.Ton t lun l
Cc biu thc m c kt qu tr v l gi tr boolean, c th kt hp li vi nhau bng cc
ton t lun l nh AND ( & hoc &&), OR ( | hoc ||), XOR ( ^), NOT (!)...

IX.5.Cc ton t lm vic vi bit


Ging C v C++, nhng ton t lm vic vi bit c dng th hin tng bit ring bit
i vi s nguyn. Ta c bng nhng ton t lm vic vi bit nh sau :

Ton t

ngha

&

Hoc

Hoc loi tr

<<

Dch tri 1 bit


Trang 2

Bi ging Lp trnh Mng


>>

Dch phi 1 bit

>>>

Dch phi 1 bit v in 0 vo nhng ch va dch

o bit

>>=

Dch tri ri gn ( x=x<<y)

<<=

Dch phi ri gn ( x=x>>y)

>>>=

Dch phi, in 0 vo nhng ch va dch ri gn ( x=x>>y)

x &=y

x=x&y

x|=y

x= x|y

x^=y

x=x^y

IX.6.Ton t gn
Ton t gn c dng nh sau:
Variable

Operator = Value.

iu ny tng ng vi:
Variable = Variable Operator Value;
V d : a + = 4; tng ng vi a = a + 4;
Ton t

Cch dng

Cch dng khc

+=

op1 += op2

op1 = op1 + op2

-=

op1 -= op2

op1 = op1 - op2

*=

op1 *= op2

op1 = op1 * op2

/=

op1 /= op2

op1 = op1 / op2

%=

op1 %= op2

op1 = op1 % op2

&=

op1 &= op2

op1 = op1 & op2

|=

op1 |= op2

op1 = op1 | op2

^=

op1 ^= op2

op1 = op1 ^ op2

<<=

op1 <<= op2

op1 = op1 << op2

>>=

op1 >>= op2

op1 = op1 >> op2

>>>=

op1 >>>= op2

op1 = op1 >>> op2

IX.7.Mt s ton t khc


Ton t

Cch dng

?:

op1 ? op2 : op3

[]

type []

M t
Nu op1 true th tr v op2. Ngc li th tr
v op3.
Khai bo m mng cha bit ln, cha cc

Trang 33

Bi ging Lp trnh Mng


phn t c kiu l type
[]

type[ op1 ]

[]

op1[ op2 ]

op1.op2

To mt mng vi op1 phn t. Phi c s


dng vi ton t new.
Truy cp n mt phn t ca mng op1 vi
ch s op2.
Mt s tham kho ti hm thnh phn op2 ca
op1.
nh ngha hoc gi mt phng thc c tn l

()

op1(params)

op1 vi cc tham s l params. Danh sch cc

tham s c th l danh sch rng. Cc phn t


trong danh sch cch nhau bng du phy.
Chuyn i kiu d liu ca op1 vi kiu mi

(type)

(type) op1

l type. Mt ngoi l s xy ra nu kiu ca


op1 khng tng thch vi type.

new

new op1

instanceof

op1 instanceof op2

Khi to mt i tng hay mt mng. op1 l


mt constructor hay mt mng
Tr v true nu op1 l mt an instance ca op2

IX.8.Php ton trn kiu chui ( String)


Mt biu thc c bit trong Java l dng ton t "+" to hay ghp ni cc chui.
V d :
System.out.println(name+ "is a" + color );
Nu c phn t con no khng phi l kiu String th n t ng chuyn sang kiu String.
M t phn ny cc bn tham kho phn i tng v cc kiu d liu i tng.

IX.9. u tin cc ton t


( ), []
++, --, !, -, instanceof
new (type) Biu_thc
*, /, %
+, <<, >>, >>>
< >

Trang 34

Bi ging Lp trnh Mng


==, !=
&
^
|
? :
=, +=, -=, *=, /=, %=, ^=
&=, |=, <<=, >>=, >>>=

IX.10.Biu thc
Biu thc l s kt ni cc bin, cc t kha hay cc k hiu tr v mt gi tr ca mt
kiu no . Gi tr ny c th l s, chui, hoc kiu d liu khc. Bn c th hiu rng mt
biu thc l mt ci g dc vit bn phi ca mt lnh gn.
Biu thc n gin nht l cc bin hay cc hng
V d: 22, a, "Hello"
Cc biu thc ny c th c tm thy bn phi ca mt lnh gn nh gn mt chui
"Hello" cho mt bin s:
s = "Hello";
Nh trong C, vic gn mt gi tr cho chnh n, l gi tr bn phi ca lnh gn
V d:
b = a = 25;
Trong v d ny gi tr 25 c gn cho bin a v 25 cng c gn cho bin b
C cc loi biu thc nh biu thc logic, biu thc s hc, biu thc gn
V d : a <= 10;
- Biu thc gn: Variable1= Variable2=...=Value;
- Biu thc iu kin :
Expression ? Expression_when_true : Expression_when_false;

X.Cc cu lnh iu khin


X.1.Cu trc r nhnh
X.1.1.Cu trc iu kin r nhnh if
C php:
if (Expression) {
Statements1;
}

Trang 35

Bi ging Lp trnh Mng


else{
Statements2;
}

S khi:
false

Expression

true

Statement(s)2

Statement(s)1

V d:
public class IfElseDemo {
public static void main(String[] args) {
int testscore = 76;
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " + grade);
}
}

Kt qu chng trnh l:
Grade = C

Expression phi l biu thc logic tr v gi tr kiu boolean ( true hoc false). Tng t
nh C v C++ cc cu lnh iu kin c th lng nhau ty .

X.1.2.Cu trc iu kin r nhnh phc : switch


C php:
switch(integer expression) {
case integer expression:
statement(s)

Trang 36

Bi ging Lp trnh Mng


break;
...
default:
statement(s)
break;
}

Expression : Biu thc iu kin ph thuc vo kiu d liu c bn (byte, int ...)
S khi:
true
case a

case a action(s)

break

case b action(s)

break

case z action(s)

break

false
true

case b

false
.
.
.

true

case z

false
default action(s)

V d:
public class SwitchDemo {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;

Trang 37

Bi ging Lp trnh Mng


case 4:
case 6:
case 9:
case 11:
numDays = 30;
break;
case 2:
if ( ((year % 4 == 0) && !(year % 100 == 0))
|| (year % 400 == 0) )
numDays = 29;
else
numDays = 28;
break;
}
System.out.println("Number of Days = " + numDays);
}
}

Kt qu ca chng trnh:
Number of Days = 29

X.2.Cu trc lp
X.2.1.Vng lp for
C php:
for ( initialization; loopContinuationTest; increment ) {
Statements;
}

S khi:

initialization

Statement(s)

loopContinuationTest

true

increment
Trang 38

false

Bi ging Lp trnh Mng

V d:
public class ForDemo {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12,
1076, 2000, 8, 622, 127 };
for (int i = 0; i < arrayOfInts.length; i++) {
System.out.print(arrayOfInts[i] + " ");
}
System.out.println();
}
}

Kt qu chng trnh: 32 87 3 589 12 1076 2000 8 622 127.

X.2.2.Vng lp while v do:


Tng t cu trc ca C v C++
C php:
while (Condition){
Statement(s)
}

S khi:
Condition

true

statement(s)

flase

V d:
public class WhileDemo {
public static void main(String[] args) {
String copyFromMe = "Copy this string until you " +
"encounter the letter 'g'.";
StringBuffer copyToMe = new StringBuffer();
int i = 0;
Trang 39

Bi ging Lp trnh Mng


char c = copyFromMe.charAt(i);
while (c != 'g') {
copyToMe.append(c);
c = copyFromMe.charAt(++i);
}
System.out.println(copyToMe);
}
}
Java cung cp mt cu trc khc tng t nh cu lnh while.
C php:
do {
Statement(s);
while (Condition);

action(s)
S khi:
Condition

true

flase

V d:
public class DoWhileDemo {
public static void main(String[] args) {
String copyFromMe = "Copy this string until you " +
"encounter the letter 'g'.";
StringBuffer copyToMe = new StringBuffer();
int i = 0;
char c = copyFromMe.charAt(i);
do {
copyToMe.append(c);
c = copyFromMe.charAt(++i);
} while (c != 'g');
System.out.println(copyToMe);
}
}

Trang 40

Bi ging Lp trnh Mng

Cu lnh break : Dng thot tc thi ra khi vng lp cha n.

Cu lnh continue : Dng quay tr v u vng lp cha n.

X.3.Ngoi l v cu lnh nm bt ngoi l


S dng cc lnh try, catch v finally bt gi cc ngoi l.
C php:
try {
statement1(s)
} catch (exceptiontype name) {
statement(s)
} catch (exceptiontype name) {
statement2(s)
} finally {
statement3(s)
}

try: nh ngha mt khi lnh (statement1(s)) m ngoi l c th xy ra.


catch: i km vi try, bt ngoi l, khi c ngoi l xy ra th statement2(s) thc hin
statement3(s) lun lun thc hin cho d c hay khng ngoi l
Kim tra s tin b

1. Trong Java, kiu d liu dng byte nm trong gii hn t.n


2. Hy ch cc danh nh hp l:
a. Tel_num
b. Emp1
c. 8678
d. batch.no
3. Cho bit kt qu thu c khi thc hin on chng trnh sau?
class me
{
public static void main(String srgs[ ])
{
int sales=820;
int profit=200;
System.out.println((sale +profit)/10*5);
}
}
4. .l s ci t ca cc hnh ng ca i tng
5. Phng thc public c th truy cp phng thc private trong cng mt lp.
ng/Sai
Trang 41

Bi ging Lp trnh Mng


6. static hm rng phng thc khng c m v c b sung trong cc lp con
ng/Sai Khi bn khng nh nghi mt hm khi to cho mt lp, JVM s
cung cp mt hm mc nh hoc mt hm khi to n (implicit). ng/Sai
Vng lp while thc thi t nht mt ln thm ch nu iu kin c xc nh l
False
ng/Sai
Bi tp

1. Hy vit mt on chng trnh in ra dng ch Welcome to the world of


Java
2. Hy vit hai phng thc khi to tng minh cho mt lp dng tnh din
tch hnh ch nht. Khi mt gi tr c truyn vo phng thc khi to, n cho
rng di v chiu rng bng nhau v bng gi tr truyn vo. Lc , n s
tnh din tch tng ng. Khi hai gi tr c truyn vo, n s tnh din tch
hnh ch nht.
3. Vit mt chng trnh thc hin nhng vic sau y:
a. Khai bo v gn gi tr u cho cc bin m v n l 100 v 200 tng ng.
b. Theo cc iu kin: nu m bng 0, hin th kt qu tng ng.
c. Nu m ln hn n , hin th kt qu tng ng.
d. Kim tra gi tr n l chn hay l.
4. Vit mt chng trnh hin th tng cc bi s ca 7 nm gia 1 v 100.
5. Vit chng trnh cng by s hng ca dy sau:
1!+2!+3!.

Trang 42

Bi ging Lp trnh Mng


CHNG 3:

APPLETS
I.i cng v HTML
"Ngn ng nh du siu vn bn" (Hypertext Markup Language - HTML) c dng
khi to cc "siu vn bn" trn WEB. N khng phi l mt ngn ng lp trnh phc tp nh
C, C++, Java... Ngn ng HTML ch mt tp hp nhng quy tc ch nh bi nhng TAGS
(Th) v MARK (nh du) trn nhng thnh phn ca ti liu.
Mt ti liu HTML ch l nhng vn bn thng thng, bng nhng quy tc n gin ta c
th a vo nhng hnh nh, nhng "siu lin kt", "siu phng tin"... Ngoi ra ta c th b
sung nhng hnh nh, m thanh sng ng ...vo cc trang Web ca mnh bng cch tng cng
Java. chnh l cc APPLETS.

II.Tng quan v applet


Cc lp trong chng trnh Java lun l dn xut t mt lp chun no ca JDK. Mi
applet l dn xut ca lp Applet theo s sau:

II.1. V d v Applet
Sau y l m ngun ca mt applet gi l Simple
import java.applet.Applet;
import java.awt.Graphics;
public class Simple extends Applet {
StringBuffer buffer;
public void init() {

Trang 43

Bi ging Lp trnh Mng


buffer = new StringBuffer();
addItem("initializing... ");
}
public void start() {
addItem("starting... ");
}
public void stop() {
addItem("stopping... ");
}
public void destroy() {
addItem("preparing for unloading...");
}
void addItem(String newWord) {
System.out.println(newWord);
buffer.append(newWord);
repaint();
}
public void paint(Graphics g) {
//Draw a Rectangle around the applet's display
area.
g.drawRect(0, 0, size().width - 1,
size().height - 1);
//Draw the current string inside the rectangle.
g.drawString(buffer.toString(), 5, 15);
}
}

II.2.Vng i ca mt Applet
C th s dng v d trn minh ho cho vng i ca mt applet

II.2.1.Np mt Applet
Bn c th thy "initializing... starting..." trn, l kt qu tr v khi mt applet ang
np. Khi mt applet np s xy ra cc vic sau:

Mt instance ca lp con applet c to ra.

i tng applet ny t khi to mnh, bng phng thc init().

Trang 44

Bi ging Lp trnh Mng

i tng applet ny bt u chy, phng thc start() c gi, tip theo l


phng thc run().

II.2.2.Ri khi v quay tr v trang web cha applet


Khi ngi dng ri khi trang web cha applet sang mt trang khc, khi phng thc
stop() ca applet s c gi. Khi ngi dng quay v li trang th applet t ng kch

hot li phng thc start(). Qu trnh ny cng xy ra khi ngi dng thay i ca s cha
applet (minaturize, minimize, v close.)
Ch : Mt vi trnh duyt c th s np li applet khi ta tr li trang cha applet nh
th c th xy ra mt li nu mt applet t khi to m khng cn np li.

II.2.3.Np li Applet (Reloading the Applet)


Mt s trnh duyt cho php ngi dng np li applet, ngha l ngi dng thot applet
v np li mt ln na. V mi khi thot khi Applet phng thc stop() s t ng thc hin,
xy ra qu trnh dn rc bng phng thc destroy(). Nh vy, applet gii phng cc ti
nguyn m n dng v applet chnh thc khng cn trong b nh. V khi c np li, qu
trnh np s xy ra ging nh ni trn.

II.2.4.Thot khi trnh duyt


Khi ngi dng thot khi trnh duyt (hay ng dng cha applet) th applet t
ng gi phng thc stop() dn dp ti nguyn h thng trc khi trnh duyt
thot.

II.2.5.Tm tt
Mt applet c th tri qua cc s kin sau:

N c th t khi to (initialize).

N c th t ng khi ng (start).

N c th t dng (stop) .

T dn dp ti nguyn h thng trc khi thot.

S :
Trang 45

Bi ging Lp trnh Mng

Creation

Destruction

Initialization

Start/Restart

Stop

II.3.Cc phng thc c bn


public class Simple extends Applet {
. . .
public void init() { . . . }
public void start() { . . . }
public void stop() { . . . }
public void destroy() { . . . }
. . .
}

Trong applet Simple cng nh tt c cc applet khc u l lp con ca lp Applet.


Lp Simple override li 4 phng thc ca Applet v vy n c th tr li cc s
kin: init, start, stop, destroy.

II.3.1.init()
Dng khi to mt ln, nhng hot ng khng ko di. Phng thc ny thng cha
cc m lnh m ta thng dng trong cc constructor.

II.3.2.start()
Applet sau khi khi to cn lm cng vic g th phi ci t phng thc start(), tr
khi phi tr li trc tip tc ng ca ngi dng. Phng thc ny c th thc hin mt s
vic ca applet hay khi to cc tuyn on.

II.3.3.stop()
a s cc applet khi ci phng thc start() u c ci stop(). Phng thc ny dng
tm ngng cc hot ng ca applet nhng khng gii phng ti nguyn h thng.

II.3.4.destroy()
Phng thc ny thng dng gii phng ti nguyn h thng.

Trang 46

Bi ging Lp trnh Mng

II.4.Cc phng thc v v nm bt s kin


Simple applet nh li phng thc paint override phng thc paint ca applet:
class Simple extends Applet {
. . .
public void paint(Graphics g) { . . . }
. . .
}

Phng thc paint l mt trong hai phng thc m mt applet c th override:


- paint: L phng thc v c bn. Nhiu applet ci t phng thc paint v nhng
trnh by ca n bn trong trnh duyt.
- update: L phng thc m bn c th s dng sau khi thc hin paint tng thm

hiu qu v.
Applet tha hng cc phng thc ny t lp AWT. Applet cn tha hng cc phng
thc v s kin nh nhp chut, r chut,... trong lp Component ca AWT.

II.5.Cc phng thc cho lp trnh giao din ngi dng


II.5.1.Cc thnh phn UI xy dng sn
Th vin AWT h tr cc thnh phn cho lp trnh giao din (UI components) (Cc lp
dng ci t mi thnh phn c t trong du ngoc n):

Buttons (java.awt.Button)

Checkboxes (java.awt.Checkbox)

Text fields (java.awt.TextField)

Text areas (java.awt.TextArea)

Labels (java.awt.Label)

Lists (java.awt.List)

Choices (java.awt.Choice)

Sliders and scrollbars (java.awt.Scrollbar)

Drawing areas (java.awt.Canvas)

Menus (java.awt.Menu, java.awt.MenuItem, java.awt.CheckboxMenuItem)


Trang 47

Bi ging Lp trnh Mng

Containers (java.awt.Panel, java.awt.Window and its subclasses)

II.5.2.Cc phng thc s dng cc thnh phn UI trong cc Applet


Bi v lp Applet tha k t lp AWT Container nn d dng thm cc thnh phn vo cc
applet v s dng cc trnh qun l lp (layout managers) iu khin v tr ca cc thnh
phn trn mn hnh. y l mt s phng thc ca Container m cc applet c th s dng:
add : Thm mt Component.
remove : Xo mt Component.
setLayout : Thit lp trnh qun l layout.

II.5.3.Thm mt Text Field khng edit c vo applet Simple


lm cho n gin applet s dng lp TextField khai bo mt text field ch c
cun, khng c sa cha
S thay i cho thy sau y:
//Khng cn Import java.awt.Graphics
//khi applet ny khng ci t
//phng thc paint.
. . .
import java.awt.TextField;
public class ScrollingSimple extends Applet {
//Instead of using a StringBuffer,
//use a TextField:
TextField field;
public void init() {

// To mt text field v lm cho n khng th sa cha.


field = new TextField();
field.setEditable(false);
//Set the layout manager so that the text field will be
//as wide as possible.
setLayout(new java.awt.GridLayout(1,0));

//t text field vo Applet.


add(field);
validate();
addItem("initializing... ");
}
. . .

Trang 48

Bi ging Lp trnh Mng


void addItem(String newWord) {
//Ni chui vo TextField.
String t = field.getText();
System.out.println(newWord);
field.setText(t + newWord);
repaint();
}
//Phng thc paint khng cn thit,
//khi TextField t ng repaints.

Xem li phng thc init to ra mt text field khng edit c. N thit lp trnh qun l
cch trnh by vo applet lm cho text field c th rng ra c sau t text field vo applet
Sau cng phng thc init gi mt phng thc hp l (phng thc m Applet tha
hng t Component). iu ny lm cho c hiu lc i vi mt hoc nhiu thnh phn thm
vo applet v bo m rng cc thnh phn ny t v ra trn mn hnh.
Sau y l kt qu ca applet:
initializing... starting...

II.6.Gii hn ca Applet
Mc ny cho thy mt cch tng quan v mt hn ch ca applet v cc kh nng m chng
c th co c.

II.6.1.Gii hn v bo mt
Tt c cc trnh duyt c ci t ch bo mt u gi n li trong h thng bo mt. Mc
ny m t ch bo mt m cc trnh duyt hin thi km vo. Tuy nhin vic ci t c ch
bo mt gia cc trnh duyt l khc nhau. Ngoi ra c ch bo mt thng thay i. Th d
nh nu mt trnh duyt c pht trin ch s dng trong mi trng tin cy th c ch bo
mt c th lng lo hn nhng m t y.
Cc trnh duyt hin thi thng gii hn hot ng ca applet khi np cc applet t mng
v nh sau:

Mt applet khng th np cc th vin hay cc phng thc s dng m ngun.

Khng c c hay ghi bnh thng ln cc tp tin my ch thc thi chng.

Khng c to cc kt ni mng ngoi tr kt ni vi my ang chy n.

Trang 49

Bi ging Lp trnh Mng

Khng th khi ng bt c mt chng trnh no trn my ch chy n.

Khng c c bt c tnh cht no ca h thng.

Ca s m mt applet m ra s khc vi cc ca s ca cc ng dng khc m.

Mi trnh duyt c mt i tng SecurityManager c ci t thc hin vn bo


mt. Khi SecurityManager d tm ra s vi phm th n nm ra mt ngoi l
SecurityException. Applet ca bn c th bt ngoi l SecurityException v tc ng

tr li mt cch thch hp.

II.6.2.Cc kh nng ca Applet


Gi java.applet cung cp mt API cho cc applet mt s kh nng m ng dng n
(application) khng c c. Th d nh applet c th to m thanh ci m cc chng trnh
khc khng thc hin c.
Sau y l mt s ci m cc trnh duyt hin hnh v cc applet viewer cho php applet
thc hin:

Applet c th thng xuyn to kt ni ti my ang chy n.

Khi applet chy trong trnh duyt th c th dng ti liu HTML hin th.

Applet c th gi ti mt phng thc cng cng ca mt applet khc trong cng trang
Web.

Cc applet c np t tp tin cc b s khng b gii hn ging cc applet c np t


mng xung.

Hu ht cc applet ngng thc thi khi ri khi trang web cha n, nhng khng nht
thit nh vy.

II.7.Test mt applet
Mt khi vit vi on m cho applet ca bn, bn s mun chy applet kim tra n.
chy applet trc ht bn phi t applet vo trong mt trang HTML bng cch s dng th
(tag) <APPLET>. Sau nh a ch URL ca trang HTML trong mt trnh duyt c h tr
Java.
y l mt th <APPLET> n gin:
<APPLET CODE=AppletSubclass.class WIDTH=anInt

HEIGHT=anInt>

</APPLET>

Trang 50

Bi ging Lp trnh Mng

Th ny cho trnh duyt bit cn np mt applet c tn l AppletSubclass. Hnh sau cho thy
ni t file applet, quan h vi ti liu HTML cha th <APPLET>. Nh hnh v th tr khi
applet c t trong mt gi (package), applet phi t trong cng th mc vi tp HTML
cha th <APPLET>.

Khi mt trnh duyt h tr Java ng mt th <APPLET>, th n d tr mt vng hin th vi


chiu rng (width) v chiu cao (hight) cho applet, np m bytecode ca applet, to mt
instance ca lp , sau gi phng thc init v start.
Th <APPLET> c rt nhiu tu chn do bn c th tu bin cho cho ph hp vi s thc
thi ca applet m bn to ra.

III.Cc tnh nng cao cp ca Applet API


Applet API cung cp cho bn cc tnh nng cao cp v mi quan h gn gi gia cc applet
v cc trnh duyt Web. API c cung cp bi gi java.applet -- ch yu l lp Applet v
giao tip (interface) AppletContext. Nh vo applet API m cc applet c th thc hin c
cc vic sau:

a thng bo c bn t trnh duyt.

Ti cc files d liu xc nh bi URL ca applet hay trang HTML m applet c


nhng.

Hin th cc chui ngn v trng thi.

Lm trnh duyt hin th ti liu.

Tm cc applet khc trn cng trang.

To m thanh.

Ly tham s c ch ra bi ngi dng trong th <APPLET>.


Trang 51

Bi ging Lp trnh Mng

III.1.Tm kim v np cc file d liu


Bt c lc no applet cn np vi d liu t tp c xc nh bi URL (mt URL m
khng ch r y v tr ca file), applet thng s dng hoc l code base hoc l document
base hon chnh a ch URL. Code base c tr v bi phng thc getCodeBase, n ch
ra a ch URL xc nh th mc cha lp applet c np. Document base c tr v bi
phng thc getDocumentBase, n ch ra th mc cha trang HTML m applet c
nhng.
Tr khi th <APPLET> ch r code base, c code base v document base u c t cng
th mc trn cng mt server.
D liu m applet lun cn hoc nhng nhu cu tin cy cn sao lu, thng thng c ch
r ti code base. D liu m ngi dng applet ch r, thng dng cc tham s, thng thng
c ch ti document base.
Lp Applet nh ngha cc hnh thc thun li np hnh nh v m thanh, m hnh nh v
m thanh c ch r bi URL. V d, ly mt applet v t n vo trong mt cu trc th mc
nh hnh sau:

to mt i tng Image s dng mt file hnh nh a.gif trong th mc


imgDir th applet c th s dng on m sau:
Image image = getImage(getCodeBase(), "imgDir/a.gif");

III.2.Hin th chui tnh trng ngn


Tt c nhng trnh xem applet, t Applet Viewer n nh duyt c h tr Java u cho
php cc applet hin th mt chui tnh trng ngn. Trong s thi hnh hin thi chui ny xut
hin trn hng tnh trng y ca s duyt applet. Trong cc trnh duyt tt c applet trn
cng trang, cng nh chnh cc trnh duyt ni chung l chia s hng tnh trng .

Trang 52

Bi ging Lp trnh Mng


Khng nn t cc thng tin ct yu vo dng trng thi. Nu nhiu ngi dng cn thng
tin, thay vo ta nn hin th trong vng applet. Nu ch mt it thng tin phc tp m ngi
dng cn th nn xut thng tin ra thit b u ra chun.
Dng tnh trng khng phi l ni bt thng thng v n c th b ghi ln bi mt
applet hay mt trnh duyt khc. T nhng l do trn, tt nht s dng hin th thng tin
ph, nht thi m thi. Th d nh applet np cc file nh v hin th tn ca file nh trong lc
ang np chng.
V d:
showStatus("MyApplet: Loading image file " + file);

III.3.Hin th ti liu trong trnh duyt


Bn c bao gi mun applet hin th mt mt ti liu vn bn nh dng HTML khng?
y c cch lm iu : ni cho trnh duyt hin th vn bn cho bn.
Vi phng thc showDocument trong AppletContext mt applet c th ch cho trnh
duyt URL hin th trong ca s trnh duyt. (Trong trng hp ny b JDK vi trnh
AppletViewer b qua phng thc ny, n khng th hin th ti liu). showDocument c 2
dng :
public void showDocument(java.net.URL url)
public void showDocument(java.net.URL url,String targetWindow)

Dng mt tham s ca showDocument ch cho trnh duyt bit a ch URL ca ti


liu cn hin th, khng ch r ca s hin th.
Dng hai tham s ca showDocument ch cho bn bit v tr ca s hay frame
HTML hin th ti liu trong . Tham s th hai c th c cc gi tr sau:
"_blank": Hin th ti liu trong mt ca s mi, khng c tn.
"windowName": Hin th ti liu trong mt ca s vi tn l windowName. Ca s ny c

to ra nu cn thit.
"_self": Hin th ti liu trong ca s v frame cha applet.
"_parent": Hin th ti liu trong ca s applet nhng trong frame cha ca frame applet.

Nu frame applet khng c frame cha th ging nh "_self".


"_top": Hin th ti liu trong trong ca s ca applet frame mc nh. Nu frame ca

applet l mc nh ri th ging nh "_self".


V d:
Trang 53

Bi ging Lp trnh Mng


...//In an Applet subclass:
urlWindow = new URLWindow(getAppletContext());
. . .
class URLWindow extends Frame {
. . .
public URLWindow(AppletContext appletContext){
. . .
this.appletContext = appletContext;
. . .
}
. . .
public boolean action(Event event, Object o) {
. . .
String urlString = /* user-entered string */;
URL url = null;
try {
url = new URL(urlString);
} catch (MalformedURLException e) {
...//Inform the user and return...
}
if (url != null) {
if (/* user doesn't want to specify the window */) {
appletContext.showDocument(url);
} else {
appletContext.showDocument(url,
/* user-specified window */);
}
}
. . .

III.4.Gi thng ip ti cc applet khc


Cc applet c th tm ra cc applet khc v gi thng ip n chng vi nhng gii hn v
bo mt nh sau:

Nhiu trnh duyt i hi cc applet khi u t mt server.

Nhiu trnh duyt i hi cc applet phi cng th mc trn cng mt server (cng code
base)

Java API i hi cc applet phi chy trn cng mt trang, trong cng ca s trnh
duyt.

Trang 54

Bi ging Lp trnh Mng


Ch : Mt vi trnh duyt cho php applet gi cc phng thc ca mt applet khc thm
ch trn cc trang khc trong cng tnh duyt min l cng code base (cng th mc). Phng
thc quan h gia cc applet ny khng c Java API h tr nn nhiu trnh duyt khng cho
php applet gi cc applet khc trn cc trang khc nhau.
Mt applet c th tm mt applet khc bng cch tm theo tn (s dng phng thc
getApplet ca AppletContext) hay tt c cc applet khc trn cng trang (bng cch s dng

phng thc getApplets ca AppletContext). C hai phng thc nu thnh cng s cho
applet gi mt hay nhiu i tng Applet. Mt khi applet gi tm c mt i tng Applet
th n c th gi cc phng thc trn i tng .

III.5.Tm mt applet bng tn: s dng phng thc getApplet


Phng thc getApplet tm kim tt c cc applet khc trn trang hin hnh thy mt
trong s cc applet bng mt tn c bit. Nu tm thy, getApplet s tr v mt i tng
Applet.
Mc nh th mt applet khng c tn. t cho applet mt ci tn, phi t trong on
m ca trang HTML m applet an xen vo. Bn c th ch r tn ca mt applet bng hai cch:

Bng cch ch r mt thuc tnh NAME trong th <APPLET>. Th d nh:


<APPLET CODEBASE=example/ CODE=Sender.class
WIDTH=450
HEIGHT=200
NAME="buddy">
. . .
</applet>

Bng cch ch r tham s NAME vi th <PARAM>. Th d nh:


<APPLET CODEBASE=example/ CODE=Receiver.class
WIDTH=450
HEIGHT=35>
<PARAM NAME="name" value="old pal">
. . .
</applet>

Di y l hai applet minh ho cho vic tm bng tn. Applet u tin l Sender tm applet
th hai l Rciver, Sender gi mt thng ip ti Reciever bng cch gi cc phng thc ca
Reciever. Reciever p ng li "Received message from sender-name!"

Trang 55

Bi ging Lp trnh Mng


y l chng trnh y ca Sender:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Enumeration;
public class Sender extends Applet
implements ActionListener {
private String myName;
private TextField nameField;
private TextArea status;
private String newline;
public void init() {
GridBagLayout gridBag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridBag);
Label receiverLabel = new Label("Receiver name:",
Label.RIGHT);
gridBag.setConstraints(receiverLabel, c);
add(receiverLabel);
nameField = new TextField(getParameter("RECEIVERNAME"),
10);
c.fill = GridBagConstraints.HORIZONTAL;
gridBag.setConstraints(nameField, c);
add(nameField);
nameField.addActionListener(this);
Button button = new Button("Send message");
c.gridwidth = GridBagConstraints.REMAINDER; //end row
c.anchor = GridBagConstraints.WEST; //stick to the
//text field
c.fill = GridBagConstraints.NONE; //keep the button
//small
gridBag.setConstraints(button, c);
add(button);
button.addActionListener(this);
status = new TextArea(5, 60);
status.setEditable(false);
c.anchor = GridBagConstraints.CENTER; //reset to the default

Trang 56

Bi ging Lp trnh Mng


c.fill = GridBagConstraints.BOTH; //make this big
c.weightx = 1.0;
c.weighty = 1.0;
gridBag.setConstraints(status, c);
add(status);
myName = getParameter("NAME");
Label senderLabel = new Label("(My name is " + myName + ".)",
Label.CENTER);
c.weightx = 0.0;
c.weighty = 0.0;
gridBag.setConstraints(senderLabel, c);
add(senderLabel);
newline = System.getProperty("line.separator");
}
public void actionPerformed(ActionEvent event) {
Applet receiver = null;
String receiverName = nameField.getText(); //Get name to
//search for.
receiver = getAppletContext().getApplet(receiverName);
if (receiver != null) {
//Use the instanceof operator to make sure the applet
//we found is a Receiver object.
if (!(receiver instanceof Receiver)) {
status.append("Found applet named "
+ receiverName + ", "
+ "but it's not a Receiver object."
+ newline);
} else {
status.append("Found applet named "
+ receiverName + newline
+ "

Sending message to it."

+ newline);
//Cast the receiver to be a Receiver object
//(instead of just an Applet object) so that the
//compiler will let us call a Receiver method.
((Receiver)receiver).processRequestFrom(myName);
}
} else {
status.append("Couldn't find any applet named "
+ receiverName + "." + newline);
}

Trang 57

Bi ging Lp trnh Mng


}
public Insets getInsets() {
return new Insets(3,3,3,3);
}
public void paint(Graphics g) {
g.drawRect(0, 0,
getSize().width - 1, getSize().height - 1);
}
public String getAppletInfo() {
return "Sender by Kathy Walrath";
}
}

Di y l chng trnh Reciever:


import java.applet.*;
import java.awt.*;
public class Receiver extends Applet {
private final String waitingMessage="Waiting for a message...";
private Label label = new Label(waitingMessage, Label.RIGHT);
public void init() {
add(label);
add(new Button("Clear"));
add(new Label("(My name is " + getParameter("name") + ".)",
Label.LEFT));
validate();
}
public boolean action(Event event, Object o) {
label.setText(waitingMessage);
repaint();
return false;
}
public void processRequestFrom(String senderName) {
label.setText("Received message from " + senderName + "!");
repaint();
}

Trang 58

Bi ging Lp trnh Mng


public void paint(Graphics g) {
g.drawRect(0, 0, size().width - 1, size().height - 1);
}
public String getAppletInfo() {
return "Receiver (named " + getParameter("name") + ") by Kathy
Walrath";
}
}

III.6. Tm tt c cc applet trn mt trang: s dng phng thc


getApplets
Phng thc getApplets tr v mt danh sch ca tt c cc applet trn cng trang. Vi l
do bo mt, nhiu trnh duyt v applet viewer thc hin getApplets sao cho n ch tr v
nhng applet bt ngun t cng mt my ch.
Di y l chng trnh:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Enumeration;
public class GetApplets extends Applet
implements ActionListener {
private TextArea textArea;
private String newline;
public void init() {
Button b = new Button("Click to call getApplets()");
b.addActionListener(this);
setLayout(new BorderLayout());
add("North", b);
textArea = new TextArea(5, 40);
textArea.setEditable(false);
add("Center", textArea);
newline = System.getProperty("line.separator");
}
public void actionPerformed(ActionEvent event) {
printApplets();
}

Trang 59

Bi ging Lp trnh Mng


public String getAppletInfo() {
return "GetApplets by Kathy Walrath";
}
public void printApplets() {
//Enumeration will contain all applets on this page
//(including this one) that we can send messages to.
Enumeration e = getAppletContext().getApplets();
textArea.append("Results of getApplets():" + newline);
while (e.hasMoreElements()) {
Applet applet = (Applet)e.nextElement();
String info = ((Applet)applet).getAppletInfo();
if (info != null) {
textArea.append("- " + info + newline);
} else {
textArea.append("- "
+ applet.getClass().getName()
+ newline);
}
}
textArea.append("________________________"
+ newline + newline);
}
}

III.7.an xen vo cc trang Web


Sau khi bin dch chng trnh thnh dng m ByteCode lc ta bt u tin hnh an xen
vo cc trang Web bng cc th v m v ng <APPLET>, </APPLET>.
Cng nh nhng th khc th <APPLET> cng bao gm nhiu phn. Tuy nhin ch c mt
vi phn l cn thit. Mt s Applets nht thit phi c cc thnh phn trong trong th; mt
s khc th ch cn nhng phn ti thiu.
on m sau cho ta hnh nh n gin ca cc phn chnh ca mt th Applets :
<APPLET>
<APPLET attributes> (Nhng thuc tnh)
Applet-parameters

(Nhng tham s )

Alternate-HTML

(HTML thay th vi nhng trnh duyt khng hiu Java)

</APPLET>

Trang 60

Bi ging Lp trnh Mng

III.7.1.Cc thuc tnh (Attributes)


Trong gii hn ti thiu, tt c cc th <APPLET> phi cha ba thuc tnh trong bng sau:
Thuc tnh

M t

CODE

Xc nh tn tp tin applet

HEIGHT

Xc nh chiu cao ca applet theo pixel

WIDTH

Xc nh chiu rng ca applet theo pixel

Ba thuc tnh trn c gi l nhng thuc tnh cn. Tc l ta khng th a cc Applets v


cc trang web m khng dng chng. Ngoi ra ta c th s dng mt s thuc tnh khc nh
trnh by trong bng sau:
Thuc tnh

M t

ALIGN

Xc nh v tr t applet trn trang vn bn bao quanh n.

ALT

Xc nh vn bn thay th

CODEBASE

Xc nh URL c s cho applet, mc nh l coi nh applet nm cng th mc


vi trang Web.

HSPACE

Xc nh s du cch theo chiu ngang bao quanh applet

NAME

Xc nh tn ca applet. Dng lin lc vi cc applet khc trong cng trang

VSPACE

Xc nh s du cch bao quanh applet theo chiu ng

III.7.2.Cc thng s ca applet


L ni m ta c th ty bin applet. lm cho applet tc ng nh mun, ta dng th
<PARAM> vi hai thuc tnh s hu ring l Name v Value. Ta c th cung cp nhiu th
<PARAM> theo quy cch :
<PARAM NAME= " Parameter name" VALUE= "Parameter Value"> .

Kim tra s tin b

1. Phng thc ................dng tm dng applet.


2. Phng thc ................dng cp nht (update) ca s.
3. Mt chng trnh Java c th va l applet, va l application.
ng/Sai
4. Java applet khng th c, ghi file trn my ngi s dng.
ng/Sai
Trang 61

Bi ging Lp trnh Mng


5. Phng thc ................dng to tham chiu n i tng nn ho (Graphics).
6. Trong java, iu khin mu sc c thc hin thng qua hai mu c bn l trng v
en. ng/Sai
7. Phng thc ................dng ly tt c cc font ch m h thng h tr.
8. Trong lp FontMetrics, 'ascent' l khong cch t 'baseline' n y ca k t.
ng/Sai
Bi tp

1. Vit applet nh sau:

Khi ngi s dng nhp vo vn bn v click chut vo nt 'Check identifier' applet phi
kim tra xem t c trong vn bn c phi l mt t kho c trong java khng.
Ghi ch: S dng cc font ch khc nhau cho vn bn, nt lnh v nhn.
2. Vit applet nh sau:

Ngi s dng c php nhp vo gi tr mu trong cc tng ng. Khi click nt 'Draw'
cc biu dng ng, bar, pie c hin ra.

Trang 62

Bi ging Lp trnh Mng


CHNG 4:

CC GI & GIAO DIN


I.Gii thiu
Gi v giao din l hai thnh phn chnh ca chng trnh Java. Cc gi c lu tr
theo kiu phn cp, v c nhp (import) mt cch tng minh vo nhng lp mi c nh
ngha. Cc giao din c th c s dng ch nh mt tp cc phng thc. Cc phng
thc ny c th c hin thc bi mt hay nhiu lp.
Mt tp tin ngun Java c th cha mt hoc tt c bn phn sau y:

Mt cu lnh khai bo gi (package).

Nhng cu lnh nhp thm cc gi hoc cc lp khc vo chng trnh (import).

Mt khai bo lp cng cng (public)

Mt s cc lp dng ring t (private) ca gi.

Mt tp tin ngun Java s c khai bo lp public n. Tt c nhng pht biu


khc tu chn. Chng trnh nn c vit theo th t: t tn gi (package), lnh
nhp cc gi (import), v nh ngha lp (class).

II.Cc giao din


Giao din l mt trong nhng khi nim quan trng nht ca ngn ng Java. N cho php
mt lp c nhiu lp cha (superclass). Cc chng trnh Java c th tha k ch mt lp ti mt
thi im, nhng c th hin thc hng lot giao din. Giao din c s dng thay th mt
lp tru tng, khng c mt s k tha m thc thi no. Giao din tng t nh cc lp tru
tng. S khc nhau ch mt lp tru tng c th c nhng hnh vi c th, nhng mt giao
din th khng th c mt phng thc c th no c hnh vi ca ca ring mnh. Cc giao din
cn c hin thc. Mt lp tru tng c th c tha k, nhng khng th to ra c th
hin (i tng).

II.1.Cc bc to mt giao din


nh ngha giao din: Mt giao din c nh ngha nh sau:

Trang 63

Bi ging Lp trnh Mng


Chng trnh 4.1
//Giao din vi cc phng thc
public interface myinterface
{
public void add(int x,int y);
public void volume(int x,int y,int z);
}
//Giao din nh ngha cc hng s
public interface myconstants
{
public static final double price=1450.00;
public static final int counter=5;
}
Chng trnh trn c dch nh sau:
javac myinterface.java
Mt giao din c hin thc vi t kho implement. Trong trng hp trn, giao din
cho php ng dng mi quan h is a . V d:
class demo implements myinterface
Nu nhiu hn mt giao din c thc thi, cc tn s c ngn cch vi nhau bi mt du
phy. iu ny c trnh by nh sau:
class Demo implements MyCalc, Mycount
Hy ghi nh cc lu sau trong khi to mt giao din:
Tt c cc phng thc trong cc giao din ny phi l kiu public.
Cc phng thc c nh ngha trong mt lp m lp ny hin thc giao din.

II.2.Hin thc giao din


Cc giao din khng th tha k (extends) cc lp, nhng chng c th tha k cc giao
din khc. Nu khi bn hin thc mt giao din m tha k cc giao din khc, bn nh ngha
(override) cc phng thc trong giao din mi giao din tha k. Trong v d trn, cc
phng thc ch c khai bo, m khng c nh ngha. Cc phng thc phi c nh
Trang 64

Bi ging Lp trnh Mng


ngha trong mt lp m lp hin thc giao din ny. Ni mt cch khc, bn cn ch ra hnh
vi ca phng thc. Tt c cc phng thc trong cc giao din phi l kiu public. Bn khng
c s dng cc b ng (modifers) chun khc nh protected, private,..khi khai bo cc
phng thc trong giao din.
on m Chng trnh 4.2 biu din mt giao din c ci t nh th no:
Chng trnh 4.2
import java.io.*;
class Demo implements myinterface
{
public void add(int x,int y)
{
System.out.println( +(x+y));
//Gi s phng thc add c khai bo trong giao din
}
public void volume(int x,int y,int z)
{
System.out.println( +(x*y*z));
//Gi s phng thc volume c khai bo trong giao din
}
public static void main(String args[])
{
Demo d=new Demo();
d.add(10,20);
d.volume(10,10,10);
}
}
Khi bn nh ngha mt giao din mi, c ngha l bn ang nh ngha mt kiu d liu
tham chiu mi. Bn c th s dng cc tn giao din bt c ni u nh bt k kiu d liu

Trang 65

Bi ging Lp trnh Mng


khc. Ch c mt th hin (instance) ca lp m lp thc thi giao din c th c gn cho
mt bin tham chiu. Kiu ca bin tham chiu l tn ca giao din.

III.Cc gi
Gi c coi nh cc th mc, l ni bn t chc cc lp v cc giao din ca bn.
Cc chng trnh Java c t chc nh nhng tp ca cc gi. Mi gi gm c nhiu lp,
v/hoc cc giao din c coi nh l cc thnh vin ca n. l mt phng n thun li
lu tr cc nhm ca nhng lp c lin quan vi nhau di mt ci tn c th. Khi bn ang
lm vic vi mt chng trnh ng dng, bn to ra mt s lp. Cc lp cn c t chc
mt cch hp l. iu tr nn d dng khi ta t chc cc tp tin lp thnh cc gi khc nhau.
Hy tng tng rng mi gi ging nh mt th mc con. Tt c cc iu m bn cn lm l
t cc lp v cc giao din c lin quan vi nhau vo cc th mc ring, vi mt ci tn phn
nh c mc ch ca cc lp.
Ni tm li, cc gi c ch cho cc mc ch sau:
Chng cho php bn t chc cc lp thnh cc n v nh hn (nh l cc th mc), v lm
cho vic xc nh v tr tr nn d dng v s dng cc tp tin ca lp mt cch ph hp.
Gip trnh cho vic t tn b xung t (trng lp tn). Khi bn lm vic vi mt s
cc lp bn s cm thy kh quyt nh t tn cho cc lp v cc phng thc. i lc
bn mun s dng tn ging nhau m tn lin quan n lp khc. Cc gi giu cc lp
trnh vic t tn b xung t.
Cc gi cho php bn bo v cc lp, d liu v phng thc mc rng hn trn mt nn
tng class-to-class.
Cc tn ca gi c th c s dng nhn dng cc lp.
Cc gi cng c th cha cc gi khc.
to ra mt lp l thnh vin ca gi, bn cn bt u m ngun ca bn vi mt khai bo
gi, nh sau:
package mypackage;
Hy ghi nh cc im sau trong khi to gi:

Trang 66

Bi ging Lp trnh Mng


on m phi bt u vi mt pht biu package. iu ny ni ln rng lp c nh
ngha trong tp tin l mt phn ca gi xc nh.
M ngun phi nm trong cng mt th mc, m th mc li l tn gi ca bn.
Quy c rng, cc tn gi s bt u bng mt ch thng phn bit gia lp v gi.
Cc pht biu khc c th xut hin sau khai bo gi l cc cu lnh nhp, sau chng bn
c th bt u nh ngha lp ca bn.
Tng t tt c cc tp tin khc, mi lp trong mt gi cn c bin dch.
cho chng trnh Java ca bn c kh nng s dng cc gi , hy nhp (import) chng
vo m ngun ca bn.
S khai bo sau y l hp l v khng hp l :
Hp l
package mypackage;
import java.io.*;
Khng hp l
import java.io.*;
package mypackage;
Bn c cc tu chn sau trong khi nhp vo mt gi:
Bn c th nhp vo mt tp tin c th t gi:
import java.mypackage.calculate
Bn c th nhp (import) ton b gi:
import java.mypackage.*;
My o Java (JVM) s qun l cc thnh phn nm trong cc gi c nhp vo (import).
Bn sn sng lm vic vi mt lnh nhp import -java.io.*. Bn thn Java c
ci t sn mt tp cc gi, bng di y cp n mt vi gi c sn ca Java:

Gi

M t

Trang 67

Bi ging Lp trnh Mng


java.lang

Khng cn phi khai bo nhp. Gi ny lun c nhp cho bn.

java.io

Bao gm cc lp tr gip cho bn tt c cc thao tc vo ra.

java.applet

Bao gm cc lp bn cn thc thi mt applet trong trnh duyt.

java.awt

Cc thnh phn xy dng giao din ho (GUI).

java.util

Cung cp nhiu lp v nhiu giao din tin ch khc nhau, nh l cc cu


trc d liu, lch, ngy thng, v.v..

java.net

Cung cp cc lp v cc giao din cho vic lp trnh mng TCP/IP.


Bng 4.1 Cc gi trong Java.

Bn cnh , Java cn cung cp thm nhiu gi pht trin ng dng v applet. Nu


bn khng khai bo cc gi trong on m ca bn, th cc lp v cc giao din ca bn sau khi
kt thc s nm trong mt gi mc nh m khng c tn. Thng thng, gi mc nh ny ch
c ngha cho cc ng dng nh hoc cc ng dng tm thi. Khi bn bt u vic pht trin
cho mt ng dng ln, bn c khuynh hng pht trin mt s cc lp. Bn cn t chc cc lp
trong cc th mc khc nhau d dng truy cp. lm c iu ny, bn phi t chng
vo cc gi.
ngha ln nht ca gi l bn c kh nng s dng cc tn lp ging nhau, nhng bn
phi t chng vo cc gi khc nhau.

III.1.To mt gi
Gi l mt phng thc hu dng nhm cc lp m trnh c cc tn trng nhau.
Cc lp vi nhng tn ging nhau c th t vo cc gi khc nhau. Cc lp c nh ngha
bi ngi s dng cng c th c nhm li trong cc gi.
Cc bc sau y cho php to nn mt gi do ngi dng nh ngha:
Khai bo gi bng cch s dng c php thch hp. on m phi bt u vi khai bo gi.
iu ny ch ra rng lp c nh ngha trong tp tin l mt phn ca gi xc nh.
package mypackage;
S dng pht biu import nhp cc gi chun theo yu cu.
import java.util.*;

Trang 68

Bi ging Lp trnh Mng


Khai bo v nh ngha cc lp s nm trong gi . Tt c cc thnh phn ca gi s l
public, c th c truy cp t bn ngoi. My o Java (JVM) qun l tt c cc phn t
nm trong gi .
package mypackage; //khai bo gi
import java.util.*;
public class Calculate //nh ngha mt lp
{
int var;
Calculate(int n)
{

var = n;
//cc phng thc
//
public class Display //nh ngha mt lp
{
//Cc phng thc
}
}
}
Lu cc nh ngha trn trong mt tp tin vi phn m rng .java, v dch cc lp c nh
ngha trong gi. Vic dch c th thc hin vi tham s -d. Chc nng ny to mt th
mc trng vi tn gi, v t tp tin .class vo th mc c ch r.
javac d d:\temp Calculate.java
Nu khai bo gi khng c trong chng trnh, lp hoc giao din s nm trong gi
mc nh m khng c tn. Ni chung, gi mc nh ny th ch c ngha cho cc ng dng nh
hoc tm thi.
Hy ghi nh cc im sau y khi bn khai thc cc gi do ngi dng nh ngha
trong cc chng trnh khc:
Trang 69

Bi ging Lp trnh Mng


M ngun ca cc chng trnh phi tn ti trong cng mt th mc vi gi c nh
ngha bi ngi s dng.
cho cc chng trnh Java khc s dng c cc gi , hy khai bo chng vo on
m ngun.
nhp mt lp ta dng:
import java.mypackage.Calculate;
nhp ton b mt gi, ta lm nh sau:
import java.mypackage.*;
To mt tham chiu n cc thnh phn ca gi. Ta dng on m n gin sau:
import java.io.*;
import mypackage.Calculate;
class PackageDemo{
public static void main(String args[]){
Calculate calc = new Calculate();
}
}
Nu pht biu import cho gi khng c s dng, th khi s dng lp phi ch ra
lp gi no. C php nh sau:
mypackage.Calculate calc = new mypackage.Calculate();

III.2.Thit lp ng dn cho lp (classpath)


Chng trnh dch v chng trnh thng dch tm kim cc lp trong th mc hin
hnh, v tp tin nn (zip) cha cc lp ca JDK. iu ny c ngha cc tp tin nn cha cc lp
ca JDK v th mc hinh hnh cha m ngun t ng c t vo classpath. Tuy nhin,
trong mt vi trng hp, bn cn phi t thit lp classpath.
Classpath l mt danh sch cc th mc, danh sch ny tr gip tm kim cc tp tin
.class tng ng. Thng thng, ta khng nn thit lp mi trng classpath lu di. N ch
thch hp khi thit lp CLASSPATH chy chng trnh, ch thit lp ng dn cho vic
thc thi hin thi.
Trang 70

Bi ging Lp trnh Mng


javac classpath c:\temp Packagedemo.java
Th t ca cc mc trong classpath rt quan trng. Khi bn thc thi on m ca bn,
my o Java s tm kim cc mc trong classpath theo th t cc th mc trong classpath, cho
n khi n tm thy lp cn tm.
V d ca mt gi
Chng trnh 4.3
package mypackage;
public class calculate
{
public double volume(double height, double width,double depth) {
return (height*width*depth);
}
public int add(int x,int y) {
return (x+y);
}
public int divide(int x,int y) {
return (x/y);
}
}
s dng gi ny, bn cn phi:
Nhp lp c s dng.
Nhp ton b gi.
S dng cc thnh phn ca gi.
Bn cn dch tp tin ny. N c th c dch vi tu chn d, nh javac n to mt
th mc vi tn ca gi v t tp tin .class vo th mc ny.
javac d c:\temp calculate.java
Chng trnh bin dch to mt th mc c gi l mypackage trong th mc temp,
v lu tr tp tin calculate.class vo th mc ny.
Trang 71

Bi ging Lp trnh Mng


V d sau biu din cch s dng mt gi:
Chng trnh 4.4
import java.io.*;
import mypackage.calculate;
class PackageDemo{
public static void main(String args[]){
calculate calc = new calculate();
int sum = calc.add(10,20);
double vol = calc.volume(10.3f,13.2f,32.32f);
int div = calc.divide(20,4);
System.out.println(The addition is: +sum);
System.out.println(The Volume is: +vol);
System.out.println(The division is: +sum);
}
}
Nu bn s dng mt lp t mt gi khc, m khng s dng khai bo import cho gi
, th khi , bn cn phi s dng tn lp vi tn gi.
mypackage.calculate calc = new mypackage.calculate( );

IV.Gi v iu khin truy xut


Cc gi cha cc lp v cc gi con. Cc lp cha d liu v on m. Java cung cp
nhiu mc truy cp thng qua cc lp, cc gi v cc ch nh truy cp. Bng sau y s tm
tt quyn truy cp cc thnh phn ca lp:
public

protected

No modifier

private

Cng lp

Yes

Yes

Yes

Yes

Cng gi- lp tha


k (Subclass)

Yes

Yes

Yes

No

Cng gi-khng
tha k (non-

Yes

Yes

Yes

No

Trang 72

Bi ging Lp trnh Mng


Subclass)
Khc gi-lp tha k
(subclass)

Yes

Yes

No

No

Khc gi-khng tha


k (non-Subclass)

Yes

No

No

No

Bng 4.2: Truy cp n cc thnh phn ca lp.

IV.1. Gi java.lang
Mc nh, mi chng trnh java u nhp gi java.lang. V th, khng cn lnh nhp
gi java.lang ny trong chng trnh.

Lp bao bc (wrapper class)


Cc kiu d liu nguyn thy th khng phi l cc i tng. V th, chng khng th
to ra hay truy cp bng phng thc. to v thao tc kiu d liu nguyn thu, ta s dng
wrapper class tng ng vi. Bng sau lit k cc lp trnh bao bc (wrapper). Cc phng
thc ca mi lp ny c trong phn ph lc.
Kiu d liu

Lp trnh bao bc

boolean

Boolean

byte

Byte

char

Character

double

Double

float

Float

int

Integer

long

Long

short

Short

Bng 4.3: Cc lp trnh bao bc cho cc kiu d liu nguyn thu.


V d mt vi phng thc ca lp wrapper:
Boolean wrapBool = new Boolean(false);
Integer num1 = new Integer(31);
Integer num2 = new Integer(3);
Int sum = num1.intValue()*num2.intValue();
//intValue() l mt hm ca lp trnh bao bc Integer.

Trang 73

Bi ging Lp trnh Mng


Chng trnh sau y minh ha cch s dng lp wrapper cho kiu d liu int
Chng trnh 4.5
class CmdArg
{
public static void main(String args[])
{
int sum = 0;
for(int i = 0;i<args.length;i++)
sum+= Integer.parseInt(args[i]);
System.out.println(Tng l: +sum);
}
}
Vng lp for c s dng tm tng ca cc s c truyn vo t dng lnh. Cc s
c lu tr trong mng String args[]. Thuc tnh length xc nh s cc phn t trong
mng args[]. Mng args[] l kiu String. V th, cc phn t phi c i sang kiu d liu int
trc khi cng chng. Qu trnh chuyn i c thc hin vi s gip ca lp trnh bao
bc Integer. Phng thc parseInt() trong lp Integer thc hin qu trnh chuyn i ca
kiu d liu chui sang kiu d liu s nguyn.
Tt c cc lp trnh bao bc, ngoi tr lp Character c mt phng thc tnh
valueOf() nhn mt chui, v tr v mt gi tr s nguyn c. Cc lp bao bc ca byte,
int, long, v short cung cp cc hng s MIN_VALUE v MAX_VALUE. Cc lp bao bc ca
double v long cng cung cp cc hng POSITIVE_INFINITY v NEGATIVE_INFINITY.

IV.1.1.Lp String (lp chui)


Chui l mt dy cc k t. Lp String cung cp cc phng thc thao tc vi cc
chui. N cung cp cc phng thc khi to (constructor) khc nhau:

String str1 = new String( );


//str1 cha mt chui rng.

String str2 = new String(Hello World);


//str2 cha Hello World
Trang 74

Bi ging Lp trnh Mng

char ch[] = {A,B,C,D,E};


String str3 = new String(ch);
//str3 cha ABCDE

String str4 = new String(ch,0,2);


//str4 cha AB v 0- tnh t k t bt u, 2- l s lng k t k t k t bt u.
Ton t + c s dng cng chui khc vo chui ang tn ti. Ton t + ny
c gi nh l ni chui. y, ni chui c thc hin thng qua lp StringBuffer.
Chng ta s tho lun v lp ny trong phn sau. Phng thc concat( ) ca lp String cng
c th thc hin vic ni chui. Khng ging nh ton t +, phng thc ny khng thng
xuyn ni hai chui ti v tr cui cng ca chui u tin. Thay vo , phng thc ny tr v
mt chui mi, chui mi s cha gi tr ca c hai. iu ny c th c gn cho chui
ang tn ti. V d:
String strFirst, strSecond, strFinal;
StrFirst = Charlie;
StrSecond = Chaplin;
//.bng cch s dng phng thc concat( ) gn vi mt chui ang tn ti.
StrFinal = strFirst.concat(strSecond);
Phng thc concat( ) ch lm vic vi hai chui ti mt thi im.

IV.1.2.Chui mc nh (String pool)


Mt chng trnh Java c th cha nhiu chui. String Pool i din cho tt c cc
ch c to trong chng trnh. Mi khi mt chui c to, String Pool tm kim trong n,
nu tm thy nu chui tn ti th khng to th hin m ch gn th tm thy cho chui mi.
Vic ny tit kim rt nhiu khng gian b nh. V d:
String day = Monday;
String weekday = Monday;
y, mt th hin cho bin day, bin c gi tr l Monday, c to trong
String Pool. Khi chui bng ch weekday c to, c gi tr ging nh ca bin day, mt
th hin ang tn ti c gn n bin weekday. V c hai bin day v weekday cng

Trang 75

Bi ging Lp trnh Mng


u nhm ch vo chui ging ht nhau trong String Pool. Hnh nh sau minh ho khi nim
ca String Pool.

day

Weekday

1
2
3
4
N

Sunday
Monday
Hello
Aptech
World

Hnh 4.1 Khi nim ca String Pool.

IV.1.3.Cc phng thc ca lp String


Trong phn ny, chng ta s xem xt cc phng thc ca lp String.
charAt( )
Phng thc ny tr v mt k t ti mt v tr trong chui.
V d:
String name = new String(Java Language);
char ch = name.charAt(5);
Bin ch cha gi tr L, t v tr cc s bt u t 0.
startsWith( )
Phng thc ny tr v gi tr kiu logic (Boolean), ph thuc vo chui c bt u vi
mt chui con c th no khng. V d:
String strname = Java Language;
boolean flag = strname.startsWith(Java);
Bin flag cha gi tr true.
endsWith( )
Phng thc ny tr v mt gi tr kiu logic (boolean), ph thuc vo chui kt thc
bng mt chui con no khng, V d:

Trang 76

Bi ging Lp trnh Mng

String strname = Java Language;


boolean flag = strname.endsWith(Java);
Bin flag cha gi tr false.
copyValueOf( )
Phng thc ny tr v mt chui c rt ra t mt mng k t c truyn nh mt
i s. Phng thc ny cng ly hai tham s nguyn. Tham s u tin ch nh v tr t ni
cc k t phi c rt ra, v tham s th hai ch nh s k t c rt ra t mng. V d:
char name[] = {L,a,n,g,u,a,g,e};
String subname = String .copyValueOf(name,5,2);
By gi bin subname cha chui ag.
toCharArray( )
Phng thc ny chuyn chui thnh mt mng k t. V d:
String text = new String(Hello World);
char textArray[] = text.toCharArray( );
indexOf( )
Phng thc ny tr v th t ca mt k t no , hoc mt chui trong phm vi mt
chui. Cc cu lnh sau biu din cc cch khc nhau ca vic s dng hm.
String day = new String(Sunday);
int index1 = day.indexOf(n);
//cha 2
int index2 = day.indexOf(z,2);
//cha 1 nu z khng tm thy ti v tr 2.
int index3 = day.indexOf(Sun);
//cha mc 0
toUpperCase( )
Phng thc ny tr v ch hoa ca chui.
String lower = new String(good morning);
System.out.println(Uppercase: +lower.toUpperCase( ));

Trang 77

Bi ging Lp trnh Mng


toLowerCase( )
Phng thc ny tr v ch thng ca chui.
String upper = new String(APTECH);
System.out.println(Lowercase: +upper.toLowerCase( ));
trim()
Phng thc ny ct b khong trng hai u chui. Hy th on m sau thy s
khc nhau trc v sau khi ct b khong trng.
String space = new String(

Spaces

);

System.out.println(space);
System.out.println(space.trim()); //Sau khi ct b khong trng
equals()
Phng thc ny so snh ni dung ca hai i tng chui.
String name1 = Aptech, name2 = APTECH;
boolean flag = name1.equals(name2);
Bin flag cha gi tr false.

IV.1.4.Lp StringBuffer
Lp StringBuffer cung cp cc phng thc khc nhau thao tc mt i tng dng
chui. Cc i tng ca lp ny rt mm do, l cc k t v cc chui c th c chn
vo gia i tng StringBuffer, hoc ni thm d liu vo ti v tr cui. Lp ny cung cp
nhiu phng thc khi to. Chng trnh sau minh ho cch s dng cc phng thc khi
to khc nhau to ra cc i tng ca lp ny.
Chng trnh 4.6
class StringBufferCons
{
public static void main(String args[])
{
StringBuffer s1 = new StringBuffer();
StringBuffer s2 = new StringBuffer(20);
Trang 78

Bi ging Lp trnh Mng


StringBuffer s3 = new StringBuffer(StringBuffer);

System.out.println(s3 = + s3);
System.out.println(s2.length()); //cha 0
System.out.println(s3.length()); //cha 12
System.out.println(s1.capacity()); //cha 16
System.out.println(s2.capacity()); //cha 20
System.out.println(s3.capacity()); //cha 28
}
}
length() v capacity() ca StringBuffer l hai phng thc hon ton khc nhau. Phng
thc length() cp n s cc k t m i tng thc cha, trong khi capacity() tr v
tng dung lng ca mt i tng (mc nh l 16) v s k t trong i tng StringBuffer.
Dung lng ca StringBuffer c th thay i vi phng thc ensureCapacity(). i
s int c truyn n phng thc ny, v dung lng mi c tnh ton nh sau:
NewCapacity = OldCapacity * 2 + 2
Trc khi dung lng ca StringBuffer c t li, iu kin sau s c kim tra:
Nu dung lng(NewCapacity) mi ln hn i s c truyn cho phng thc
ensureCapacity(), th dung lng mi (NewCapacity) c t.
Nu dung lng mi nh hn i s c truyn cho phng thc ensureCapacity(), th
dung lng c t bng gi tr tham s truyn vo.
Chng trnh 4.7 minh ho dung lng c tnh ton v c t nh th no.
Chng trnh 4.7
class test{
public static void main(String args[]){
StringBuffer s1 = new StringBuffer(5);
System.out.println(Dung lng ca b nh m = +s1.capacity()); //cha 5

Trang 79

Bi ging Lp trnh Mng


s1.ensureCapacity(8);
System.out.println(Dung lng ca b nh m = +s1.capacity()); //cha 12
s1.ensureCapacity(30);
System.out.println(Dung lng ca b nh m = +s1.capacity()); //cha 30
}
}
Trong on m trn, dung lng ban u ca s1 l 5. Cu lnh
s1.ensureCapacity(8);
Thit lp dung lng ca s1 n 12 =(5*2+2) bi v dung lng truyn vo l 8 nh hn dung
lng c tnh ton l 12 .
s1.ensureCapacity(30);
Thit lp dung lng ca s1 n 30 bi v dung lng truyn vo l 30 th ln hn dung
lng c tnh ton (12*2+2).

IV.1.5.Cc phng thc lp StringBuffer


Trong phn ny, chng ta s xem xt cc phng thc ca lp StringBuffer vi mt chng
trnh.
append()
Phng thc ny ni thm mt chui hoc mt mng k t vo cui cng ca i tng
StringBuffer. V d:
StringBuffer s1 = new StringBuffer(Good);
s1.append(evening);
Gi tr trong s1 by gi l goodevening.
insert()
Phng thc ny c hai tham s. Tham s u tin l v tr chn. Tham s th hai c th
l mt chui, mt k t (char), mt gi tr nguyn (int), hay mt gi tr s thc (float) c

Trang 80

Bi ging Lp trnh Mng


chn vo. V tr chn s ln hn hay bng 0, v nh hn hay bng chiu di ca i tng
StringBuffer. Bt k i s no, tr k t hoc chui, c chuyn sang chui v sau mi
c chn vo. V d:
StringBuffer str = new StringBuffer(Java sion);
str.insert(1,b);
Bin str cha chui Jbava sion.
charAt()
Phng thc ny tr v mt gi tr k t trong i tng StringBuffer ti v tr c ch
nh.V d:
StringBuffer str = new StringBuffer(James Gosling);
char letter = str.charAt(6);

//cha G

setCharAt()
Phng thc ny c s dng thay th k t trong mt StringBuffer bng mt k t
khc ti mt v tr c ch nh.
StringBuffer name = new StringBuffer(Jawa);
name.setCharAt(2,v);
Bin name cha Java.
setLength()
Phng thc ny thit lp chiu di ca i tng StringBuffer. Nu chiu di c ch
nh nh hn chiu di d liu hin ti ca n, th cc k t tha s b ct bt. Nu chiu di ch
nh nhiu hn chiu di d liu th cc k t null c thm vo phn cui ca StringBuffer
StringBuffer str = new StringBuffer(10);
str.setLength(str.length() +10);
getChars()
Phng thc ny c s dng trch ra cc k t t i tng StringBuffer, v sao
chp chng vo mt mng. Phng thc getChars() c bn tham s sau:
Ch s u: v tr bt u, t ni m k t c ly ra.
Ch s kt thc: v tr kt thc
Trang 81

Bi ging Lp trnh Mng


Mng: Mng ch, ni m cc k t c sao chp.
V tr bt u trong mng ch: Cc k t c sao chp vo mng ch t v tr ny.

V d:
StringBuffer str = new StringBuffer(Leopard);
char ch[] = new char[10];
str.getChars(3,6,ch,0);
By gi bin ch cha par
reverse()
Phng thc ny o ngc ni dung ca mt i tng StringBuffer, v tr v mt i
tng StringBuffer khc. V d:
StringBuffer str = new StringBuffer(devil);
StringBuffer strrev = str.reverse();
Bin strrev cha lived.

IV.1.5.Lp java.lang.Math
Lp ny cha cc phng thc tnh (static) thc hin cc thao tc ton hc. Chng
c m t nh sau:
C php l Math.<tn hm>
abs()
Phng thc ny tr v gi tr tuyt i ca mt s. i s c truyn n n c th l
kiu int, float, double, hoc long. Kiu d kiu byte v short c chuyn thnh kiu int nu
chng c truyn ti nh l mt i s. V d:
int num = -1;
Math.abs(num) //tr v 1.
ceil()
Phng thc ny tm thy s nguyn nh nht ln hn hoc bng i s c truyn
vo.
floor()
Phng thc ny tr v s nguyn ln nht nh hn hoc bng i s c truyn vo.
Trang 82

Bi ging Lp trnh Mng


System.out.println(Math.ceil(8.02)); //tr v 9.0
System.out.println(Math.ceil(-1.3)); //tr v -1.0
System.out.println(Math.ceil(100)); //tr v 100.0
System.out.println(Math.floor(-5.6)); //tr v -6.0
System.out.println(Math.floor(201.1)); //tr v 201
System.out.println(Math.floor(100)); //tr v 100
max()
Phng thc ny tm gi tr ln nht trong hai gi tr c truyn vo. Cc i s c
truyn vo c th l kiu int, long, double, v float.
min()
Phng thc ny tm gi tr nh nht trong hai gi tr c truyn vo. Cc i s c
truyn vo c th l kiu int, long, double v float.
round()
Phng thc ny lm trn i s c du phy ng. V d, cu lnh Math.round(34.5) tr v 35.
random()
Phng thc ny tr v mt s ngu nhin kiu double gia 0.0 v 1.0.
sqrt()
Phng thc ny tr v cn bc hai ca mt s. V d, cu lnh Math.sqrt(144) tr v 12.0.
sin()
Phng thc ny tr v sine ca mt s, nu gc c truyn n bng radian. V d:
Math.sin(Math.PI/2) tr v 1.0, gi tr ca sin 450.
PI/2 radian = 90 . Gi tr ca PI c nh ngha trong lp Math (Math.PI).
cos()
Phng thc ny tr v cosine ca mt gc tnh bng radian.

Trang 83

Bi ging Lp trnh Mng


tan()
Phng thc ny tr v tan ca mt gc tnh bng radian.

IV.1.6.Lp Runtime (Thi gian thc hin chng trnh)


Lp Runtime cha thng tin v mi trng thc thi. Lp ny c s dng cho vic
qun l b nh, v vic thc thi ca cc qu trnh x l khc. Mi chng trnh Java c mt th
hin ca lp ny, cho php ng dng giao tip vi mi trng. N khng th c khi to,
mt ng dng khng th to ra mt th hin ca thuc lp ny. Tuy nhin, chng ta c th tham
chiu th hin trong lc thc hin chng trnh t vic dng phng thc getRuntime().
By gi, chng ta bit rng vic thu gom cc d liu khng thch hp trong Java l mt
tin trnh t ng, v chy mt cch nh k. kch hot mt cch th cng b thu thp d
liu khng cn c s dng ta gi phng thc gc() trn i tng Runtime hin thi. xem
chi tit vic cp pht b nh, s dng cc phng thc totalMemory() v freeMemory().
Runtime r = Runtime.getRunTime();
..
..
long freemem = r.freeMemory();
long totalmem = r.totalMemory();
r.gc();
Bng sau trnh by mt vi phng thc ca lp ny:

Phng
thc
exit(int)

ngha

getRuntime(

Dng vic thc thi, v tr v gi tr ca


chng trnh cho h iu hnh. Nu thot
bnh thng th tr v 0; gi tr khc 0 cho
thot khng bnh thng.
Tr v kch thc b nh cha s dng
tnh bng byte
Tr v th hin Runtime

gc()
totalMemory

Gi b phn thu thp rc.


Tr v kch thc b nh tnh bng byte.

freeMemory
()
)

()
Trang 84

Bi ging Lp trnh Mng

Exec(String)

Chy chng trnh mi trng bn


ngoi
Bng 4.4 Lp Runtime

Chng trnh 4.7


class RuntimeDemo
{
public static void main(String args[])
{
Runtime r = Runtime.getRuntime();
Process p = null;
try {
p = r.exec(calc.exe);
}
catch(Exception e)
{
System.out.println(Error executing calculator);
}
}
}
Bn c th tham chiu n Runtime hin hnh thng qua phng thc
Runtime.getRuntime().
Sau , bn c th chy chng trnh calc.exe v tham chiu n calc.exe trong i
tngProcess.

IV.1.7.Lp System
Lp System cung cp cc tin chi nh l, dng vo, dng ra chun v dng li. N
cng cung cp phng thc truy cp cc thuc tnh lin quan n h thng Runtime ca
Java, v cc thuc tnh mi trng khc nhau nh l, phin bn (version), ng dn, hay cc
dch v, v.v..Cc trng ca lp ny l in, out, v err, cc trng ny tiu biu cho dng vo,
ra v li chun tng ng.
Bng sau m t cc phng thc ca lp ny:

Phng thc
exit(int)

gc()
getProperties()

Mc ch
Dng vic thc thi, v tr v gi tr ca
on m. 0 cho bit c th thot ra mt cch
bnh thng.
Gi b phn thu thp rc.
Tr v thuc tnh ca h thng thi gian
chy Java.

Trang 85

Bi ging Lp trnh Mng

setProperties()
currentTimeMillis()

arrayCopy(Object,
int, Object, int, int)

Thit lp cc thuc tnh h thng hin


hnh.
Tr v thi gian hin ti bng mili giy
(ms), c tnh t lc 0 gi ngy 01 thng
01 nm 1970.
Sao chp mng.
Bng 4.5 Lp System.

Lp System khng th to th hin (instance) c.


on m trong chng trnh sau c v hin th mt vi cc thuc tnh mi trng Java.
Chng trnh 4.9
class SystemDemo
{
public static void main(String args[])
{
System.out.println(System.getProperty(java.class.path));
System.out.println(System.getProperty(java.home));
System.out.println(System.getProperty(java.class.version));
System.out.println(System.getProperty(java.specification.vendor));
System.out.println(System.getProperty(java.specification.version));
System.out.println(System.getProperty(java.vendor));
System.out.println(System.getProperty(java.vendor.url));
System.out.println(System.getProperty(java.version));
System.out.println(System.getProperty(java.vm.name));
}
}
Mi thuc tnh cn in ra cn c cung cp nh mt tham s (dng chui) n phng
thc System.getProperty(). Phng thc ny s tr v thng tin tng ng v phng thc
System.out.println() in ra mn hnh.
Kt qu chng trnh trn nh sau:
Trang 86

Bi ging Lp trnh Mng

Hnh 4.2 V d v lp System

IV.1.8.Lp Class
Cc th hin ca lp ny cha trng thi thi gian thc hin ca mt i tng trong
ng dng Java ang chy. iu ny cho php chng ta truy cp thng tin v i tng trong
thi gian chy.
Chng ta c th ly mt i tng ca lp ny, hoc mt th hin bng mt trong ba
cch sau:
S dng phng thc getClass() ca i tng.
S dng phng thc tnh forName() ca lp ly mt th hin ca lp thng qua tn ca
lp .
S dng mt i tng ClassLoader np mt lp mi.
Lp Class khng c phng thc xy dng (constructor).
Cc chng trnh sau minh ho cch s dng phng thc ca mt lp truy cp
thng tin ca lp :
Chng trnh 4.10
interface A
{
final int id = 1;
final String name = Diana;
}

Trang 87

Bi ging Lp trnh Mng


class B implements A
{
int deptno;
}
class ClassDemo
{
public static void main(String args[])
{
A a = new B();
B b = new B();
Class x;
x = a.getClass();
System.out.println(a is object of type: +x.getName());
x= b.getClass();
System.out.println(b is object of type: +x.getName());
x=x.getSuperclass();
System.out.println(x.getName()+ is the superclass of b.);
}
}
Kt qu chy chng trnh c m t nh hnh di y:

Hnh 4.3 Qu trnh xut ra cc kt qu ca lp Class.

IV.1.9.Lp Object
Lp Object l mt lp cha ca tt c cc lp. D l mt lp do ngi dng nh ngha
khng tha k li bt k mt lp no khc, theo mc nh n tha k lp Object.

Trang 88

Bi ging Lp trnh Mng


Mt vi cc phng thc ca lp Object c biu din bn di:

Phng
thc
equals(Obje
ct)
finalize()
notify()
notifyAll()
toString()
wait()

Mc ch
So snh i tng hin ti vi i tng khc.
Phng thc cui cng. Thng thng b nh ngha
lp con.
Thng bo cho Thread (lung) m hin thi trong trng
thi ang ch.
Thng bo tt c cc Thread (lung) hin hnh trong
trng thi ch.
Tr v mt chui i din cho i tng.
a Thread (lung) vo trng thi ch.
Bng 4.6 Lp Object.

Trong chng trnh sau, chng ta khng khai bo bt k lp hoc gi no. By gi,
chng ta c th to bng cch s dng phng thc equals(). Bi v, theo mc nh lp
ObjectDemo m rng lp Object.

Chng trnh 4.11


Class ObjectDemo
{
public static void main(String args[])
{
if (args[0].equals(Aptech))
System.out.println(Yes, Aptech is the right choice!);
}
}

IV.2. Gi java.util
Gi Java.util cung cp mt s lp tin ch Java, thng xuyn trong tt c cc loi
chng trnh ng dng. N bao gm mt s lp sau:
Hashtable

Trang 89

Bi ging Lp trnh Mng


Random
Vector
StringTokenizer

IV.2.1.Lp Hashtable (bng bm)


Lp Hashtable m rng lp tru tng Dictionary, lp ny cng c nh ngha trong
gi java.util. Hashtable c s dng nh x kho (key) n gi tr (value). V d, n c
th c s dng nh x cc tn n tui, nhng ngi lp trnh n nhng d n, chc danh
cng vic n lng, v c nh vy.
Hashtable m rng kch thc khi cc phn t c thm vo. Khi mt Hashtable mi,
bn c th ch nh dung lng ban u v yu t np (load factor). iu ny s lm cho
hashtable tng kch thc ln, bt c lc no vic thm vo mt phn t mi lm vt qua gii
hn hin hnh ca Hashtable. Gii hn ca Hashtable l dung lng nhn ln bi cc yu t
c np.V d: mt bng bm vi dung lng 100, v mt yu t np l 0.75 s c mt gii
hn l 75 phn t. Cc phng thc xy dng cho bng bm c biu din trong bng sau:

Constructor
Hashtable(int)
Hashtable(int,
float)
Hashtable()

Purpose
Xy dng mt bng mi vi dung lng
ban u c ch nh.
Xy dng mt lp mi vi dung lng ban
u c ch nh v yu t np.
Xy dng mt lp mi bng cch s dng
gi tr mc nh cho dung lng ban u v
yu t np.

Bng 4.7 Cc phng thc xy dng Hashtable.


Hashtable hash1 = new Hashtable(500,0.80);
Trong trng hp ny, Bng bm hash1 s lu tr 500 phn t. Khi bng bm lu tr
va y 80% (mt yu t np vo ca 0.80), kch thc ti a ca n s c tng ln.
Mi phn t trong mt hashtable bao gm mt kho v mt gi tr. Cc phn t c
thm vo bng bm bng cch s dng phng thc put(), v c truy lc bng cch s dng
phng thc get(). Cc phn t c th c xo t mt bng bm vi phng thc remove().
Cc phng thc contains() v containsKey() c th c s dng tra cu mt gi tr hoc
mt kho trong bng bm. Mt vi phng thc ca Hashtable c tm tt trong bng sau:

Trang 90

Bi ging Lp trnh Mng

Phng thc
clear()
clone()
contains(Object)
containsKey(Objec

Mc ch
Xo tt c cc phn t t bng bm.
To mt bn sao ca Hashtable.
Tr v True nu bng bm cha cc i tng c
ch nh.
Tr v True nu bng bm cha kho c ch nh.

t)
elements()
get(Object key)
isEmpty()
keys()
put(Object, Object)
rehash()
remove(Object
key)
size()
toString()

Tr v mt tp hp phn t ca bng bm.


Tr v i tng c kho c ch nh.
Tr v true nu bng bm rng.
Tr v tp hp cc kho trong bng bm.
Thm mt phn t mi vo bng bm (Object,
Object) l kho v gi tr.
Thay i bng bm thnh mt bng bm ln hn.
Xo mt i tng c cho bi kho c ch nh.
Tr v s phn t trong bng bm.
Tr v i din chui c nh dng cho bng bm.

Bng 4.8 Cc phng thc lp Hashtable.


Chng trnh sau s dng lp Hashtable. Trong chng trnh ny, tn ca cc tp nh l
cc kho, v cc nm l cc gi tr.
contains c s dng tra cu phn t nguyn 1969, thy c danh sch cha bt k cc
tp nh t 1969.
containsKey c s dng tm kim cho kho Animals, tm tp nh trong bng
bm.
Phng thc get() c s dng tm tp nh Wish You Were Here c trong bng
bm khng. Phng thc get() tr v phn t cng vi kho (tn v nm).
Chng trnh 4.12
import java.util.*;
public class HashTableImplementer
{
public static void main(String args[])
{
Trang 91

Bi ging Lp trnh Mng


//to mt bng bm mi
Hashtable ht = new Hashtable();
//thm cc tp nh tt nht ca Pink Floyd
ht.put(Pulse, new Integer(1995));
ht.put(Dark Side of the Moon, new Integer(1973));
ht.put(Wish You Were Here, new Integer(1975));
ht.put(Animals, new Integer(1997));
ht.put(Ummagumma, new Integer(1969));
//Hin th bng bm
System.out.println(Initailly: +ht.toString());
//kim tra cho bt k tp nh no t 1969
if(ht.contains(new Integer(1969)))
System.out.println(An album from 1969 exists);
//kim tra cho tp nh cc con th
if(ht.containsKey(Animals))
System.out.println(Animals was found);
//Tm ra
Integer year = (Integer)ht.get(Wish You Were Here);
System.out.println(Wish you Were Here was released in+year.toString());
//Xo mt tp nh
System.out.println(Removing Ummagumma\r\n);
ht.remove(Ummagumma);
//Duyt qua tt c cc kho trong bng.
System.out.println(Remaining:\r\n);
for(Enumeration enum = ht.keys(); enum.hasMoreElements();)
System.out.println((String)enum.nextElement());
}
}
Trang 92

Bi ging Lp trnh Mng


Kt qu s chy chng trnh nh sau:

Hnh 4.4 Kt qu ca HashTableImplementer

IV.2.2.Lp random
Lp ny l mt b to s gi ngu nhin (pseudo-random). C hai phng thc xy
dng c nh ngha. Mt trong nhng phng thc xy dng ny ly gi tr khi u (seed)
nh mt tham s. Phng thc xy dng khc khng c tham s, v s dng thi gian hin ti
nh mt gi tr khi u. Vic xy dng mt b to s ngu nhin vi mt gi tr khi u l
mt tng hay, tr khi bn mun b to s ngu nhin lun to ra mt tp cc gi tr ging
nhau. Mt khc, thnh thong n rt hu ch to ra trnh t ging nhau ca cc s random.
iu ny c ngha trong vic g ri chng trnh. Mt khi b to s ngu nhin c to ra,
bn c th s dng bt k cc phng thc sau y cp mt gi tr t n:
nextDouble()
nextFloat()
nextGaussian()
nextInt()
nextLong()
Cc phng thc xy dng v cc phng thc ca lp Random c tm tt trong bng sau:

Phng thc
Mc ch
random()
to ra mt b to s ngu nhin mi
random(long)
To ra mt b to s ngu nhin mi da trn gi tr khi to c
ch nh.
nextDouble()
Tr v mt gi tr kiu double k tip gia 0.0 n 1.0 t b to s

Trang 93

Bi ging Lp trnh Mng

nextFloat()
nextGaussian()

nextInt()
nextLong()
setSeed(long)

ngu nhin.
Tr v mt gi tr kiu float k tip gia 0.0F v 1.0F t b to s
ngu nhin.
Tr v gi tr kiu double c phn phi Gaussian k tip t b to
s ngu nhin. To ra cc gi tr Gaussian s c mt gi tr trung bnh
ca 0, v mt lch tiu chun ca 1.0.
Tr v gi tr kiu Integer k tip t mt b to s ngu nhin.
Tr v gi tr kiu long k tip t mt b to s ngu nhin.
Thit lp gi tr khi to t b to s ngu nhin.
Bng 4.9 Cc phng thc lp Random.

IV.2.3.Lp Vector
Mt trong cc vn vi mt mng l chng ta phi bit n ln nh th no khi chng
ta to n. Trong thc t c nhiu trng hp khng th xc nh kch thc ca mng trc khi
to n.
Lp Vector ca Java gii quyt vn ny. N cung cp mt dng mng vi kch thc
ban u, mng ny c th tng thm khi nhiu phn t c thm vo. Mt lp Vector lu tr
cc mc l kiu Object, n c th dng lu tr cc th hin ca bt k lp Java no. Mt lp
Vector c th lu tr cc phn t khc nhau, cc phn t khc nhau ny l th hin ca cc lp
khc nhau.
Ti bt k thi im, mt lp Vector c dung lng lu tr mt s lng no cc
phn t. Khi mt lp Vector dng ht dung lng ca n, th dung lng ca n c gia tng
bi mt s lng ring cho Vector . Lp Vector cung cp ba phng thc xy dng khc
nhau m c th chng ta ch nh dung lng khi to, v tng s lng ca mt Vector, khi n
c to ra. Cc phng thc xy dng ny c tm tt trong bng sau:

Phng thc xy dng


Vector(int)
Vector(int, int)
Vector()

Mc ch
To ra mt lp Vector mi vi dung lng ban
u c ch nh.
To ra mt lp Vector mi vi dung lng ban
u c ch nh, v lng tng.
To ra mt lp Vector mi vi dung lng
khi to mc nh, v lng tng mc nh.

Bng 4.10 cc phng thc xy dng ca lp Vector.

Trang 94

Bi ging Lp trnh Mng


Mt phn c thm vo mt lp Vector bng cch s dng phng thc addElement().
Tng t, mt phn t c th c thay th bng cch s dng phng thc setElementAt().
Mt lp Vector c th tm kim bng cch s dng phng thc contains(), phng thc ny
n gin ch tm s xut hin ca mt i tng trong Vector. Phng thc elements() tr v
mt tp hp cc i tng c lu tr trong lp Vector. Cc phng thc ny v cc phng
thc thnh vin khc ca lp Vector c tm tt trong bng di y:

Phng thc
addElement(Object)
capacity()
clone()
contains(Object)
copyInto(Object [])
elementAt(int)
elements()
ensureCapacity(int)
firstElement()
indexOf(Object)
indexOf(Object, int)
insertElementAt(Object,
int)
isEmpty()
lastElement()
lastIndexOf(Object)
lastIndexOf(Object, int)
removeAllElements()
removeElement(Object)
removeElementAt(int)
setElementAt(Object,
int)
setSize(int)
Size()
toString()

Mc ch
Thm phn t c ch nh vo lp Vector.
Tr v dung lng hin thi ca lp Vector.
sao chp lp vector, nhng khng phi l cc phn t ca n.
Tr v True nu lp Vector cha i tng c ch nh.
Sao chp cc phn t ca lp Vector vo mng c ch nh.
Ly phn t v tr c ch nh.
Tr v mt bng lit k ca cc phn t trong lp Vector.
m bo rng lp Vector c th lu tr t nht dung lng ti
thiu c ch nh.
Tr v phn t u tin trong lp Vector.
Tm kim lp Vector, v tr v ch mc u tin tm thy i
tng.
Tm kim lp Vector bt u t v tr ch nh, tr v v tr u
tin tm thy.
Chn i tng c ch nh ti v tr c ch nh.
Tr v True nu lp Vector khng c phn t.
Tr v phn t cui cng trong lp Vector.
Tm kim lp Vector, v tr v ch mc ca i tng tm thy
cui cng.
Tm kim lp Vector bt u ti s ch mc c ch nh, v
tr v ch mc ca phn t cui cng tm thy.
Xo tt c cc phn t t lp Vector.
Xo i tng c ch nh t lp Vector.
Xo i tng ti ch mc c ch nh.
Thay th i tng ti ch mc c ch nh vi i tng
c ch nh.
Thit lp kch thc ca lp Vector thnh kch thc mi
c ch nh.
Tr v s ca cc phn t hin thi trong lp Vector.
Tr v mt chui cha ni dung ca lp Vector.

Trang 95

Bi ging Lp trnh Mng

trimToSize()

nh li kch thc ca lp Vector di chuyn dung lng


tha trong n.
Bng 4.11 Cc phng thc lp Vector

Chng trnh sau to ra mt lp Vector vect. N cha 6 phn t: Numbers In Words,


One, Two, Three, Four, Five. Phng thc removeElement()c s dng xo
cc phn t t vect.
Chng trnh 4.13
import java.util.*;
public class VectorImplementation
{
public static void main(String args[])
{
Vector vect = new Vector();
vect.addElement(One);
vect.addElement(Two);
vect.addElement(Three);
vect.addElement(Four);
vect.addElement(Five);
vect.insertElementAt(Numbers In Words,0);
vect.insertElementAt(Four,4);
System.out.println(Size: +vect.size());
System.out.println(Vector );
for(int i = 0; i<vect.size(); i++)
{
System.out.println(vect.elementAt(i)+ , );
}
vect.removeElement(Five);
System.out.println();

Trang 96

Bi ging Lp trnh Mng


System.out.println(Size: +vect.size());
System.out.println(Vector );
for(int i = 0;i<vect.size();i++)
{
System.out.print(vect.elementAt(i)+ , );
}
}
}
Qu trnh hin th kt qu s c m t nh hnh di.

Hnh 4.5 Kt qu ca chng trnh minh ho lp Vector.

IV.2.4.Lp StringTokenizer
Mt lp StringTokenizer c th s dng tch mt chui thnh cc phn t (token)
nh hn. V d, mi t trong mt cu c th coi nh l mt token. Tuy nhin, lp
StringTokenizer i xa hn vic phn tch cc t trong cu. tch ra cc thnh token ta c
th tu bin ch ra mt tp du phn cch cc token khi khi to i tng StringTokenizer.
Nu ta khng ch ra tp du phn cch th mc nh l du trng (space, tab, ...). Ta cng c th
s dng tp cc ton t ton hc (+, *, /, v -) trong khi phn tch mt biu thc.
Bng sau tm tt 3 phng thc xy dng ca lp StringTokenizer:

Phng thc xy dng


StringTokenizer(String)

ngha
To ra mt i tng StringTokenizer
mi da trn chui c ch nh.

Trang 97

Bi ging Lp trnh Mng

StringTokenizer(String, Strng)

To ra mt i tng StringTokenizer
mi da trn (String, String) chui c
ch nh v mt tp cc du phn cch.
StringTokenizer(String, String,
To ra mt i tng StringTokenizer
boolean)
da trn chui c ch nh, mt tp cc
du phn cch, v mt c hiu cho bit
nu cc du phn cch s c tr v nh
cc token hay khng.
Bng 4.12 Cc phng thc xy dng ca lp StringTokenizer.
Cc phng thc xy dng trn c s dng trong cc v d sau:
StringTokenizer st1 = new StringTokenizer(A Stream of words);
StringTokenizer st2 = new StringTokenizer(4*3/2-1+4, +-*/, true);
StringTokenizer st3 = new StringTokenizer(aaa,bbbb,ccc, ,);
Trong cu lnh u tin, StringTokenizer ca st1 s c xy dng bng cch s
dng cc chui c cung cp v du phn cch mc nh. Du phn cch mc nh l khong
trng, tab, cc k t xung dng. Cc du phn cch ny th ch s dng khi phn tch vn bn,
nh vi st1.
Cu lnh th hai trong v d trn xy dng mt i tng StringTokenizer cho cc biu
thc ton hc bng cch s dng cc k hiu *, +, /, v -.
Cu lnh th 3, StringTokenizer ca st3 s dng du phy nh mt du phn cch.
Lp StringTokenizer ci t giao din Enumeration. V th, n bao gm cc phng
thc hasMoreElements() v nextElement(). Cc phng thc

c th s dng ca lp

StringTokenizer c tm tt trong bng sau:

Phng thc
countTokens()
hasMoreElements()

hasMoreTokens()

nextElement()

Mc ch
Tr v s cc token cn li.
Tr v True nu cn c token ang
c nh du trong chui. N th
ging ht nh hasMoreTokens.
Tr v True nu cn c token ang
c nh du trong chui. N ging
ht nh hasMoreElements.
Tr v token k tip trong chui. N
th ging nh nextToken.

Trang 98

Bi ging Lp trnh Mng

nextToken()
nextToken(String)

Tr v Token k tip trong chui.


N th ging nh nextElement.
Thay i b du phn cch bng
chui c ch nh, v sau tr v
token k tip trong chui.

Bng 4.13 Cc phng thc lp StringTokenizer.


Hy xem xt chng trnh cho bn di. Trong v d ny, hai i tng
StringTokenizer c to ra. u tin, st1 c s dng phn tch mt biu thc ton
hc. Th hai, st2 phn tch mt dng ca cc trng c phn cch bi du phy. C hai
tokenizer, phng thc hasMoreTokens() v nextToken() c s dng duyt qua tp cc
token, v hin th cc token.
Chng trnh 4.13
import java.util.*;
public class StringTokenizerImplementer
{
public static void main(String args[])
{
// t mt biu thc ton hc v to mt tokenizer cho chui .
String mathExpr = 4*3+2/4;
StringTokenizer st1 = new StringTokenizer(mathExpr,*+/-, true);
//trong khi vn cn cc token, hin th System.out.println(Tokens of mathExpr: );
while(st1.hasMoreTokens())
System.out.println(st1.nextToken());
//to mt chui ca cc trng c phn cch bi du phy v to //mt tokenizer
cho chui.
String commas = field1,field2,field3,and field4;
StringTokenizer st2 = new StringTokenizer(commas,,,false);
//trong khi vn cn token, hin th.
System.out.println(Comma-delimited tokens : );
while (st2.hasMoreTokens())

Trang 99

Bi ging Lp trnh Mng


System.out.println(st2.nextToken());
}
}
Kt qu chy chng trnh c m t nh hnh di.

Hnh 4.6 Kt qu chy chng trnh minh ho lp StringTokenizer.

Kim tra s tin b


1. lun l lnh u tin trc cc lnh: import, class trong chng trnh Java.
2. Mt giao din c th cha nhiu cc phng thc. ng/Sai
3. Trong khi to gi, th m ngun phi nm trong th mc c tn nh tn gi. ng/Sai
4. ..l mt danh sch ca cc th mc, m JVM s tm kim cc tp tin lp.
5. Lp bao bc (wrapper) cho cc kiu d liu double v long cung cp hai hng s l
.v...
6. phng thc c s dng thay th mt k t trong lp StringBuffer
bng mt k t khc ti v tr c ch nh.
7. Phng thc. ca lp StringTokenizer tr v s token cn li.
Bi tp
1. To mt giao din v s dng n trong mt chng trnh ca Java hin th bnh
phng v lu tha 3 ca mt s.
2. To mt gi v vit mt hm, hm tr v giai tha ca mt i s c truyn vo
trong mt chng trnh.
3. Vit mt chng trnh bng cch s dng cc hm ca lp Math hin th bnh
phng ca cc s ln nht v nh nht ca mt tp cc s c nhp vo bi ngi s
dng ti dng lnh.
Trang 100

Bi ging Lp trnh Mng


4. Hy to ra s ghi nh ca chnh bn, ni m nhng con s c nhp vo nh sau:

Joy
Jack
Tina

34543
56765
34567

Chng trnh phi lm nh sau:


Kim tra xem s 3443 c tn ti trong s ghi nh ca bn hay khng.
Kim tra xem mu tin ca Jack c hin hu trong s ghi nh ca bn hay khng.
Hin th s in thoi ca Tina.
Xo s in thoi ca Joy.
Hin th cc mu tin cn li.
5. Vit mt chng trnh m nhp vo mt s in thoi ti dng lnh, nh mt chui c
dng (091) 022-6758080. Chng trnh s hin th m quc gia (091), m vng (022),
v s in thoi (6758080) (S dng lp StringTokenizer).

Trang 101

Bi ging Lp trnh Mng

Phn 3:

Lp trnh Socket

CHNG 1:

Lp trnh TCP Socket


Kt ni v gi d liu theo giao thc TCP c dng rt nhiu trong cc ng dng do tnh
an ton v bo m ca n.
Di y ta s xy dng mt m hnh ng dng khch/ch (client/server) s dng lp
Socket v ServerSocket kt ni v trao i thng tin gi my khch v my ch. My khch
(client) s gi mt chui n my ch (server), my ch s o ngc th t ca chui v gi
tr v cho my khch.
m hnh ny hot ng ta phi xy dng hai chng trnh: mt chng trnh l
EchoServer chy trn my ch dng lng nghe kt ni t pha my khch v x l yu cu
do my khch a n, mt chng trnh khc l EchoClient chy trn my khch c nhim v
nhn d liu nhp vo t bn phm sau gi n cho my ch x l. Khi my ch x l xong
chng trnh EchoClient s nhn v v a kt qu ra mn hnh.

I.Xy dng chng trnh EchoServer


EchoServer chy trn my ch v n nhn d liu do my khch gi n cng 8008. Khi
nhn c d liu my ch s to ra i tng EchoString thc hin vic o ngc chui
sau tr d liu v cho my khch.
V d 1.1: EchoServer.java
import java.io.*;
import java.net.*;
class EchoServer {
public static void main(String[] args) {
System.out.println("EchoServer started.");
try {
ServerSocket s = new ServerSocket(8008);
Socket incoming = s.accept();
System.out.println("Connected to: " + incoming.getInetAddress() +
" at port: " + incoming.getLocalPort());
BufferedReader in
= new BufferedReader(new InputStreamReader(incoming.getInputStream()));
PrintWriter out
Trang 102

Bi ging Lp trnh Mng


= new PrintWriter(new OutputStreamWriter(incoming.getOutputStream()));
out.println("Hello! This is Java EchoServer. Enter BYE to exit.");
out.flush();
for (;;) {
String str = in.readLine();
if (str == null) {
break;
} else {
out.println("Echo: " + str);
out.flush();
System.out.println("Received: " + str);
if (str.trim().equals("BYE"))
break;
}
}
incoming.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
System.out.println("EchoServer stopped.");
}
}
Bin dch chng trnh: javac EchoServer.java
ri chy trn my ch Server sau khi xy dng xong chng trnh EchoClient.

II.Xy dng chng trnh EchoClient


EchoClient chy trn my khch nhn d liu nhp vo t bn phm v gi n my ch
x l. Cng kt ni m chng trnh EchoClient s dng quy nh l 8008. My khch sau
s nhn d liu tr v t my ch v in ra mn hnh
V d 1.2: EchoClient.java
import java.io.*;
import java.net.*;
class EchoClient {
public static void main(String[] args) {
try {
String host;
if (args.length > 0 && args[0] != null) {
host = args[0];
} else {
host = "localhost";

Trang 103

Bi ging Lp trnh Mng


}
Socket t = new Socket(host, 8008);
BufferedReader in
= new BufferedReader(new InputStreamReader(t.getInputStream()));
PrintWriter out
= new PrintWriter(new OutputStreamWriter(t.getOutputStream()));
for (int i = 1; i <= 10; i++) {
System.out.println("Sending: line " + i);
out.println("line " + i);
out.flush();
}
out.println("BYE");
out.flush();
for (;;) {
String str = in.readLine();
if (str == null) {
break;
} else {
System.out.println(str);
}
}
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
Bin dch chng trnh: javac EchoClient.java
Hy chy chng trnh EchoServer trn mt my v EchoClient trn my khc nu h thng
c mng. Nu th nghim trn mt my n ta c th m phng m hnh khch/ch bng cch
m hai ca s dng lnh DOS. EchoClient s chy trn mt ca s cn EchoServer chy trn
ca s khc, quan st kt qu tr v thy c m hnh khch/ch lm vic (Ch l chy
EchoServer trc ri mi n EchoClient).

Trang 104

Bi ging Lp trnh Mng


CHNG 2:

Lp trnh UDP Socket


Trn y l cch kt ni v truyn d liu trn mng theo giao thc TCP. Nh cp,
mc d truyn d liu theo giao thc UDP khng chnh xc v m bo bng TCP nhng b li
n khng i hi nhiu ti nguyn ca h thng, qu trnh x l v tip nhn d liu cng n
gin hn nhiu. D liu gi i theo giao thc UDP thng c ng thnh mt gi (data
package) bao gm a ch IP ca my nhn, s cng cng vi d liu tht s. UDP c dng
trong cc ng dng mang tnh cht thng bo nh v gi c, thi tit
Di y ta s xy dng mt m hnh ng dng khch/ch (client/server) s dng lp
DatagramSocket v DatagramPackage kt ni v trao i thng tin gia my khch v my
ch bng giao thc UDP.

I.Xy dng chng trnh ExchangeRateServer


ExchangeRateServer chy trn my ch v n nhn nhng d liu do my khch gi n
cng 2345. Khi nhn c yu cu my ch s gi tr cc thng bo v t gi km theo ngy
gi mi nht v cho my khch. Ta s dng hm random ca lp Math ly v t gi mang
tnh cht ngu nhin ca 3 th trng l Tokyo, NewYork v HongKong. D liu c nhn v
gi theo tng gi da vo lp DatagramPackage
Chng trnh chy trn my ch cung cp t gi ca cc th trng chng khon.
V d 2.1: ExchangeRateServer.java
import java.io.*;
import java.net.*;
import java.util.*;
public class ExchangeRateServer {
public static void main (String args[]) {
try {
DatagramSocket socket = new DatagramSocket (2345);
String localAddress = InetAddress.getLocalHost().getHostName().trim();
int localPort = socket.getLocalPort();
System.out.println (localAddress+ ": " );
System.out.println ("Exchange Rate Server is listening on port " +localPort +".");
int bufferLength = 256;
byte outBuffer[];
byte inBuffer[] = new byte[bufferLength];

Trang 105

Bi ging Lp trnh Mng


DatagramPackage inDatagram = new DatagramPackage (inBuffer, inBuffer.length);
boolean finished = false;
do {
socket.received (inDatagram);
InetAddress destAddress = inDatagram.getAddress();
String destHost = destAddress.getHostName().trim();
int destPort = inDatagram.getPort();
System.out.println ("\n Received a datagram from "+destHost" at port "+destPort+".");
if (data.equalsIgnoreCase("quit")) finished = true;
String s = new Date().toString();
s=s+"\n NewYork :"+getNewYorkRate();
s=s+"\n Tokyo :"+getTokyoRate();
s=s+"\n HongKong :"+getHongKongRate();
outBuffer = s.getBytes();
outDatagram = new DatagramPackage (outBuffer, outBuffer.length, destAddress, destPort);
socket.send (outDatagram);
System.out.println (Sent +s+ to +destHost+ at port +destPort+.);
} while (!finished);
}catch (IOException ex){
System.out.println (IOException occurred.);
}
}
private static String getNewYorkRate () {
return Double.toString (Math.random() * 135);
}
private static String getTokyoRate () {
return Double.toString (Math.random() * 135);
}
private static String getHongKongRate () {
return Double.toString (Math.random() * 135);
}
}
Bin dch chng trnh: javac ExchangeRateServer.java
Chng trnh ExchangeRateServer s c s dng khi ta thit k xong chng trnh
ExchangeRateTable dng cho my khch

II.Xy dng chng trnh ExchangeRateTable


ExchangeRateTable chy trn my khch, n chu trch nhim mi giy gi yu cu n
my ch cp nht thng tin v t gi ca th trng chng khon. t c mc tiu ny
chng trnh ca ta phi xy dng 3 lp:
Trang 106

Bi ging Lp trnh Mng

Lp ExchangeRateTable

L lp chng trnh dng to mt ca s trnh by t gi ca cc th trng chng


khon trong mt vng cn bn TextArea.

Lp ExchangeThread

y l mt phn tuyn chy song song vi chng trnh chu trch nhim mi giy s
gi yu cu n my ch v ly s liu v cp nht.

Lp ExchangeData

L lp thc hin kt ni vi my ch, lp ny thc s ci t phng thc getRates


dng gi yu cu v nhn d liu tr v t my ch.
V d 2.2: ExchangeRateTable.java
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class ExchangeRateTable {
public static void main (String args[]) {
Frame myWindow = new Frame("Stock Exchange Application");
TextArea rateTable = new TextArea("Wait ...");
Label rateLabel = new Label("Exchange Rate Table");
rateTable.setBounds(new Rectangle(16,33,240,100));
rateLabel.setBounds(new Rectangle(16,6,158,21));
myWindow.setLayout(null);
myWindow.add(rateTable, null);
myWindow.add(rateLabel,null);
myWindow.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent event){
System.exit(0);
}
});
myWindow.setSize(new Dimension(300,150));
myWindow.show();
ExchangeThread exRate = new ExchangeThread(rateTable);
exRate.start();
}
}

Trang 107

Bi ging Lp trnh Mng


class ExchangeThread extends Thread {
TextArea rateTable;
ExchangeData rate = new ExchangeData();
public ExchangeThread(TextArea rateTable){
this.rateTable = rateTable;
}
public void run(){
while (true)
{
String data = rate.getRates();
rateTable.setText(data);
delay(1000);
}
}
private void delay(int miliSeconds){
try
{
this.sleep(miliSeconds);
}
catch (Exception e)
{
System.out.println("Sleep error!");
}
}
}
class ExchangeData
{
DatagramSocket socket;
InetAddress serverAddress;
String localHost;
int bufferLength = 256;
byte inBuffer[] = new byte[bufferLength];
byte outBuffer[];
DatagramPacket outDatagram;
DatagramPacket inDatagram;
public ExchangeData(){
try
{
socket = new DatagramSocket();
inDatagram = new DatagramPacket(inBuffer, inBuffer.length);
Trang 108

Bi ging Lp trnh Mng


serverAddress = InetAddress.getByName("my.testing.server");
}
catch (Exception e)
{
System.out.println("Connect error!");
}
}
public String getRates(){
String data="";
try
{
outBuffer = new byte[bufferLength];
outBuffer = "rate".getBytes();
outDatagram = new DatagramPacket(outBuffer, outBuffer.length, serverAddress, 2345);
socket.send(outDatagram);
socket.received(inDatagram);
InetAddress destAddress = inDatagram.getAddress();
String destHost = destAddress.getHostName().trim();
int destPort = inDatagram.getPort();
data = new String(inDatagram.getData());
data = data.trim();
}
catch (IOException ex)
{
System.out.println("IOException occurred.");
}
return data;
}
}
Bin dch chng trnh: javac ExchangeRateTable.java
Chy chng trnh trn tng t khi khi chy 2 chng trnh EchoServer v EchoClient.

Phn 4:

Lp trnh trn Internet

CHNG 1:

Trang 109

Bi ging Lp trnh Mng

JSP v cc khi nim m u


I.Cc c ch hot ng ca trang JSP
cc chng trc chng ta hc v Servlet. Servlet l mt cch thay th cho cc
chng trnh CGI c in bng ngn ng lp trnh v cng ngh Java. Tuy nhin, servlet mt
mt no i hi bn phi c kin thc lp trnh Java, s dng thnh tho trnh bin dch
javac bin dch servlet ra tp tin .class. ng k servlet vi trnh ch Web trc khi s dng.
JSP (Java Server Page) l mt cch n gin hn na ngi dng (nht l lp trnh
vin Java khng chuyn) tip cn c hng lp trnh Web pha my ch hiu qu v nhanh
hn. Nu bn cha bit tng tn Java hay servlet bn vn c th thit k c ng dng Web
p ng nhu cu ngi dng pha trnh khch thng qua cc trang JSP.
Servlet a m HTML vo lnh Java trong khi ngc li JSP a lnh Java vo cc m
(hay th) HTML. Tng t cc trang SHTML cha th <servlet> c trnh ch thng dch
trc khi tr kt xut v cho my khch. Cc trang JSP cha cc th c bit quy nh gn
ging th ca ngn ng HTML. Khi bn yu cu mt trang JSP , trnh ch s c trang JSP t
a cng, b din dch JSP (JSP Page Compiler) s din dch m lnh Java cha trong trang JSP
thnh mt servlet. Sau trnh ch Java Web Server s triu gi servlet tr kt xut thun
HTML v cho trnh khch. C ch hot ng ca trang JSP c minh ha nh hnh di y


Web
Browser

Trnh din
dch JSP

Yu cu

Servlet tm
Kt xut

Trang
JSP

HTTP Service

JAVA WEB SERVER

C ch triu gi trang JSP

II.Xy dng trang JSP


Di y l minh ha cch vit m lnh Java trong trang JSP
V d 1-1: FirstPage.jsp
Trang 110

Bi ging Lp trnh Mng


<HTML>
<H1>
Hello JSP!
</H1> <P>
<%
out.println("Bay gio la: "+new java.util.Date()+"<br>");
for(int i=6;i>0;i--){
out.println("<FONT Size="+i+">Hello</FONT>");
}
%>
</HTML>
Chng ta c th s dng trnh son tho Notepad ca Windows, hoc EditPlus, UltraEdit
to ra file FirstPage.jsp trn.
chy c file FirstPage.jsp chng ta cn n mt trnh ch Web server hiu v din
dch c JSP/Servlet. Hin c rt nhiu trnh ch c kh nng ny nh: TomCat, Java Web
Server, Jrun, WebLogic Tuy nhin cch ci t v cu hnh mi trnh ch rt khc bit,
y chng ta s dng trnh ch Jrun 3.1. y l trnh ch Web server h tr rt nhiu cng ngh
Java, c cu hnh n gin, chy c hu ht trn cc h iu hnh Unix, Linux, Windows.
Tc thng dch trang JSP ca trnh ch JSP kh nhanh v hiu qu, giao din p. Vi Jrun,
gi th mc ci t trnh ch l [JRUN_HOME] (thng l th mc C:/Program
Files/Allaire/JRun),

chp

file

FirstPage.jsp

vo

th

mc

[JRUN_HOME]/servers/default/default-app. Sau khi khi to dch v Web ca trnh ch Jrun


hot ng trn cng 8100 (khi to trong qu trnh ci t JRun), trang FirstPage.jsp c triu
gi

trnh

duyt

pha

my

khch

theo

ch

URL

nh

sau:

http://localhost:8100/FirstPage.jsp, kt qu s c hin th trn trnh duyt.

Trang 111

Bi ging Lp trnh Mng


CHNG 2:

Cc c php c bn ca JSP
I.Cc i tng mc nh ca JSP
Trnh din dch JSp cho php bn s dng mt s i tng khai bo trc. iu ny s
gip bn vit m lnh trong trang JSP nhanh hn servlet.
i tng out: xut pht t lp PrintWriter. Bn c th s dng i tng ny
nh dng kt xut gi v my khch. V d:
<% out.println(Reusult +7*3); %>
i tng request: xut pht t lp HttpServletRequest, i tng ny gip bn ly
v cc tham s hay d liu do trnh khch chuyn ln.
i tng response: tng t i tng out, i tng response dng a kt
xut tr v trnh khch. Tuy nhin i tng out c dng thng xuyn hn
i tng session: xut pht t lp HttpSession, s dng i tng session theo
di kt ni v lu vt mt phin lm vic gia trnh khch v trnh ch.

II.Cc th lnh JSP


II.1.Th bc m <% %>
u im ca JSP l kh nng nhng m Java gia cc th nh dng HTML, tng t nh
th HTML th lnh JSP cng bao gm th m v th ng, mi th c cc thuc tnh quy nh
cch s dng th c trng. Trong v d 1-1 trn m Java c t trong cp du <% %>.
Mt khc bn c th s dng cc lnh iu khin if..else ca m Java quy nh kt xut
HTML thch hp theo cch sau:
V d 2-1:
<HTML>
<%
java.util.Calendar curTime = new java.util.GregorianCalendar();
if(curTime.get(curTime.HOUR_OF_DAY)<12){
%>
<b> Morning </b>
<%}
Trang 112

Bi ging Lp trnh Mng


else{
%>
<b> Afternoon </b>
<% }
else {
%>
<b> Evening </b>
<% } %>
</HTML>

II.2.Th hin th kt xut <%= %>


Thay v s dng c php <% %> din t mt khi gm nhiu lnh bn c th s dng
c php <%= %> ch hin th kt xut ca mt gi tr bin hay hm no .
V d 2-2:
<html>
Welcome<%=username%>
You have <%=getNewMail()%> mail
Go to <a href=getMail.jsp> Inbox </a>
</html>
Trong v d trn username l bin cha tn ngi dng ng nhp (login) vo Website
ca chng ta, getNewMail() l mt hm tr v s int cho bit s mail hin c trong hp th ca
ngi dng.
Ch : khng c du (;) cui cc bin hoc biu thc gi hm trong c php <%= %>.
Bi v ni dung ca biu thc nm trong <%= %> s c chuyn thnh lnh kt xut
out.println() tng ng nh sau:
out.println("<html>");
out.println("Welcome "+username);
out.println("You have "+getNewMail()+"mail.");
out.println("Go to <a href=getMail.jsp> Inbox </a>");
out.println("</html>");

Trang 113

Bi ging Lp trnh Mng


C php ny c thng xuyn s dng i vi cc lp trnh vin JSP bi chng ngn gn v
kt hp vi cc th HTML hiu qu hn cc lnh kt xut out.println() trong c php <% %>.

II.3.Th ch dn bin dch trang <%@ page %>


Th <%@page %> ch dn mt s tnh cht bin dch p dng cho ton trang jsp. Bn c
th s dng th ny khai bo cc th vin import ca java, ch nh ty chn trang jsp c cn
gi trn cache b nh ca trnh ch tng tc hay khng v d khai bo s dng cc th
vin java
V d 2-3:
<HTML>
<%@page import="java.sql.*"%>
<%
Connection con;
Statement stmt;
ResultSet rs;
try{
...
%>
</HTML>
Hay v d di y s ch th chuyn n trang error.html nu trang jsp hin ti gp li
trong qu trnh thc thi.
<%@page errorPage="error.html"%>
Nu mun trang jsp tt iu khin session bn c th thc hin ch dn
<%@page session="false"%>

II.4.Chn ch thch vo m trang JSP


Cng nh Java, JSP cho php bn dng c php // ch thch mt dng m lnh trong
khi c php /* */ p dng cho nhiu dng. Cc dng ch thch s c b qua khi trnh ch din
dch trang JSP.
V d 2-4:
<HTML>

Trang 114

Bi ging Lp trnh Mng


<%
// ly bin d liu mang tn user t i tng session
String username=session.getAttribute("user");
%>
Welcome <%= username%>
<%
/*
To i tng Date
Hin th i tng Date cho bit ngy gi cp nht ca trang Web
*/
java.util.Date date= new java.util.Date();
%>
This page last update on <%=date%>
</HTML>
JSP cn cung cp thm cho bn c php ch thch <%-- --%>. Tt c cc khi lnh Java
v HTML nm gia hai du ch thch ny s c trnh bin dch trang b qua khng quan tm
n. V d:
<%-out.println(You will never see this line);
--%>
Du ch thch ny rt hiu qu. N gip bn tm thi c lp hoc che b tc dng ca mt
on m Java no ang b li trong trang JSP. Chng ta ch tm thi lm mt tc dng ca
chng ch khng cn xa b. V d:
<HTML>
<%-<%
String username=session.getAttribute("user");
%>
Welcome <%= username%>
--%>

Trang 115

Bi ging Lp trnh Mng


<%
java.util.Date date= new java.util.Date();
%>
This page last update on <%=date%>
</HTML>

II.5.Khai bo phng thc v bin hng <%! %>


C php ny cho php bn nh ngha mt hoc nhiu phng thc v bin. Phng thc
v bin sau c th c triu gi bt k ni u trong trang JSP.
V d 2-5: nethodCall.jsp
<HTML>
This is line 1 <br>
<% out.println("This is line 2 <br>");
<%= getNextLine("This is line 3 <br>")%>
<%! public String getNextLine(String line)
{
line="Method called <br>"+line;
return line;
}
%>
%>
</HTML>

III.Truy xut c s d liu trong trang JSP


Thc s trang JSP khng khc g servlet. Bn c th d dng dng trnh JDBC truy
xut c s d liu ca cc h nh Access, SQL server ... Di y l v d truy vn bng d
liu Employee trong c s d liu Access MyData.mdb (thng qua ODBC)
V d 3-1: EmployeeList.jsp
<HTML>
<H1> Employee List Query</H1><br>
<%@ page import="java.sql.*"%>
Trang 116

Bi ging Lp trnh Mng


<%!
private ResultSet query(String driverName, String connectionURL, String query)
{
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(driverName).newInstance();
con = DriverManager.getConnection(connectionURL);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
return rs;
}
catch(Exception es){
out.println("Connection error!");
}
return rs;
}
%>
<%
ResultSet rs = query("sun.jdbc.odbc.JdbcOdbcDriver",
"jdbc:odbc:MyAccessDataSource",
"SELECT Empno, Name, Position FROM Employee");
if (rs==null){
out.println("<center><table border>");
out.println("<tr>");
for (int i=0; i<columnCount;i++){
out.println("<th>" + rmsd.getColumnLabel(i+1) + "</th>");
}
out.println("</tr>");
Trang 117

Bi ging Lp trnh Mng


while (rs.next()){
out.println("<tr>");
for (int i=0; i<columnCount;i++){
out.println("<td>" + rs.getString(i+1) + "</td>");
}
out.println("</table></center>");
}
%>
</HTML>
Chy th chng trnh, g a ch URL: http://localhost:8100/EmployeeList.jsp

Trang 118

Bi ging Lp trnh Mng

TI LIU THAM KHO


[1]

Nguyn Phng Lan, Hong c Hi - 2001


Java lp trnh mng Nh xut bn Gio dc

[2]

Nguyn Phng Lan, Hong c Hi - 2003


Lp trnh ng dng Web vi JSP/Servlet Nh xut bn Lao ng X hi

[3]

Nguyn Phng Lan - 2003


JAVA (tp1, 2) Nh xut bn Lao ng X hi

[4]

Hong Ngc Giao - 1998


Lp trnh Java th no (tp 1, 2) Nh xut bn Thng k

[5]

PTS. L Khc Bnh, Bi Xun Toi - 1995


Mng my tnh cho mi ngi - Nh xut bn Vn ha

[6]

www.java.sun.com

[7]

www.javavietnam.org

Trang 119

You might also like