You are on page 1of 239

Chng 1

Gii thiu ngn ng lp trnh Java

Gii thiu
S pht trin ca Java Hng ti ngi dng Ging vi C / C++

Cc c trng ca Java

n gin Hng i tng c lp phn cng Mnh Bo mt Phn tn a lung ng

Cc chng trnh dch truyn thng

Chng trnh dch Java

Cc loi chng trnh Java


Applets ng dng c lp (console Application) ng dng giao din (GUI Application) Servlet ng dng c s d liu

My o Java
L mt phn mm da trn c s my tnh o L tp hp cc lnh logic xc nh hot ng ca my tnh c xem nh l mt h iu hnh thu nh N thit lp lp tru tng cho: Phn cng bn di H iu hnh M bin dch

Qu trnh dch chng trnh Java


Trnh bin dch chuyn m ngun thnh tp cc lnh khng ph thuc vo phn cng c th Trnh thng dch trn mi my chuyn tp lnh ny thnh chng trnh thc thi My o to ra mt mi trng thc thi cc lnh bng cch:
Np cc file .class Qun l b nh Dn rc

Trnh dch Java Java Development Kit


Java 1.0 - S dng ln u vo nm 1995 Java 1.1 a ra nm 1997 Java 2 Phin bn mi nht

B cng c JDK
Trnh bin dch, 'javac'

javac [options] sourcecodename.java

Trnh thng dch, 'java'

java [options] classname

Trnh dch ngc, 'javap'

javap [options] classname

Cng c sinh ti liu, 'javadoc'

javadoc [options] sourcecodename.java

Chng trnh tm li - Debug, 'jdb


jdb [options] sourcecodename.java OR jdb -host -password [options] sourcecodename.java

Chng trnh xem Applet , 'appletviewer


appletviewer [options] sourcecodename.java / url

Cc gi chun ca Java
java.lang java.applet java.awt java.io java.util java.net java.awt.event java.rmi java.security java.sql

Cc c trng mI ca Java2
Swing Ko v th Java 2D API m thanh RMI

Chng 2
Cc phn t c bn ngn ng Java

Cu trc mt chng trnh Java


Xc lp thng tin mi trng Khai bo lp i tng (Class) Cc thnh phn (Tokens):
nh danh T kha / t d phng K t phn cch Nguyn dng (Literals) Ton t

V d mt chng trnh Java mu


// This is a simple program called Ex1.java class Ex1 { public static void main(String args[]) { System.out.println(My first program in Java); } }

Bin dch chng trnh java


..\jdk\bin>javac Ex1.java ..\jdk\bin>java Ex1 Kt qu:
My first program in Java

Truyn i s trong dng lnh


class Pass { public static void main(String parameters[]) { System.out.println("This is what the main method received"); System.out.println(parameters[0]); System.out.println(parameters[1]); System.out.println(parameters[2]); } }

Truyn i s trong dng lnh (Tip theo)

Cc phn t c bn cangn ng Java


Lp v phng thc (Classes & Methods) Kiu d liu Bin s Ton t Cu trc iu khin

Lp trong Java
C php khai bo lp (Class)
class Classname { var_datatype variablename; : met_datatype methodname(parameter_list) : }

L p mu

Cc lp lng nhau (Nested Classes)


Vic nh ngha mt lp bn trong mt lp khc c gi l xp lng (Nesting) Cc kiu xp lng: Tnh (Static) ng (Non-static)

Kiu d liu
Kiu d liu c s (Primitive Data Types) Kiu d liu tham chiu (Reference data types)

Kiu d liu c s
byte char boolean short int long float double

Kiu d liu tham chiu


Mng (Array) Lp (Class) Interface

p kiu (Type Casting)


Kiu d liu ny c chuyn i sang mt kiu d liu khc V d
float c = 34.89675f; int b = (int)c + 10;

Bin s
Khai bo bin s gm 3 thnh phn:
Kiu d liu ca bin s Tn bin Gi tr ban u ca bin (khng bt buc)

C php
datatype identifier [=value][, identifier[=value]...];

Nhng t kha ca Java

Khai bo mng
Ba cch khai bo mng:
datatype identifier [ ]; datatype identifier [ ] = new datatype[size]; datatype identifier [ ]= {value1,value2,.valueN};

Phng thc (Methods in Classes)


Phng thc c nh ngha nh l mt hnh ng hoc mt tc v tht s ca i tng C php
access_specifier modifier datatype method_name(parameter_list) { //body of method }

V d v s dng phng thc


class Temp { static int x = 10; // variable public static void show( ) { // method System.out.println(x); } public static void main(String args[ ]) { Temp t = new Temp( ); // object 1 t.show( ); // method call Temp t1 = new Temp( ); // object 2 t1.x = 20; t1.show( ); } }

Access specifiers
public private protected

Method Modifiers
static abstract final native synchronized volatile

Nhng phng thc c np chng :


(Methods Overloading)

Nhng phng thc c np chng :


Cng trong mt lp C cng tn Khc nhau v danh sch tham s

Nhng phng thc c np chng l mt hnh thc a hnh (polymorphism) trong qu trnh bin dch (compile time)

Ghi phng thc (Methods Overriding)


Nhng phng thc c ghi :

C mt trong lp cha (superclass) cng nh lp k tha (subclass) c nh ngha li trong lp k tha (subclass)

Nhng phng thc c ghi l mt hnh thc a hnh (polymorphism) trong qu trnh thc thi (Runtime)

Phng thc khi to (Class Constructors)


L mt phng thc c bit dng khi to gi tr cho cc bin thnh vin ca lp i tng C cng tn vi tn lp v khng c gi tr tr v c gi khi i tng c to ra C 2 loi:
Tng minh (Explicit constructors) Ngm nh (Implicit constructors)

Phng thc khi to ca lp dn xut (Derived class constructors)

C cng tn vi lp dn xut (subclass) Mnh gi constructor ca lp cha (superclass) phi l mnh u tin trong constructor ca lp dn xut (subclass)

Cc ton t
Cc loi ton t:
Ton t s hc (Arithmetic operators) Ton t dng Bit (Bitwise operators) Ton t so snh (Relational operators) Ton t logic (Logical operators) Ton t iu kin (Conditional operator) Ton t gn (Assignment operator)

Ton t s hc Arithmetic Operators


+ * / % ++ -Addition (Php cng) Subtraction (Php tr) Multiplication (Php nhn) Division (Php chia) Modulus (Ly s d) Increment (Tng dn) Decrement (Gim dn)

+= -= *= /= %=

Php cng v gn Php tr v gn Php nhn v gn Php chia v gn Php ly s d v gn

Ton t Bit (Bitwise Operators)


~ & | ^ >> << Ph nh (NOT) V (AND) Hoc (OR) Exclusive OR Dch sang phi (Shift right) Dch sang tri (Shift left)

Ton t so snh (Relational Operators)


== != < > <= >= So snh bng So snh khc Nh hn Ln hn Nh hn hoc bng Ln hn hoc bng

Ton t Logic (Logical Operators )


&& || ! Logical AND Logical OR Logical unary NOT

Ton t iu kin (Conditional Operator)


C php
Biu thc 1 ? Biu thc 2 : Biu thc 3; Biu thc 1 iu kin kiu Boolean tr v gi tr True hoc False Biu thc 2 Tr v gi tr nu kt qu ca mnh 1 l True Biu thc 3

Ton t gn (Assignment Operator)


= Assignment (Php gn) Gi tr c th c gn cho nhiu bin s V d
a = b = c = d = 90;

Th t u tin ca cc ton t Th t 1. 2. 3. 4. 5. 5.

Ton t trong ngoc tnh trc Cc ton t n nh +,-,++,-Cc ton t s hc v cc ton t dch nh *,/,+,-,<<,>> Cc ton t quan h nh >,<,>=,<=,= =,!= Cc ton t logic v Bit nh &&,II,&,I,^ Cc ton t gn nh =,*=,/=,+=,-=

Th t ca cc ton t c th c thay i bng cch s dng cc du ngoc n trong mnh

Cc k t nh dng xut d liu (Escape Sequences)


Escape M t Sequence \n Xung dng mi \r \t \\ \ \ Chuyn con tr n u dng hin hnh Chuyn con tr n v tr dng Tab k tip (k t Tab) In du \ In du nhy n () In du nhy kp ()

Cc lnh iu khin
iu khin r nhnh:
Mnh if-else Mnh switch-case

Vng lp (Loops):
Vng lp while Vng lp do-while Vng lp for

Lnh if-else
C php
if (condition) { action1 statements; } else { action2 statements; }

Lnh switch-case
C php
switch (expression) { case 'value1': action1 statement(s); break; case 'value2': action2 statement(s); break; : : case 'valueN': actionN statement(s); break;

Lnh lp while

C php
while(condition) { action statements; : : }

Lnh lp do-while
C php
do { action statements; : : } while(condition);

Vng lp for
C php
for(initialization statements; increment statements) { action statements; : : } condition;

Chng 3

Gi & Interface (Packages & Interfaces)

Gii thiu
Nhng thnh phn c bn ca 1 chng trnh Java:
Gi (Packages) Giao din (Interfaces)

Nhng phn ca mt chng trnh Java:


Lnh khai bo gi(package ) Lnh ch nh gi c dng (Lnh import) Khai bo lp public (mt file java ch cha 1 lp public class) Cc lp khc (classes private to the package)

Tp tin ngun Java c th cha tt c hoc mt vi trong s cc phn trn.

Interfaces
Chng trnh Java ch c th k tha t 1 lp duy nht trong cng mt thi im, nhng c th dn xut cng lc nhiu Interfaces Khng c php c nhng phng thc c th (concrete methods) interface cn phi c hin thc (implements).

Cc bc to interface
nh ngha Interface Bin dch Interface Hin thc Interface Tnh cht ca interface:

Tt c phng thc trong interface phi l public. Cc phng thc phi c nh ngha trong lp dn xut giao din .

S dng Interface
Khng th dn xut t lp khc, nhng c th dn xut t nhng interface khc Nu mt lp dn xut t mt interface m interface dn xut t cc interface khc th lp phi nh ngha tt c cc phng thc c trong cc interface Khi nh ngha mt interface mi th mt kiu d liu tham chiu cng c to ra.

Gi (Packages)
Tng t nhth mc lu tr nhng lp, interface v cc gi con khc. l nhng thnh vin ca gi

Nhng u im khi dng gi (Package):

Cho php t chc cc lp vo nhng n v nh hn Gip trnh c tnh trng trng lp khi t tn. Cho php bo v cc lp i tng Tn gi (Package) c th c dng nhn dng chc nng ca cc lp.

Nhng lu khi to gi:


M ngun phi bt u bng lnh package M ngun phi nm trong cng th mc mang tn
ca gi

Tn gi nn bt u bng k t thng (lower case)


phn bit gia lp i tng v gi

Nhng lnh khc phi vit pha di dng khai bo gi l mnh import, k n l cc mnh nh
ngha lp i tng

Nhng lp i tng trong gi cn phi c bin


dch chng trnh Java c th s dng nhng gi ny, ta phi import gi vo trong m ngun

Import gi (Importing packages):


Xc nh tp tin cn c import trong gi Hoc c th import ton b gi

Cc bc to ra gi (Package)
Khai bo gi Import nhng gi chun cn thit Khai bo v nh ngha cc lp i tng c trong gi Lu cc nh ngha trn thnh tp tin .java, v bin dch nhng lp i tng c nh ngha trong gi.

S dng nhng gi do ngi dng nh ngha (user-defined packages)


M ngun ca nhng chng trnh ny phi cng th mc ca gi do ngi dng nh ngha. nhng chng trnh Java khc s dng nhng gi ny, import gi vo trong m ngun Import nhng lp i tng cn dng Import ton b gi To tham chiu n nhng thnh vin ca gi

Xc lp CLASSPATH
L danh sch cc th mc, gip cho vic tm kim cc tp tin lp i tng tng ng Nn xc lp CLASSPATH trong lc thc thi (runtime), v nh vy n s xc lp ng dn cho qu trnh thc thi hin hnh

Gi v iu khin truy xut (Packages & Access Control)

Gi java.lang
Mc nh th bt c chng trnh Java no cng import gi java.lang Nhng lp Wrapper (bao bc) cho cc kiu d liu nguyn thy:

Lp String
Phng thc khi to (Constructor):

String str1 = new String(); String str2 = new String(Hello World); char ch[ ] = {A,B,C,D,E}; String str3 = new String(ch); String str4 = new String(ch,0,2);

String Pool
String Pool i din cho tt c cc k t c to ra trong chng trnh Khi nim String Pool

Nhng phng thc ca lp String


charAt( ) startsWith() endsWith( ) copyValueOf( ) toCharArray( ) indexOf( ) toUpperCase( ) toLowerCase( ) trim( ) equals( )

Lp StringBuffer
Cung cp nhng phng thc khc nhau thao tc trn i tng string (chui k t) Nhng i tng ca lp ny kh linh hot Cung cp nhng phng thc khi to (constructor) c n p chng (overloaded) Nhng phng thc ca lp StringBuffer:
append( ) insert( ) charAt( ) setCharAt( ) setLength( ) getChars( )

Lp java.lang.Math
abs() ceil() floor() max() min() round() random() sqrt() sin() cos() tan()

Lp Runtime
ng gi (Encapsulates) mi trng thc thi Dng qun l b nh, v thi hnh nhng tin trnh cng thm Phng thc:
exit(int) freeMemory( ) getRuntime( ) gc( ) totalMemory( ) exec(String)

Lp System
Cung cp nhng h tng chun nh nhp (Input), xut (Output) v cc lung li(Error Streams) Cung cp kh nng truy xut n nhng thuc tnh ca h thng thc thi Java, v nhng thuc tnh mi trng nh phin bn, ng dn, nh cung cp Phng thc: exit(int) gc() getProperties() setProperties() currentTimeMillis()

Lp Class
Th hin (Instance) ca lp ny che giu tnh trng thc thi ca i tng trong mt ng dng Java i tng hoc th hin ca lp ny c th to ra bng 1 trong 3 cch sau:
S dng phng thc getClass( ) ca i tng S dng phng thc tnh forName( ) ca lp to ra mt th hin ca lp trong lc t tn cho lp S dng i tng ClassLoader np mt lp mi

Lp Object
L lp cha (superclass) ca tt c cc lp Phng thc:

equals(Object) finalize() notify() notifyAll() toString() wait()

Gi java.util
Cung cp phn ln nhng lp Java hu dng v thng xuyn cn n trong hu ht cc ng dng Gii thiu nhng lp tru tng sau:

Hashtable Random Vector StringTokenizer

Lp Hashtable
M rng lp tru tng Dictionary Dng ni kt nhng kha vo nhng gi tr c th Phng thc khi to Hashtable:

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

Nhng phng thc ca lp Hashtable


clear() done() contains(Object) containsKey(Obj ect) elements() get(Object key) isEmpty() keys() put(Object, Object) rehash() remove(Object key) size() toString()

Lp Random
To ra nhng s ngu nhin theo thut ton
pseudo Nhng phng thc nhn gi tr ngu nhin:
nextDouble( ) nextFloat( ) nextGaussian( ) nextInt( ) nextLong( )

Phng thc khi to (Constructors):


random() random(long)

Nhng phng thc ca lp Random


nextDouble() nextFloat() nextGaussian() nextInt() nextLong() setSeed(long)

Lp Vector
Cung cp kh nng co gin cho mng khi thm phn t vo mng Lu tr nhng thnh phn ca kiu Object Mt Vector ring r c th lu tr nhng phn t khc nhau, l nhng instance ca nhng lp khc nhau Phng thc khi to (Constructors):
Vector(int) Vector(int, int) Vector()

Nhng phng thc ca lp Vector isEmpty( )


addElement(Object) capacity( ) clone( ) contains(Object) copyInto(Object [ ]) elementAt(int) elements( ) ensureCapacity(int) firstElement( ) indexOf(Object) indexOf(Object, int) insertElementAt(Objec lastElement( ) lastIndexOf(Object) lastIndexOf(Object, int) removeAllElements( ) removeElement(Obj ect) removeElementAt(in t) setElementAt(Object , int)

Lp StringTokenizer
C th c dng tch mt chui thnh nhng thnh phn cu thnh ca n (constituent tokens) K t phn cch c th c ch nh khi mt i tng StringTokenizer c khi to Phng thc khi to (Constructors):
StringTokenizer(String) StringTokenizer(String, String) StringTokenizer(String, String, Boolean)

Lp StringTokenizer s dng giao din lit

Nhng phng thc ca lp StringTokenizer


countTokens( ) hasMoreElements( ) hasMoreTokens( ) nextElement( ) nextToken( ) nextToken(String)

Chng 4

X l bit l

Gii thiu v bit l


L mt kiu li c bit N xy ra trong thi gian thc thi on lnh Thng thng cc iu kin thc thi chng trnh gy ra bit l Nu cc iu kin ny khng c quan tm, th vic thc thi c th kt thc t ngt

Mc ch ca vic x l bit l
Gim thiu vic kt thc bt thng ca h thng v ca chng trnh. V d, thao tc xut/nhp trong mt tp tin, nu vic chuyn i kiu d liu khng thc hin ng, mt bit l s xy ra v chng trnh b hy m khng ng tp tin. Lc tp tin s b h hi v cc ngun ti nguyn c cp pht cho tp tin khng c thu hi li cho h thng.

X l bit l
Khi mt bit l xy ra, i tng tng ng vi bit l s c to ra. i tng ny sau c truyn ti phng thc ni m bit l xy ra. i tng ny chc cc thng tin chi tit v bit l. Thng tin ny c th nhn c v x l. Lp throwable m Java cung cp l lp trn nht ca lp bit l.

M hnh x l bit l
M hnh c bit n l m hnh catch and throw Khi mt li xy ra, bit l s uc chn v c vo mt khi. T kha x l bit l:

try catch throw throws finally

Cu trc ca m hnh x l bit l


C php
try { . } catch(Exception e1) { . } catch(Exception e2) { . } catch(Exception eN) { . } finally { . }

M hnh Catch and Throw nng cao


Ngi lp trnh ch quan tm ti cc li khi cn thit. Mt thng bo li c th c cung cp trong exception-handler.

Khi try v catch


c s dng thc hin trong m hnh catch and throw ca x l bit l. Khi lnh try gm tp hp cc lnh thc thi Mt phng thc m c th bt bit l, cng bao gm khi lnh try. Mt hoc nhiu khi lnh catch c th tip theo sau mt khi lnh try Khi lnh catch ny bt bit l trong khi lnh try.

Khi lnh try v catch Blocks (tt)


bt bt k loi bit l no, ta phi ch ra kiu bit l l Exception catch(Exception e) Khi bit l b bt khng bit thuc kiu no, chng ta c th s dng lp Exception bt bit l . Li s c truyn thng qua khi lnh try catch cho ti khi chng bt gp mt catch tham chiu ti n, hoc chng trnh s b kt thc

Khi lnh cha nhiu Catch


Cc khi cha nhiu catch() x l cc kiu bit l khc nhau mt cch c lp. V d
try { doFileProcessing(); displayResults(); } catch(LookupException e) { handleLookupException(e); } catch(Exception e) { System.err.println(Error:+e.printStackTrace

Khi lnh cha nhiu Catch (tt)


Khi s dng cc try lng nhau, khi try bn trong c thi hnh u tin Bt k bit l no b chn trong khi lnh try s b bt gi trong khi lnh catch tip ngay sau. Nu khi lnh catch thch hp khng c tm thy, th cc khi catch ca khi try bn ngoi s c xem xt Ngc li, Java Runtime Environment s x l bit l.

Khi finally
Thc hin tt c cc vic thu dn khi bit l xy ra C th s dng kt hp vi khi try Cha cc cu lnh thu hi ti nguyn v cho h thng hay lnh in ra cc cu thng bo:

ng tp tin ng li b kt qu (c s dng trong chng trnh c s d liu) ng li cc kt ni c to trong c s d liu.

Khi finally (tt)


V d
try { doSomethingThatMightThrowAnException( ); } finally { cleanup( ); }

Khi finally (tt)


L ty chn khng bt buc c t sau khi catch Khi finally bo m lc no cng c thc hin bt chp bit l c xy ra hay khng.

Cc bit l c nh ngha vi lnh throw v throws


Cc bit l th c chn vi s tr gip ca t kha throw T kha throw ch ra mt bit l va xy ra. Ton hng ca throw l mt i tng ca mt lp, m lp ny c dn xut t lp Throwable V d ca lnh throw
try{ if (flag < 0) { throw new MyException( ) ; defined }

// user-

Cc bit l c nh ngha vi lnh throw v throws(tt)


Mt phng thc n c th chn nhiu hn mt bit l V d t kha throw x l nhiu bit l
public class Example { public void exceptionExample( ) throws ExException, LookupException { try { // statements } catch(ExException exmp) { . } catch(LookupException lkpex) { . } } }

Cc bit l c nh ngha vi lnh throw v throws(tt)


Lp Exception thc thi giao din Throwable v cung cp cc tnh nng hu dng phn phi cho cc bit l. Mt lp con ca lp Exception l mt bit l mi c th bt gi c lp cc loi Throwable khc.

Danh sch cc bit l


RuntimeException ArithmeticException IllegalAccessException IllegalArgumentException ArrayIndexOutOfBoundsException NullPointerException SecurityException ClassNotFoundException

Danh sch cc bit l (tt)


NumberFormatException AWTException IOException FileNotFoundException EOFException NoSuchMethodException InterruptedException

Chng V LP TRNH GIAO DIN VI AWT

GII THIU V AWT

AWT vit tt ca Abstract Windowing

Toolkit
AWT l tp hp cc lp Java cho php chng ta to mt GUI Cung cp cc mc khc nhau to hot ng v hiu ng GUI nh
Containers Components Layout managers Graphics v drawing capabilities Fonts Events

AWT bao gm cc lp, interfaces v cc gi khc

Components
Tt c cc thnh phn cu to nn chng trnh GUI c gi l component. V d Containers, textfields, labels, checkboxes, textareas scrollbars, scrollpanes, dialog

Containers
L thnh phn m c th cha cc thnh phn khc. c th v v t mu. C cc frames, panes,latches, hooks Java.awt cha mt lp c tn l Container. Lp ny dn xut trc tip v khng trc tip theo 2 cch l:

Frames Panels

Frames
L cc ca s L lp con ca Windows c hin th trong mt ca s v c ng vin

Panels
L cc vng cha trong mt ca s. Hin th trong mt ca s m trnh duyt hoc appletviewer cung cp v khng c ng vin. c s dng nhm mt s cc thnh phn Mt panel khng c sn v th chng ta cn phi thm n vo frame. Hm dng Panel()

Dialog
L mt lp con ca lp Window i tng dialog c cu trc nh sau :
Frame myframe = new Frame(My frame); String title = Title; boolean modal = true; Dialog dlg = new Dialog( myframe, title, modal);

Cc Components khc
V d textfields, labels, checkboxes, textareas scrollbars, scrollpanes, dialog

Label
c dng hin th chui (String) Cc hm dng:

Label( ) Label(String labeltext) Label(String labeltext, int alignment)

Cc phng thc:
setFont(Font f) setText(String s) getText( )

TextField
L iu khin text cho php hin th text hoc cho user nhp d liu vo. Cc hm dng:

TextField( ) TextField(int columns) TextField(String s) TextField(String s, int columns)

Cc phng thc:
setEchoChar(char) setTest(String s) getText( ) setEditable(boolean) isEditable( )

TextArea
c dng khi text c ni dung t hai dng tr ln L iu khin text c th son tho c vi nhiu dng Cc bc to TextArea:

To mt phn t (element) Ch ra s dng hay s ct (ty chn) Ch ra v tr ca iu khin trn mn hnh

TextArea (tt)
Cc hm dng:

TextArea( ) TextArea(int rows, int cols ) TextArea(String text) TextArea(String text, int rows, int cols)

Cc phng thc ca TextArea


setText(String) getText( ) setEditable(boolean) isEditable( ) insertText(String, int) replaceText(String, int, int)

Button
Cc nt Push hay Command l cch d nht ly cc s kin ca user Cc bc to button:

To mt phn t button, nn to cho n mt caption ch ra mc ch ca n Ch ra v tr t button trn mn hnh HIn th ra trn mn hnh Button( ) Button(String text)

Cc hm dng:

Checkboxes and RadioButtons


Checkboxes c dng khi cho php user nhiu cn chn la Radiobuttons c dng user ch ra mt la chn duy nht Cc bc to checkbox hoc radiobutton:

To mt phn t (element) Khi to gi tr ban u (c gi tr selected hay unselected) Ch ra v tr trn mn hnh Hin th ra mn hnh Checkbox( ) Checkbox(String text)

Cc hm dng to checkbox:

to radiobutton, ta phi to CheckBoxGroup trc khi to button

tng

Choice Lists
L p Choice cho php ta to danh sch c nhiu chn la Khi list c to ln u tin, n c khi to l empty Cc bc to danh sch chn la: To mt phn t Thm cc mc (c kiu Strings) vo danh sch , tng mc mt Ch ra v tr trn mn hnh Hin th ra mn hnh V d
Choice colors=new Choice( ); colors.addItem(Red); colors.addItem(Green);

Trnh qun l b tr Layout Manager


Cc loi layout khc nhau:

Flow Layout Border Layout Card Layout Grid Layout GridBag Layout

Trnh qun l layout c thit lp bng cch gi phng thc setLayout( )

FlowLayout
L trnh qun l layout mc nh cho cc applet v cc panel Vi FlowLayout cc thnh phn s c xp xp t gc tri trn n gc phi di ca mn hnh Cc constructor:
FlowLayout mylayout = new FlowLayout(); FlowLayout exLayout = new flowLayout(FlowLayout.RIGHT);

BorderLayout
L trnh qun l layout mc nh cho Window, Frame v Dialog Trnh qun l ny c th xp xp n 5 thnh phn trong container Cc thnh phn c th c t vo 5 hng NORTH, EAST, SOUTH, WEST v CENTER ca container V d: thm mt thnh phn vo vng North ca container
Button b1= new Button(North Button); setLayout(new BorderLayout( )); add(b1, BorderLayout.NORTH);

CardLayout
C th lu tr mt danh sch cc kiu layout khc nhau Mi layout c xem nh mt th (card) Th thng l i tng Panel Mt thnh phn c lp nh button s iu khin cc th c t pha trn nht Cc bc to CardLayout:

B tr layout ca panel chnh l CardLayout Ln lt thm cc panel khc vo panel chnh

GridLayout
H tr vic chia container thnh mt li Cc thnh phn c b tr trong cc dng v ct Mt li nn cha t nht mt thnh phn Kiu layout ny c s dng khi tt c cc thnh phn c cng kch thc Hm constructor
GridLayout gl = new GridLayout(no. of rows, no. of columns);

GridBagLayout
B tr cc thnh phn mt cch chnh xc Cc thnh phn khng cn c cng kch thc Cc thnh phn c xp xp trong mt li cha cc dng v cc ct Th t t cc thnh phn khng tun theo hng t tri-sang-phi v trnxung-di Hm constructor
GridBagLayout gb = new GridBagLayout( );

GridBagLayout
s dng layout ny, bn cn phi bit thng tin v kch c v cch b tr ca cc thnh phn Lp GridBagLayoutConstraints lu tr tt c cc thng tin m lp GridLayout yu cu: V tr v kch thuc mi thnh phn

X l cc s kin
Cc s kin (Events) c x l bng cc cng c sau:

Abstract Windowing Toolkit Trnh duyt. Cc trnh x l s kin do cc lp trnh vin to ring.

Cc ng dng cn ng k trnh x l s kin vi i i tng Cc trnh x l ny c gi khi c mt s kin tng ng xy ra

X l cc s kin (tt)
Event Listener s lng nghe mt s kin c th m mt i tng to ra Mi event listener cung cp cc phng thc x l cc s kin ny Lp c ci t listener cn nh ngha nhng phng thc ny

X l cc s kin(tt)
Cc bc cn tun th s dng m hnh Event Listener:

Ci t Listener tng ng Nhn din c tt c cc thnh phn to ra s kin Nhn din c tt c cc s kin c x l Ci t cc phng thc ca listener, v vit cc on m x l s kin trong cc phng thc

Interface nh ngha cc phng thc khc nhau x l mi s kin

Cc s kin v Listener tng ng


ActionEvent AdjustmentEvent ComponentEvent FocusEvent ItemEvent WindowEvent TextEvent MouseEvent

KeyEvent

ActionListener AdjustmentListener ComponentListener FocusListener ItemListener WindowListener TextListener MouseListener MouseMotionListener KeyListener

Menus
Cc loi menu :

Pull-down Pop-up menu

Ch c th t cc thanh menubar vo trong cc Frame m thi Cc thnh phn ca menu:


Menubar MenuItems

Chng VI

Applets

Applets
L mt chng trnh Java m chy vi s h tr ca trnh duyt web Tt c cc applets l lp con ca lp Applet to mt applet, bn cn import hai gi sau:
java.applet java.awt

Cu trc applet
nh ngha mt applet t bn s kin xy ra trong qu trnh thc thi i vi mi s kin c nh ngha bi mt phng thc tng ng. Cc phng thc:
init( ) start( ) stop( ) destroy( )

Cc phng thc khc:


paint( ) repaint( ) showStatus( ) getAppletInfo( )

Cc phng thc init(), start(), stop(), destroy(), and paint() c tha k t applet. Mi phng thc ny mc nh l rng. V th cc phng thc ny phi c np chng.

Bin dch v thc thi applet


Mt applet th c bin dch theo c php sau
javac Applet1.java

thc thi mt applet, to mt tp tin HTML c s dng th applet


Th applet c hai thuc tnh:
Width Height

truyn tham s ti applet, s dng th param, v tip theo l th value

Applet c th c thc thi bng applet viewer

im khc bit gia applet v mt ng dng


Cc ng dng khi thc thi phi s dng trnh bin dch Java, trong khi cc applets thc thi c trn bt k trnh duyt no m h tr Java, hoc s dng AppletViewer trong JDK. Mt ng dng bt u vi phng thc main(). Cn i vi applet th khng s dng phng thc ny Mt ng dng s dng System.out.println() hin th, trong khi mt applet th s dng phng thc drawstring() hin th.

Nhng hn ch v bo mt trong applet


Khng th c hoc vit cc tp tin trn h thng tp tin ca ngi s dng Khng th giao tip vi mt site trn internet. M ch giao tip vi mt dch v trn trang web c applet. Khng th chy bt k chng trnh no trn h thng ca ngi c Khng th load bt k chng trnh no c lu trn h thng ca ngi s dng

Chu trnh sng ca applet

Truyn tham s ti mt applet


truyn tham s, s dng PARAM trong th HTML V d
<applet code = "Mybutton1" width = 100 height = 100> <PARAM NAME = Mybutton value = Display Dialog> </applet>

Lp ha
c cung cp bi gi AWT Cung cp mt tp hp cc phng thc v nh sau:
Oval Rectangle Square Circle Lines Text in different fonts

Graphical Background
Cc phng thc v nn :
getGraphics( ) repaint( ) update(Graphics g) paint(Graphics g)

Hin th chui, k t v bytes


Phng thc v hoc hin th mt chui trn frame
C php drawString(String str, int xCoor, int yCoor);

Phng thc v hoc hin th cc k t trn frame


C php drawChars(char array[ ], int offset, int length, int xCoor, int yCoor);

Phng thc v hoc hin th bytes trn frame


C php drawBytes(byte array[ ], int offset, int length, int xCoor, int yCoor);

V cc hnh th
Phng thc c s dng v ng thng nh sau
C php drawLine(int x1, int y1, int x2, int y2);

Cc phng thc c s dng v ng trn nh sau


C php drawOval(int xCoor, int yCoor, int width, int height); setColor(Color c); fillOval(int xCoor, int yCoor, int width, int height);

Phng thc s dng v hnh vung:


C php drawRect(int xCoor, int yCoor, int width, int height); fillRect(int xCoor, int yCoor, int width, int height);

Cc phng thc c s dng v hnh vung c gc trn


C php
drawRoundRect(int xCoor, int yCoor, int width, int height, int arcWidth, int arcHeight); fillRoundRect (int xCoor, int yCoor, int width, int height, int arcWidth, int arcHeight);

3D Rectangles & Arcs


Cc phng thc c s dng v hnh 3D C php

draw3DRect(int xCoord, int yCoord, int width, int height, boolean raised); drawArc(int xCoord, int yCoord, int width, int height, int arcwidth, int archeight); fillArc(int xCoord, int yCoord, int width, int height, int arcwidth, int archeight);

Drawing PolyLines
Cc phng thc c s dng v nhiu c thng
C php

drawPolyline(int xArray[ ], int yArray[ ], int totalPoints); g.setFont(new Font("Times Roman", Font.BOLD,15));

V v t cc hnh a gic
Cc phng thc v v t cc hnh a gic
C php

drawPolygon(int x[ ], int y[ ], int numPoints); fillPolygon(int x[ ], int y[ ], int numPoints);

Mu
Java s dng mu RGB Bng cc gi tr mu
Element Red Green Blue

Range 0-255 0-255 0-255

C php ca hm dng to mt mu
color(int red, int green, int blue);

Bng trnh by cc gi tr mu RGB thn thng

Color White Light Gray Gray Dark Gray Black Pink Orange Yellow Magenta

Red 255 192 128 64 0 255 255 255 255

Green 255 192 128 64 0 175 200 255 0

Blue 255 192 128 64 0 175 0 0 255

Font
Gi java.awt package cung cp bi lp Font Cc phng thc ca lp Font:

getAllFont( ) getLocalGraphicsEnvironment( ) getFont( ) getFontList( )

Hm dng Font nhn 3 tham s

Tn font trong chui nh dng; tn ny c trong phng thc getFontList( ). Kiu ca font. V d nh: Font.BOLD, Font.PLAIN, Font.ITALIC Kch thc ca font.

V d
Font f1 = new Font("SansSerif", Font.ITALIC, 16); g.setFont(f1);

Lp FontMetrics
o lng cc k t khc nhau hin th trong cc font khc nhau. Vic o lng bao gm height, baseline, ascent, descent v leading ca font. N khng c th v n l mt lp tru tng

Lp FontMetrics (tip theo)


Phng thc:

getFontMetrics(f1) getHeight( ) getAscent( ) getDescent( ) getLeading( ) getName( )

Kiu v
Cc i tng v c s dng. Method used to make old and new contents visible on the screen
setXORMode(Color c)

Method used to revert to the overwrite mode


setPaintMode( )

Chng VII

Lp trnh a tuyn

Tuyn
Lp trnh a tuyn l mt c trng ca Java Tuyn l n v nh nht ca on m c th thi hnh c m thc hin mt cng vic ring bit

a tuyn
L kh nng lm vic vi nhiu tuyn a tuyn chuyn s dng cho vic thc thi nhiu cng vic ngthi a tuyn gim thi gian ri ca h thng n mc thp nht.

To v qun l tuyn (1)


Khi chng trnh Java thc thi hm main() tc l tuyn main c thc thi. Tuyn ny c to ra mt cch t ng. ti y :
- Cc tuyn con s c to ra t - N l tuyn cui cng kt thc vic thc hin. Trong chc lt tuyn chnh ngng thc thi, chng trnh b chm dt

Tuyn c th c to ra bng 2 cch:


Dn xut t lp Thread Dn xut t Runnable.

Vng i ca mt tuyn

Trng thi ca tuyn v cc phng thc ca lp tuyn


trng thi: born ready to run running sleeping waiting ready blocked dead

Phng thc: start( ) sleep( ) wait( ) notify( ) run( ) stop( )

Cc phng thc Khc


enumerate(Thread t) getName( ) isAlive( ) getPriority( ) setName(String name) join( ) isDaemon( ) setDaemon(Boolean on) resume( ) sleep( ) start( )

Phn chia thi gian gia cc tuyn


CPU ch thc thi ch mt tuyn ti mt thi im nht nh. Cc tuyn c u tin bng nhau th c phn chia thi gian s dng b vi x l.

tuyn Daemon(ngm)
Hai kiu tuyn trong mt chng trnh Java:
Cc tuyn ngi s dng tuyn ngm

tuyn ngm dn rc

a tuyn vi Applets
Cc chng trnh Java da trn Applet thng s dng nhiu hn mt tuyn Trong a tuyn vi Applets, Lp java.applet.Applet l lp con c to ra mt Applet ngi s dng nh ngha n khng th thc hin c trc tip lp con ca lp tuyn trong cc applet Con ng lp con s dng lp tuyn:

S dng mt i tng ca tuyn ngi s dng nh ngha, m, ln lt, dn xut lp tuyn Thc thi chy giao tip (interface)

S ng b tuyn
Thm nhp cc ti nguyn/d liu bi nhiu tuyn S ng b (Synchronization) S quan st (Monitor) Mutex

M ng b
thm nhp s quan st ca mt i tng, lp trnh vin s dng t kha synchronized gi mt phng thc hiu chnh (modified method) Khi mt tuyn ang c thc thi trong phm vi mt phng thc ng b (synchronized), bt k tuyn khc hoc phng thc ng b khc m c gng gi n trong thi gian s phi i

Khuyt im ca cc phng thc ng b


Cc trng thi chc chn khng li ch cho a tuyn Trnh bin dch Java t Sun khng cha nhiu phng thc ng b Cc phng thc ng b chm hn t ba n bn ln so vi cc phng thc tng ng khng ng b.

K thut wait-notify (i thng bo) (1)


tuyn chia cc tc v thnh cc n v ring bit v logic (hp l) trnh trng hp kim sot vng, Java bao gm mt thit k tt trong tin trnh k thut truyn thng s dng cc phng thc wait() (i), notify() (thng bo) v notifyAll() (thng bo ht) :

wait( ) notify( ) notifyAll( )

K thut wait-notify (i thng bo) (1)


Cc chc nng ca cc phng thc wait(), notify(), v notifyAll() l :

wait( ) notify( ) notifyAll( )

tuyn u tin cao nht chy u tin C php ca cc phng thc:


final void wait( ) throws IOException final void notify( ) final void notifyAll( )

Mt s im cn nh trong khi s dng phng thc wait():


tuyn ang gi a vo CPU tuyn ang gi a vo kha tuyn ang gi i vo vng i ca monitor

Cc im chnh cn nh v phng thc notify()


Mt tuyn a ra ngoi vng i ca monitor, v vo trng thi sn sng tuyn m c thng bo phi thu tr li kha ca monitor trc khi n c th bt u Phng thc notify() l khng chnh xc Trong mt s trng hp ny, cc phng thc ca monitor a ra 2 s phng:

Trng thi ca monitor s c kim tra trong mt vng lp while tt hn l cu lnh if Sau khi thay i trng thi ca monitor, phng thc notifyAll() s c s dng, tt hn phng thc notify().

S b tt (Deadlocks)
Mt deadlock (s b tt) xy ra khi hai tuyn c mt ph thuc vng quanh trn mt cp i tng ng b N kh g li mt b tt bi nhng nguyn nhn sau: N him khi xy ra, khi hai tuyn chia nh thi gian trong cng mt con ng N c th bao hm nhiu hn hai tuyn v hai i tng ng b Nu mt chng trnh a tuyn kha kn thng xuyn, ngay lp tc kim tra li iu

Thu dn collection)

rc

(Garbage

Ci to hoc lm trng b nh nh v cho cc i tng m cc i tng ny khng s dng trong thi gian di S dn rc thc thi nh l mt tuyn ring bit c quyn u tin thp S dng cu lnh sau tt i s dn rc trong ng dng:
java noasyncgc

Phng thc finalize() (hon thnh)


Java cung cp mt con ng lm sch mt tin trnh trc khi iu khin tr li h iu hnh Phng thc finalize(), nu hin din, s c thc thi trn mi i tng, trc khi s dn rc Cu lnh ca phng thc finalize() nh sau :

protected void finalize( ) throws Throwable

Tham chiu khng phi l s dn rc; ch cc i tng mi c dn rc

Chng VIII

Cc lung I/O

Cc lung
Cc lung l nhng ng ng dn gi v nhn thng tin trong cc chng trnh java. Khi mt lung c hoc ghi , cc lung khc b kho. Nu li xy ra trong khi c hoc ghi lung, mt ngoi l s kch hot. Lp java.lang.System nh ngha lung nhp v xut chun.

Cc lp lung I/O
Lp System.out. Lp System.in. Lp System.err.

Lp InputStream
L lp tru tng nh ngha cch nhn d liu Cung cp s phng thc dng c v cc lung d liu lm u vo. Cc phng thc:
read( ) available( ) close ( ) mark ( ) markSupported( ) reset( ) skip( )

Lp OutputStream
L lp tru tng. nh ngha cch ghi d liu vo lung. Cung cp tp cc phng thc tr gip. trong vic to, ghi v x l cc lung xut. Cc phng thc:

write(int) write(byte[ ]) write(byte[ ], int, int) flush( ) close( )

Nhp mng cc Byte


S dng cc m b nh Lp ByteArrayInputStream To ra mt lung nhp t m b nh khng g c v mng cc byte.

Khng h tr cc phng thc mi Cc phng thc np chng ca lp InputStream, ging nh read(), skip(), available() v reset().

Byte Array Output


s dng cc vng m b nh Lp ByteArrayOutputStream
To ra mt lung kt xut trn mng byte Cung cp cc kh nng b sung cho mng kt xut tng trng nhm cha ch cho d liu mi ghi vo. Cng cung cp cc phng thc chuyn i lung ti mng byte, hay i tng String.

Phng thc ca lp ByteArrayOutputStream :


reset( ) size( ) writeTo( )

Cc lp nhp/xut tp tin
Cc lp ny tr gip trong Java h tr cc thao tc nhp v xut:

File FileDescriptor FileInputStream FileOutputStream

Cc lp File, FileDescriptor, v RandomAccessFile c s dng h tr trc tip hoc truy cp nhp/xut ngu nhin.

Lp tp tin
c s dng truy cp cc i tng tp tin v thw mc Nhng tp tin c tn c t tn theo qui c ca h iu hnh ch Lp ny cung cp phng thc khi to to ra cc th mc v tp tin Tt c cc thao tc th mc v tp tin u c s dng cc phng thc truy cp v cc phng thc th mc m cc lp tp tin cung cp

Lp FileDescriptor
Cung cp vic truy cp ti cc tp tin m t Khng cung cp bt k tnh r nt no ti thng tin m h iu hnh duy tr. Cung cp ch mt phng thc gi l valid( )

Lp FileInputStream
Cho php u vo c t mt tp tin trong mt mu ca mt dng Cc i tng c to ra s dng chui tn tp tin, tp tin, i tng FileDescriptor nh mt tham s. Cc phng thc np chng ca lp InputStream. n cung cp phng thc finalize( ) v getFD( )

Lp FileOutputStream
Cho php kt xut ghi ra mt lung tp tin Cc i tng cng to ra s dng mt chui tn tp tin, tp tin, hay i tng FileDescriptor nh mt tham s. Lp ny np chng cc phng thc ca lp OutputStream v cung cp phng thc finalize( ) v getFD( )

Nhp xut lc
Lc: L kiu lung sa i cch iu qun mt lung hin c. v c bn c s dng thch ng cc lung theo cc nhu cu ca chng trnh c th. B lc nm gia lung nhp v lung xut. Thc hin mt s tin trnh t bit trn cc byte c chuyn giao t u vo n kt xut. C th phi hp thc hin mt dy cc tu chn lc.

Lp FilterInputStream
L lp tru tng. L cha ca tt c cc lp lung nhp lc. Cung cp kh nng to ra mt lung t lung khc. Mt lung c th c v cung cp cung cp di dng kt xut cho lung khc. duy tr mt dy cc i tng ca lp InputStream Cho php to ra nhiu b lc kt xch (chained filters ).

Lp FilterOutputStream
L dng b tr cho lp FilterInputStream. L cha ca tt c cc lp lung kt xut. Duy tr i tng ca lp OutputStream nh l mt bin out. D liu ghi ra lp ny c th sa i thc hin cc thao tc lc, v sau phn hi n i tng OutputStream.

Vng m nhp/xut
Vng m: L kho lu tr d liu. C th cung cp d liu thay v quay tr li ngun d liu gc ban u. Java s dng vng m nhp v kt xut tm thi lp cache d liu c c hoc ghi vo mt lung. Trong khi thc hin vng m nhp:

S lng byte ln c c cng thi im, v lu tr trong mt vng m nhp. Khi chng trnh c lung nhp, cc byte nhp c c vo vng m nhp.

Vng m nhp/xut (tt)


Trong trng hp vng m kt xut, mt chng trnh ghi ra mt lung. D liu kt xut c lu tr trong mt vng m kt xut. D liu c lu tr cho n khi vng m tr nn y, hay lung kt xut c x trng. Kt thc, vng m kt xut c chuyn gi n ch ca lung xut.

Lp BufferedInputStream
T ng to ra v duy tr vng m h tr vng m nhp. bi lp BufferedInputStream l mt b m, n c th p ng cho mt s cc i tng nht nh ca lp InputStream. Cng c th phi hp cc tp tin u vo khc. S dng vi bin trin khai vng m nhp.

Lp BufferedInputStream (Contd)
nh ngha hai phng thc thit lp:

Mt ch php ch nh kch thc ca vng m nhp. phng thc kia th khng.

C hai phng thc thit lp u tip nhn mt i tng ca lp InputStream nh mt tham s. Np chng cc phng thc truy cp m InputStream cung cp, v khng a vo bt k phng thc mi no.

Lp BufferedOutputStream
Thc hin vng m kt xut theo cch tng ng vi lp BufferedInputStream. nh ngha hai phng thc thit lp. N cho php chng ta n nh kch thc ca vng m xut trong mt phng thc thit lp, cng ging nh cung cp kch thc vng m mc nh. Np chng tt c phng thc ca lp OutputStream v khng a vo bt k phng thc no.

Lp Reader v Writer
L cc lp tru tng. Chng nm ti nh ca h phn cp lp, h tr vic c v ghi cc lung k t unicode.

Lp Reader
H tr cc phng thc sau:

read( ) reset( ) skip( ) mark( ) markSupported( ) close( ) ready( )

Lp Writer
H tr cc phng thc sau :

write( ) flush( ) close( )

Nhp/xut chui v mng k t


H tr nhp v xut t cc vng m b nh H tr 8 bt k t nhp v kt xut Lp CharArrayReader khng b sung phng thc mi vo cc phng thc m lp Reader cung cp.

Nhp/xut chui v mng k t (tt)


Lp CharArrayWriter b sung phng thc sau y vo phng thc ca lp Writer cung cp:

reset( ) size( ) toCharArray( ) toString( ) writeTo( )

Nhp/xut chui v mng k t (tt)


Lp StringReader tr gip c cc k t u vo t su chui. N khng b sung bt k phng thc no m lp Reader cung cp. Lp StringWriter tr gip ghi lung kt xut k t ra mt i tng StringBuffer. Lp ny b sung thm cc phng thc sau:

getBuffer( ) toString( )

Lp PrinterWriter
Thc hin mt kt xut. Lp ny c phng thc b sung , tr gip in cc kiu d liu c bn . Lp PrintWriter thay th lp PrintStream Thc t ci thin lp PrintStream; lp ny dng mt du tch dng ph thuc nn tng im cc dng thay v k t \n. Cung cp phn h tr cho cc k t unicode so vi PrintStream. Cc phng thc:
checkError( )

Giao din DataInput


c s dng c cc byte t lung nh phn, v Is used to read bytes from a binary stream, and xy dng li d liu trong mt s kiu d liu nguyn thu. Cho php chng ta chuyn i d liu t t khun dng UTF-8 c sa i Java n dng chui nh nghi s phng thc, bao gm cc phng thc c cc kiu d liu nguyn thu.

Nhng phng thc giao din DataInput

boolean readBoolean( float readFloat( ) ) int readInt( ) byte readByte( ) double readDouble char readChar( ) String readUTF( ) short readShort( ) long readLong( ) String readLine( )

Giao din DataOutput


c s dng xy dng li d liu mt s kiu d liu nguyn thu vo trong dy cc byte Ghi cc byte d liu vo lung nh phn Cho php chng ta chuyn i mt chui vo khun dng UTF-8 c sa i Java v vit n vo trong mt dy. nh ngha mt s phng thc v tt c phng thc kch hot IOException trong trng hp li.

Cc phng thc giao din DataOutput


void writeBoolean(boolean b) void writeByte( int value) void writeChar(int value) void writeShort(int value) void writeLong(long value) void writeFloat(float value) void writeInt(int value) void writeDouble(double value) void writeUTF(String value)

Lp RandomAccessFile
Cung cp kh nng thc hin I/O theo cc v tr c th bn trong mt tp tin. d liu c th c hoc ghi ngu nhin nhng v tr bn trong tp tin thay vi mt kho lu tr thng tin lin tc. phng thc seek( ) h tr truy cp ngu nhin. Thc hin c u vo v u ra d liu. H tr cc cp php c v ghi tp tin c bn. K tha cc phng thc t cc lp

Cc phng thc ca lp RandomAccessFile


seek( ) getFilePointer( ) length( )

Gi java.awt.print
Gm c cc giao din
Pageable:

nh ngha cc phng thc dng cc i tng biu th cc trang s c in. Ch nh s trang c in, v trang hin ti hay l tranh gii trang c in Chi nh phng thc print( ) s dng in mt trang trn i tng Graphics Cung cp kh nng truy cp i tng PrinterJob

Printable:

PrinterGraphics:

Giao di n PrinterGraphics cung cp cc lp sau:


Paper Book PageFormat PrinterJob PrinterException PrinterIOException PrinterAbortException

Gi java.awt.print kch hot cc ngoi l:


Chng IX
KT NI CSDL Java Database Connectivity

Tng quan
JDBC cung cp tp cc lp v interface cho php chng trnh Java c th ni chuyn c vi h CSDL Tp cc lp ca JDBC c th lm vic c vi mi h csdl.

C 3 bc chnh kt ni CSDL.
Np database drivers To ni kt, To i tng Connection To i tng Statement thc thi cc lnh sql..

V d
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con=DriverManager.getConnection("jdbc:odbc:ATM"); Statement stmt = con.createStatement(); : : : :

Database URL
Database URL l mt chui c dng kt ni csdl. c php :

jdbc:subprotocol name:other_stuff
The subprotocol name c dng tu vo loi driver s dng kt ni csdl. v d : subprotocol name l odbc nu driver l cu ni jdbcodbc Other_stuff cng ph thuc vo loi driver no c s dng. v d nu driver l cu ni jdbcodbc th thnh phn ny l tn ca i tng ODBC

Database Driver
Bo m ng dng java tng tc vi mi csdl di mt cch thc chun v duy nht. Bo m nhng yu cu t chng trnh s c biu din trong csdl di mt ngn ng m csdl hiu c nhn cc yu cu t client, chuyn n n vo nh dng m csdl c th hiu c v th hin trong csdl. Nhn cc phn hi, chuyn n ngc li nh dng d liu java v th hin trong ng dng.

Np Driver
Lp DriverManager chu trch nhim np driver v to kt ni n csdl.
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());

hoc Class.forName(String);
This returns the object associated with the class with the given string name. Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Equivalent to: new sun.jdbc.odbc.JdbcOdbcDriver();

If you have a driver from another vendor, then find out the class name of that driver and load it instead.

JDBC Driver
C 4 loi JDBC Driver Loi 1: JDBC/ODBC Loi 2: Native-API Loi 3: Open Protocol-Net Loi 4: Proprietary-Protocol-Net Loi 2,3,4 ni chung c vit bi nh cung cp csdl. hiu qu hn loi 1 nhng thc hin phc tp hn.

Loi I JDBC/ODBC
jdk h tr cu ni jdbc-odbc (jdbc-odbc bridge). Mm do nhng khng hiu qu.
Aplication Aplication JDBC JDBCDriver Driver ODBC ODBCDriver Driver
Network Interface Client

Disk Disk

Network Interface
Database Database

Server

Loi 2: Native-API
Tt hn loi 1, loi ny cho php JDBC giao tip trc tip vi cc driver hay cc hm API ca CSDL.
Aplication Aplication JDBC JDBCDriver Driver
Native NativeDatabase DatabaseLibrary Library

Client

Disk Disk

Network Interface

Network Interface
Database Database

Server

Loi 3: Open Protocol-Net


Drivers
C th chuyn cc yu cu n cc csdl nm xa. C th giao tip vi nhiu loi CSDL. Khng phi ca nh cung cp csdl Client Aplication Aplication Tt c bng m java
JDBC JDBCDriver DriverClient Client
Network Interface

Disk Disk

Network Interface

Server JDBC JDBCDriver DriverServer Server


Database Database

Native NativeDatabase DatabaseLibrary Library

Loi 4: Proprietary-Protocol Net


100% java C kh nng giao tip trc tip vi h CSDL khng cn chuyn i
Aplication Aplication
Client

JDBC JDBCDriver Driver


Network Interface

Disk Disk

Network Interface

Database Database

Server

Gi Java.sql
Cung cp tp hp cc lp v interface dng trao i vi CSDL.
Cc lp
DriverManager Date, Time Timestamp Types

Cc Interfaces
Driver Connection DatabaseMetaData Statement PreparedStatement CallableStatement ResultSet ResultSetMetaData

i tng Statement
i tng Connection cha lin kt trc tip n csdl. S dng i tng Connection to i tng Statement.
Statement s = con.createStatement();

i tng ny c nhim v gi cc cu lnh sql n csdl. executeQuery(String) or executeUpdate(String) method Cng mt i tng Statement c th s dng cho nhiu cu lnh sql khc nhau.

C 3 phng thc thc thi


executeQuery() executeUpdate() execute()

The executeQuery()
Nhn cu lnh SQL (select) lm i s, tr li i tng ResultSet

ResultSet rs = s.executeQuery(SELECT * FROM Books);

Phng thc executeUpdate()


Nhn cc cu lnh sql dng cp nht Tr li s nguyn biu th s hng c cp nht. UPDATE, INSERT, or DELETE.

Phng thc execute()


c p dng cho trng hp khng r loi sql no c thc hin. c p dng cho trng hp cu lnh sql wocj to ra t ng bi chng trnh.

ResultSet
Cha mt hoc nhiu hng d liu t vic thc hin cu lnh truy vn. C th ly d liu tng hng d liu mt trong ResultSet. S dng phng thc next() di chuyn n hng d liu tip theo trong ResultSet. Hm next() tr li true ch rng hng cha d liu, tr li false hng cui khng cha d liu. Thc hin while (rs.next()){ // examine a row from the results }

ly d liu cc ct trn mi hng ca ResultSet, ta dng cc phng thc.


get type(int | String)
i s l ch s ct tnh t 1. p dng cho cc ct c kiu d liu l int, float, Date.....

V d :
String isbn = rs.getString(1); // Column 1 float price = rs.getDouble(Price);

ResultSet Metadata
i tng ny cho bit thng tin v ResultSet
ResultSet rs = stmt.executeQuery(SQLString); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); getColumnName(int column)

Prepared Statements
To execute a Statement object many times, it will reduce execution time to use PreparedStatement object PreparedStatement object
unlike a Statement object, it is given an SQL statement when it is created. The advantage to this is that in most cases, this SQL statement will be sent to the DBMS right away, where it will be compiled. As a result, the PreparedStatement object contains not just an SQL statement, but an SQL statement that has been precompiled. This means that when the PreparedStatement is

Cc i tng Statement khc


Prepared Statements Callable Statement

Database Metadata
i tng ny cho bit thng tin v csdl.

Chng trnh mu
import java.sql.*; class JDBCDemo1 { public static void main(String[] args) { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con=DriverManager.getConnection("jdbc:odbc:Accserver"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(args[0]); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); for(int j=1; j<=numberOfColumns;j++) { System.out.println(rsmd.getColumnLabel(j)); } while(rs.next()) { for(int i=1; i<=numberOfColumns;i++){ System.out.println(rs.getObject(i)); }} rs.close(); stmt.close(); } catch(Exception e){ System.out.println("Error " + e);

You might also like