Chuong I - NNJava

Embed Size (px)

Citation preview

  • 8/9/2019 Chuong I - NNJava

    1/27

    1

    CHNG INGN NG JAVA

    I. LP TRNH HNG I TNG1. Cc phng php lp trnha) Lp trnh tuyn tnh

    Ton b chng trnh ch l mt n th duy nht, cc lnh c thc hin tun t theo tht xut hin trong chng trnh. Lp trnh tuyn tnh n gin nhng kh sa li, kh m rng.

    b) Lp trnh hng th tcChng trnh c tch thnh nhiu phn gi l hm hay th tc. Mi hm s thc hin mtchc nng ca chng trnh. Trong chng trnh thng c mt hm chnh (main), khi chngtrnh thc thi s gi hm main, hm main c th gi cc hm khc, cc hm khc li c th giln nhau. Lp trnh hng th tc d sa li, d m rng, nhng v d liu v hm tch bit nnkh bo v d liu v hm, khng b truy xut bi cc hm khng mong i. Khi sa i dliu cc hm truy xut phi thay i theo, ngoi ra kh s dng li cc hm vit sn.

    c)

    Lp trnh hng i tngChng trnh s c tch thnh nhiu lp, mi lp gm c d liu (bin) v phng thc (hm)x l d liu. Do d liu v hm c ng gi thnh lp nn LTHT s c 3 c tnh sau:- Tnh ng gi (Encapsulation):Vic t chc d liu v phng thc trong mt lp gi l tnhng gi, tnh ng gi cho php bo v d liu, che du chi tit ci t.- Tnh tha k (Inheritance): S dng lp c trc (lp cha) xy dng lp mi (lp con) gi ltnh tha k. Lp con c tha hng nhng thuc tnh, phng thc ca lp cha v c th cthm nhng thuc tnh, phng thc ring. Tnh tha k gip ngi lp trnh d dng s dngli m chng trnh vit trc .- Tnh a hnh (Polymorphism): Mt phng thc c th thc hin theo nhiu cch khc nhautrn cc lp khc nhau gi l tnh a hnh. Tnh a hnh gip cho vic lp trnh tr nn n gin,

    d m rng.

    2. Cc khi nim v LTHT2.1 i tng (object)i tng dng biu din mt thc th ca th gii thc. Mi i tng c xc nh bithuc tnh (d liu, bin) v hnh vi (phng thc, hm). Thuc tnh xc nh tnh cht ringca i tng, hnh vi l hnh ng tc ng ln i tng.

    ObjectA

    DATAS

    METHODS

    ObjectB

    DATAS

    METHODS

    M HNH CA LTHT

    Object= Variables + Methods

  • 8/9/2019 Chuong I - NNJava

    2/27

    2

    v d : Mt i tng sinh vin c th c thuc tnh l: h tn, lt, tb v hnh vi tc ng lni tng sinh vin l tnh tb ca sv

    * i tng sinh vin th 1 * i tng sinh vin th 2- Thuc tnh:h tn: Trn vn Anlt= 1

    th= 2- Hnh vi:tnh tb ca sv: dtb=(dlt+dth)/2=1.5

    - Thuc tnh:h tn: on Dlt= 2

    th= 3- Hnh vi:tnh tb ca sv: dtb=(dlt+dth)/2=2.5

    V d: Mt i tng hcn c th c thuc tnh l chiu di, chiu rng v hnh vi tc ng lni tng hcn l tnh din tch ca hcn

    i tng hcn th 1 i tng hcn th 2- Thuc tnh:chiu di=3

    chiu rng=4- Hnh vi:Tnh dt: dt=cd*cr=12

    - Thuc tnh:chiu di=5

    chiu rng=6- Hnh vi:Tnh dt: dt=cd*cr=30

    2.2 Lp (class)L cu trc m t cc i tng c cng thuc tnh v hnh vi. Mi lp s khai bo cc thuctnh, hnh vi ca cc i tng thuc lp. Cc i tng thuc lp s c cng tn thuc tnhnhng c gi tr thuc tnh khc nhau. Thuc tnh cn gi l d liu hay l bin, hnh vi cn gil hm hay phng thc.

    II. Ngn ng lp trnh Java1. Gii thiu:NNLT Java do hng Sun Microsystem thit k nm 1991 tn l Oak, mc ch lp trnh cho ccthit b in t, 1995 c m rng vit ng dng trn Internet v ly tn l Java.

    u im ca ngn ng Java l ngn ng lp trnh hng i tng, khng ph thuc phn cngv h iu hnh, h tr lp trnh mng rt mnh v n gin v d hc hn C++ nhiu.

    Java c th son bng bt c trnh son tho vn bn no (nodepad, wordpad, Jbuilder,), sau c dch sang file .class dng bytecode. M bytecode khng ph thuc phn cng v h iuhnh nhng mun thc thi trn mt my c h iu hnh c th th my cn ci t JVM(Java Virtual Machine) tng ng, JVM l mi trng thc thi file dng bytecode trn mt

    my c th.

    bin dch, thc thi chng trnh Java ta c th ci t chng trnh JDK (Java DevelopmentToolkit) gm c trnh bin dch (javac.exe) dch file .java thnh file .class, trnh thng dch(java.exe) thc thi file .class, th vin cha cc hm chun (APIs) v mt s tin ch khcnhng do JDK khng c trnh son tho Java v khng c giao tip ha vi ngi dng nnkhi vit Java thng ta s dng phn mm thn thin hn nh l Jbuilder, Visual J++,

  • 8/9/2019 Chuong I - NNJava

    3/27

    3

    S hot ng ca mt ct ng dng Java:

    2. S dng ngn ng* Cc kiu c bn

    T kha kch thcS nguyn c du byte 1 byteshort 2 bytesint 4 bytesS thcfloat 8 bytesdouble 8 byteCc kiu khcchar kiu k t 2 byte boolean kiu lun l (true, false)* Hng s:123 (int), 123L (long), 123.45F (float), 123.45 (double), c (char)

    * Kim sot vic truy xut bin, phng thc ca lp:

    Specifier class subclass package world private X protected X X X public X X X X

    public: c th truy xut gi khcprotected: ch truy xut cng gi (mc nh l protected)private: ch truy xut trong lp

    * Bin tnh, phng thc tnh- Bin tnh: khai bo static, dng chung cho mi t thuc lp. Khng c static gi l bin thhin, mi i tng c bin th hin ring.- Phng thc tnh: khai bo static, c gi bng tn lp hoc tn i tng, trong pt tnh chc truy xut bin tnh.

    V d:

    public class TestStatic{

    int n; //bien the hienstatic int m; //bien tnhvoid f(){int x=5; //bien cuc bo

    }

    Java Program(.class)

    JavaAPIs

    Java VirtualMachine (JVM)

    Your ComputerSystem

    n =10

    n=30

    c1

    f()

    c2

    m=40

    Lop TestStatic

  • 8/9/2019 Chuong I - NNJava

    4/27

    4

    public static void main(String[] args){TestStatic c1=new TestStatic(); c1.n=10; c1.m=20;TestStatic c2=new TestStatic(); c2.n=30; c2.m=40;System.out.println("kq: "+c1.n+","+c1.m+","+c2.n+","+c2.m+","+TestStatic.m);

    }}Ket qua:

    kq: 10,40,30,40,40

    * Lp tru tng, pt tru tngLp tru tng v phng thc tru tng c khai bo abstract. Pt tru tng ch c phnkhai bo cha c ci t. Lp tru tng c nhng pt tru tng v cc pt khc. Khng th to tt pt tru tng, lp tha k lp tru tng cn phi ci t cc pt tr tng nu khng s trthnh lp tru tng. Pt tru tng s c tnh a hnh.v d:public abstract classNguoi //lop tru tng{

    String hoten;

    public void NhapHoTen() throws IOException{BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));System.out.print("Ho Ten:"); hoten=stdIn.readLine();

    }public void XuatHoTen(){

    System.out.println("Ten: "+ten);}

    public abstract boolean Thuong(); //pt xet dieu kien duoc thuong la phng thc trutng.

    }

    * Giao din:Dng t kho interface. Trong giao din ch c cc bin hng s (final) v cc pt trong giao dinch c phn khai bo, cha c ci t. Mt lp c th s dng nhiu giao din, giao din dng gii quyt vn a tha k. Mt lp c th s dng (tha k) nhiu giao din v phi ci t ttc cc pt trong cc giao din nu khng lp phi khai bo tru tng.

    v d:public interface SoSanh //giao din{

    public static final int LESS = -1;public static final int EQUAL = 0;public static final int GREATER = 1;public int sosanh(SoSanh obj);

    }* Gi: l tp hp cc lp v cc giao din c lin quan, mc ch ca gi l bo v s truy cp vgii quyt vn trng tn. Khai bo lp thuc gi dng lnh package, s dng lp ca gi dnglnh import. Java cung cp sn rt nhiu gi, khi s dng lp thuc gi no th cn import gitng ng, cc lp thuc gi java.lang mc nh import.

  • 8/9/2019 Chuong I - NNJava

    5/27

    5

    v d:

    * Lp lng nhau:i tng thuc lp trong c th truy xut bin v phng thc khng tnh ca lp ngoi.

    class EnclosingClass{. . .class ANestedClass {

    . . .}

    }

    - Ht -

    Chng II

    S DNG GIAO DINV TRUY XUT CSDLIII.(GRAPHICAL USER INTERFACES

    DATABASE)

    I.

    GRAPHICAL USER INTERFACES (GUI)1. Gii thiu: ngi dng c th giao tip vi chng trnh dng trc quan (dng ho), Java cung cp

    nhiu thnh phn giao tip nh l: button, text box, menu,Cc gi java.awt (JDK 1.0) (AWT: Abstract Window Toolkit ), javax.swing (JDK 2.0) cha cc

    lp to v qun l cc thnh phn giao tip.Cc thnh phn trong gi swing bt u bng ch J, v cc thnh phn ny c nhiu chc nng

    hn cc thnh phn trong gi awt v c lp hon ton vi phn cng.

    To khung cho ca s ng dngKhi vit ng dng c dng giao din, ta cn to khung ca s cho ng dng cha cc thnh

    phn giao tip.Trong gi swing c ba lp dng to khung l: Jframe (khung chnh), Jdialog (khung ph, ph

    thuc vo khung khc) v JApplet (khung cha applet). Khi vit applet khng cn to khungv applet tha k Frame.

    Thng cc thnh phn giao din c ghp thnh nhm trong panel, trong panel li c th chapanel con v frame c th cha nhiu panel.

    3. Sp xp cc thnh phn giao tip

  • 8/9/2019 Chuong I - NNJava

    6/27

  • 8/9/2019 Chuong I - NNJava

    7/27

    7

    S kin Dng giao din I. Phng thc x l s kinActionEvent ActionListener actionPerformed(ActionEvent e)TextEvent TextListener textValueChanged(TextEvent e)ItemEvent ItemListener itemStateChanged(ItemEvent e)ListSelectionEvent ItemListener itemStateChanged(ItemEvent e)FocusEvent FocusListener focusGained(FocusEvent e)

    focusLost(FocusEvent e)KeyEvent KeyListener keyPressed(KeyEvent e)

    keyReleased(KeyEvent e)keyTyped(KeyEvent e)

    MouseEvent MouseListener

    MouseMotionListener

    mousePressed(MouseEvent e)mouseReleased(MouseEvent e)mouseClicked(MouseEvent e)mouseMoved(MouseEvent e)mouseDragged(MouseEvent e)

    WindowEvent WindowListener windowClosed(WindowEvent e)windowOpened(WindowEvent e)

    * Ci t i tng lng nghe s kinV d: x l s kin nhn nt button- xy dng lp dng to i tng lng nghe s kinpublic class MyClass implements ActionListener{

    public void actionPerformed(ActionEvent e) {//cc lnh x l s kin}

    }

    - ng k i tng lng nghe s kin sinh ra t thnh phn giao tipbutton.addActionListener(instanceOfMyClass);- Nu phng thc x l s kin n gin ta c th khai bo l lp v danh bn trong

    ( anonymous inner class), khng cn xy dng lp lng nghe s kinV d:button.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent e){

    }

    });

    Ghi ch: m x l s kin c thc thi trong mt tiu trnh ring

    5. Chng trnh mu GUIDng 1: khng x l s kin

    import javax.swing.*;public class SwingApplication{

    public SwingApplication() //phuong thuc khoi tao co nhiem vu tao GUI

  • 8/9/2019 Chuong I - NNJava

    8/27

    8

    {JFrame frame = new JFrame("Tieu de cua so");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add();frame.setSize(200,100);//hoac frame.pack(); vua du chua cac thanh phan giao tiepframe.setVisible(true); //Hien cua so

    }

    public static void main(String[] args){

    new SwingApplication(); //tao GUI}

    }/*HIDE_ON_CLOSE:che, DO_NOTHING_ON_CLOSE:khong lam gi

    EXIT_ON_CLOSE:dong ung dung,DISPOSE_ON_CLOSE:huy,dong cua so*/

    Dng 2: c x l s kin

    import java.awt.*;

    import java.awt.event.*;import javax.swing.*;

    public class SwingApplication implements ActionListener{

    JFrame Frm;public SwingApplication() //phng thc khoi tao{

    Frm = new JFrame("Tieu de cua so");Frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Frm.setSize(new Dimension (120, 40));

    Frm.pack();Frm.setVisible(true);

    }public void actionPerformed(ActionEvent event) //phng thc xu ly ActionEvent{

    //cac lenh xu ly su kien action}public static void main(String[] args){

    new SwingApplication();

    }}

    DATABASE

    1. Truy xut CSDL: gm cc bc sau

  • 8/9/2019 Chuong I - NNJava

    9/27

    9

    STT Thao tc Lnh (v d)1 Np driver truy xut CSDL Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");2 Kt ni CSDL Connection con = DriverManager.getConnecti

    "jdbc:odbc:student,sa,);3 To i tng cu lnh Statement stmt=con.createStatement();4 Thc thi cu sql ResultSet rs=stmt.executeQuery(sql);//select

    int n= stmt. executeUpdate (sql);// create, alter,drop, upddelete, insert

    5 Ly thng tin bng kt qu rs ResultSetMetaData rsmd=rs.getMetaData();6 Ly s ct trong bng int col=rsmd.getColumnCount();7 Ly tn ct th i (i=1,) String label=rsmd.getColumnLabel(i)8 Ly gi tr ct i hng hin ti String value=rs.getString(i)//rs.getFloat(i),..

    Tham s c th l tn ct9 Di con tr mu tin ti hng k rs.next(): false l cui bng, con tr bt u trn dng 1, l

    next() u tin s di con tr ti dng 1V d: in bangdiemClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection con = DriverManager.getConnection("jdbc:odbc:qld", "sa", "");Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery("SELECT masv,diemthi FROM bangdiem");while (rs.next()) {

    String masv = srs.getString("masv");//srs.getString(1);int diemthi = srs.getFloat("diemthi");//srs.getFloat(2);System.out.println(masv + " " + diemthi);

    }

    * Cch truy xut CSDL nhanh hn

    Nu mun thc thi cu lnh sql nhiu ln vi cc gi tr tham s khc nhau nn dng i tngPrepareStatement thay cho i tng Statement th vic thc hin s nhanh hn nhiu. Vi itng Statement mi khi gi stmt.executeQuery(sql); hoc stmt.executeUpdate(sql); th cu lnhsql c gi ln cho h qun tr CSDL, h qun tr s bin dch v thc thi cu sql, nu vic bindch thc hin nhiu ln s lm chm vic thc thi. Vi i tng PrepareStatement th vic bindch cu lnh sql ch thc hin mt ln do s nhanh hn nhiu.

    V d:Statement stmt=con.createStatement();for(int i = 0; i < 10; i++)

    stmt. executeUpdate ( "insert into bangdiem values( dh01+i+, +i+)" );

    C th thay bng on m sau nhanh hn

    PreparedStatement ps = con.prepareStatement( "insert into bangdiem values( ?, ?)");for(int i = 0; i < 10; i++){

    ps.setString(1, dh01+i);ps.setInt(2, i);

  • 8/9/2019 Chuong I - NNJava

    10/27

    10

    ps.executeUpdate();}

    2. S dng Stored Procedure ca SQL server- To Stored Procedure:Stored Procedure c th to sn trong SQL server hoc dng on m Java sau:String CreateProc = "create procedure ProcName (d/s ts nu c) as

    Statement stmt = con.createStatement();stmt.executeUpdate(CreateProc);Khi thc thi, on m ny s to mt Stored Procedure lu vo CSDL.- Gi Stored Procedure://to t cha li gi SPCallableStatement cs = con.prepareCall("{call ProcName (?,?,)}");//gi tham s cho SPcs.setString(int parameterIndex, String x);// parameterIndex=1,2 l s th t ca tham shoccs.setInt(int parameterIndex, int x); cs.setFloat(int parameterIndex, float x); //ng k tham s l tham s tr v

    cs.registerOutParameter(int parameterIndex, int sqlType)sqlType c th l cc hng sau: java.sql.Types.INTEGER, java.sql.Types.FLOAT,java.sql.Types.VARCHAR//thc thi SPResultSet rs = cs.executeQuery(); //SP la select, rs l bng kt qahocint rec = cs.executeUpdate(); //SP la insert, delete, update,rec l s mu tin c x lhocboolean flag = cs.execute(); //SP phi hp nhiu select, insert,flag=true l thnh cng//ly kt qu do SP tr vResultSet rs=cs.getResultSet();//ly kq ResultSet

    int rec=cs.getUpdateCount();//ly kq l s mu tin c x lboolean flag= cs.getMoreResult();// (cs.getMoreResults() == false) && (cs.getUpdateCount==-1): l ht kt qu.

    3. Cc chc nng khc3.1 Di chuyn cursor* To i tng ResultSet c th cunStatement stmt = con.createStatement(int resultSetType, int resultSetConcurrency);

    resultSetType c th l: ResultSet.TYPE_FORWARD_ONLY,ResultSet.TYPE_SCROLL_INSENSITIVE, hoc ResultSet.TYPE_SCROLL_SENSITIVE

    (khng hay c phn nh nhng thay i khi ResultSet ang m)resultSetConcurrency c th l: ResultSet.CONCUR_READ_ONLY hayResultSet.CONCUR_UPDATABLE (ResultSet ch c hay c th cp nht)Mc nh resultSetType=ResultSet.TYPE_FORWARD_ONLY, resultSetConcurrency =ResultSet.CONCUR_READ_ONLYResultSet srs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");

  • 8/9/2019 Chuong I - NNJava

    11/27

    11

    V d: in bangdiem theo th t ngc

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection con = DriverManager.getConnection("jdbc:odbc:qld", "sa", "");Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

    ResultSet.CONCUR_READ_ONLY);ResultSet rs = stmt.executeQuery("SELECT masv,diemthi FROM bangdiem");rs.afterLast();

    while (rs.previous()) {String masv = srs.getString("masv");int diemthi = srs.getFloat("diemthi");System.out.println(masv + " " + diemthi);

    }

    * Di chuyn cursorboolean rs.first();boolean rs.last();void rs.beforeFirst();void rs.afterLast();

    int absolute(int) :m di chuyn ngc tnh t cui: -1:cui, -2 k cui,boolean rs.relative(int): di chuyn tnh t hng hin hnh.int getRow(): tr v v tr cursorvv

    V d:rs.absolute(4); //ti hng 4int rowNum = rs.getRow(); // rowNum = 4rs.relative(-3);int rowNum = rs.getRow(); // rowNum = 1rs.relative(2);

    int rowNum = rs.getRow(); // rowNum = 3

    isFirst , isLast , isBeforeFirst , isAfterLast :kim tra v tr cursorv d:if (rs.isAfterLast() == false) {

    rs.afterLast();}while (rs.previous()) {

    String masv = rs.getString("masv");int diemthi = rs.getFloat("diemthi");System.out.println(masv + " " + diemthi);

    }

    3.2 S dng ResultSet cp nht CSDLV d:Connection con = DriverManager.getConnection("jdbc:odbc:qld", "sa", "");Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

    ResultSet.CONCUR_UPDATABLE);ResultSet rs = stmt.executeQuery("SELECT masv,diemthi FROM bangdiem");rs.last();

  • 8/9/2019 Chuong I - NNJava

    12/27

    12

    rs.updateInt("diemthi", 9); //cp nht trong ResultSetrs.cancelRowUpdates(); //b cp nht trong ResultSetrs.updateFloat("diemthi", 8);rs.updateRow(); //cp nht trong CSDL

    rs.moveToInsertRow(); //InsertRow l buffer cha hng cn thmrs.updateString("masv", dh0101);rs.updateInt("diemthi", 5);

    rs.insertRow(); //thm vo rs v CSDLrs.updateString("masv", dh0102);rs.updateInt("diemthi", 7);rs.insertRow(); //thm vo rs v CSDLrs.moveToInsertRow()//di chuyn ti hng mi thmrs.deleteRow(); //xa hng mi thm khi rs v CSDLrs.first();rs.refreshRow();//lm mi hng hin ti

    Ch : mc d rs l SENSITIVE nhng c khi rs vn cha cp nht record mi do ph thucvo Driver v DBMS nn chc chn c rs mi, thc hin li lnh : rs.close();

    rs = stmt.executeQuery("SELECT masv,diemthi FROM bangdiem");

    II. CHNG IIIIII.MULTI THREADS & APPLET &URL

    LP TRNH MULTI THREADSKhi nim tiu trnh (thread):Tiu trnh l mt dng iu khin tun t bn trong mt tin trnh.Mt tin trnh c th to nhiu tiu trnh, mi tiu trnh thc hin mt cng vic no v thc

    thi c lp, ng thi bng cch chia s CPU.Cc tiu trnh trong cng mt tin trnh dng chung khng gian a ch tin trnh nhng c con

    tr lnh, tp cc thanh ghi v ngn xp ring.Cc tin trnh ch c th lin lc vi nhau thng qua cc c ch do h iu hnh cung cp. Cc

    tiu trnh lin lc vi nhau d dng thng qua cc bin ton cc ca tin trnh.

    V d: Trnh duyt l mt chng trnh c nhiu tiu trnh: tiu trnh ti hnh, download file, tiutrnh thc hin hot hnh,

    * Khi no cn vit chng trnh c s dng tiu trnh?

  • 8/9/2019 Chuong I - NNJava

    13/27

    13

    Chu k sng ca tiu trnhCc trng thi m tiu trnh c th tri qua trong qu trnh sng l:

    Khi thread c to bi lnh new, thread cha c cp pht ti nguyn v trng thi NewThread. Pt start() s cp ti nguyn cho thread, sp lch thc thi cho thread v gi pt run(), lcny thread trng thi Runnable (i CPU). Khi CPU ri hoc n lt thread, JVM schuyn thread sang trng thi running. Thread s chuyn sang trng thi Not Runnable khigi pt sleep() hoc wait() hoc thread ang ch nhp/xut. Khi pt run() thc thi xong, thread s

    chuyn sang trng thi Dead v kt thc, c th dng pt isAlive() kim tra thread cn snghay cht.

    u tin ca tiu trnhDo c mt CPU, nn ti mt thi im ch c th c mt thread thc thi. Java dng gii thut u tin c nh iu phi hot ng ca cc thread. Thread c chn s thc hin cho tikhi mt trong cc trng hp sau xy ra:Thread c u tin cao hn trng thi RunnableThread ang thc thi nhng quyn thc thi hay pt run() ca n kt thcHt thi lng quantum dnh cho n.V trnh trng hp thread i CPU, b lp lch ca Java khng m bo thread c u tin

    cao nht ang thc thi, nn khi lp trnh khng nn da vo u tin. Ngoi ra cng khng nnda vo quantum v c th h thng thread ang thc thi khng h tr quantum.

    * C php lnh:- set Priority (n): dng thay i u tin, n l u tin trong khong (MIN_PRIORITY,

    MAX_PRIORITY), MIN _PRIORITY, MAX_PRIORITY l hng s nh ngha trong lpThread, n ln l u tin cao. Khi mt thread c to ra s c cng u tin vi threadto ra n

    Vit chng trnh s dng tiu trnh4.1 S dng lp Timer v TimerTaskJava cung cp cc lp sau: java.util.Timer, java.util.TimerTask, javax.swing.Timer,javax.swing.SwingWorker vit ng dng c nhiu cng vic thc hin ng thi v mi cngvic c thc hin lp li sau mt khong thi gian no .

    * C php lnhpublic void schedule(TimerTask task, long delay):

    task s c thc hin sau khong thi gian delay (milliseconds)public void schedule(TimerTask task, Date time)

  • 8/9/2019 Chuong I - NNJava

    14/27

    14

    task s c thc hin vo thi im xc nhv d: thc hin task lc 11:01 p.mCalendar calendar = Calendar.getInstance();calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 1);calendar.set(Calendar.SECOND, 0);Date time = calendar.getTime();timer = new Timer();

    timer.schedule(new Task(), time);

    public void schedule(TimerTask task, long delay, long period)public void schedule(TimerTask task, Date time, long period)

    Lp li task sau khong thi gian period (milliseconds)

    - public void cancel()Kt thc timer, loi b cc cng vic do timer sp t thc hin. Nu timer cha kt thc,chng trnh vn thc thi, nu mun kt thc ct c th s dng lnh System.exit(0)

    4.2 S dng lp ThreadJava cung cp lp java.lang.Thread vit tiu trnh dng tng qut hn. Pt start() s gi pt run()thc thi cng vic ca thread.4.3 S dng giao din RunnableNu lp tha k mt lp khc, v do java khng cho php a tha k, ta cn dng giao dinRunnable

    ng b cc tiu trnhThng thng cc tiu trnh thc thi c lp, khng cn quan tm ti hot ng ca tiu trnhkhc nhng nu cc tiu trnh dng chung ti nguyn, hoc cn phi phi hp hon thnhcng vic th ta cn phi ng b vic thc thi ca cc tiu trnh.

    on m truy xut ti nguyn dng chung m c kh nng xy ra li gi l min gng(CriticalSection). C th gii quyt li nu bo m ti mt thi im ch c mt tiu trnh truy xut tinguyn dng chung. Trong Java min gng l mt phng thc c khai bo bng t khosynchronized, mt i tng c min gng s l c quyn truy xut (ti mt thi im ch cmt tiu trnh truy xut min gng ca i tng)

    VIT NG DNG APPLET

    1. Gii thiuApplet l mt ng dng java, tha k lp java.applet.Applet hoc lp javax.swing.JApplet.

    Trong Applet khng c hm main nn khng th t thc thi, mun thc thi Applet cn nhngApplet vo trang web v trnh duyt web s thc thi Applet.

    Applet c th my Web Server, client dng browser yu cu Web Server gi cho clienttrang web c nhng Applet, trang web cng vi Applet c download v my client, trnhduyt my client chu trch nhim thng dch trang web v thc thi Applet.

  • 8/9/2019 Chuong I - NNJava

    15/27

    15

    Lp trnh Applet chnh l mt dng lp trnh mng dng n gin: vit applet my server,client dng browser ly applet v my client v cho thc thi. Applet thng chm v phidownload v my client, ngoi ra Applet cn tm n s khng an ton do Applet thc thi trnmy client.

    * Tnh an tonV l do an ton nn Applet b hn ch sau:

    - Khng th c/ghi file hoc thc thi ct trn my m Applet ang thc thi- Khng th kt ni vi my khc ngoi tr my cung cp Applet.- Khng th thc thi ct trn

    * S tha k ca lp Applet:

    Tt c cc lp u tha k lp java.lang.Object v lp ny t ng import vo tt c cc lpkhc.

    2. Cc pt c bit:public void init() { . . . }public void start() { . . . }public void stop() { . . . }public void destroy() { . . . }public void paint(Graphics g) {}

    - Khi Applet c download v my client th pt init() v start(), paint() c thc thi. Ptinit(), start() thng c cc lnh thc hin cc cng vic khi to ban u nh kt ni CSDL,m socket,Pt paint() v Applet.

    - Khi user chuyn qua trang khc th pt stop() c gi v khi user tr v trang chaApplet th pt start(), paint() li c gi. Pt stop() thng c cc lnh ngng thc hinApplet.

    - Khi Applet kt thc vic thc hin hoc khi ng trnh duyt th pt destroy() c gi. Ptdestroy() thng c cc lnh thc hin cc cng vic dn dp nh ng kt ni CSDL, ngsocket,

  • 8/9/2019 Chuong I - NNJava

    16/27

    16

    3. Thc thi Applet- To trang Web- Nhng Applet vo trang web

    - Dng trnh duyt, xem trang web c nhng applet4. S dng th - Trnh duyt gi tham s cho Applet:

    - Applet ly tham s do trnh duyt gipublic String getParameter(String name)

    - Xc nh th mc cha AppletMc nh browser tm Applet trong th mc cha file html, nu Applet trong gi, browser dng

    tn gi xy dng ng dn bn di tm cha file html. Nu applet ni khc, dng thuctnh CODEBASE xc nh v tr applet.

    Nu aURL l mt URL tng i th xt t v tr ca file html.V d:

  • 8/9/2019 Chuong I - NNJava

    17/27

    17

    5. Mt s phng thc thng dng- Xc nh th mc cha file d liuv d:

    Image image = getImage(getCodeBase(), "imgDir/a.gif");

    - Hin mt thng bo thanh trng thi (status bar)V d:

    showStatus("MyApplet: Loading image file " + file);- Hin ti liu trong browserpublic void showDocument(java.net.URL url)public void showDocument(java.net.URL url, String targetWindow)

    targetWindow c th c cc gi tr sau:

    "_blank" : hin ti liu trong mt ca s mi, khng c tn"" : hin ti liu trong ca s tn l "_self" :hin ti liu trong ca s v trong cng khung cha applet"_parent" :hin ti liu trong ca s cha applet nhng trong khung cha ca khung

    cha applet . Nu khng c khung cha th hin ging _self"_top" :hin ti liu trong ca s cha applet nhng trong khung mc cao nhtV d:

    AppletContext appletContext=getAppletContext();appletContext.showDocument(url);

    - Gi thng ip ti applet khcV l do an ton nn mt s browser yu cu cc applet phi cng mt tm trn cng mt serverv nhng trong cng trang. Mi applet phi c t tn dng thuc tnh NAME:

    hoc gi tn nh l tham s:

  • 8/9/2019 Chuong I - NNJava

    18/27

    18

    HEIGHT=35>+ Tm 1 applet

    String receiverName = ;Applet receiver = getAppletContext().getApplet(receiverName);((Receiver)receiver).processRequestFrom(myName);//gi pt ca receiver+ Tm tt c applet

    Enumeration e = getAppletContext().getApplets();- Thc thi file m thanh *.augetAudioClip(URL), getAudioClip(URL, String) : Tr v i tng s dng giao dinAudioClip, giao din AudioClip c cc pt sau:loop,play,stop.

    play(URL), play(URL, String) : thc thi AudioClip xc nh bi URL

    S DNG URL(Uniform Resource Locator)Khi nim:

    - URL L mt tham chiu n mt ti nguyn trn mng (a ch ti nguyn trn mng),Web Browser hoc cc ng dng khc dng URL tm ti nguyn trn mng. Gi java.netc lp URL dng biu din a ch URL

    - URL c dng chui gm: giao thc dng truy xut ti nguyn v tn ti nguyn.V d:

    C th dng cc giao thc khc nh: File Transfer Protocol (FTP), Gopher, File, News- Tn ti nguyn l thng tin y xc nh ti nguyn, thng tin ny ph thuc vo

    giao thc s dng, nhng thng c cc thng tin sau:

    Host Name Tn my cha ti nguyn.

    Filename ng dn ti ti nguyn

    Port Number S hiu cng dng khi kt ni

    i vi http, filename mc nh l index.html

    To v s dng i tng URL

    Phng thc nghaURL(String spec) To i tng URL t mt chui URLURL(String protocol, String host, int port,String file)

    To i tng URL t protocol, host, port v tnfile

    URL(String protocol, String host,String file)

    To i tng URL t protocol, host, port v tnfile, dng port mc nh

    Object getContent() Ly ni dung ca URLString getFile() Ly tn file cng ng dn ca URL

  • 8/9/2019 Chuong I - NNJava

    19/27

    19

    String getHost() Ly tn my ca URLint getPort() Ly s hiu cng ca URLString getProtocol() Ly tn protocol ca URLInputStream openStream() Kt ni ti url v m lung nhp c thng tin

    t urlURLConnection openConnection() M kt ni ti URL

    IV.CHNG IVV. LP TRNH CLIENT\SERVER

    I. Tng quan v lp trnh mng:

    1. Gii thiu- My tnh trn Internet lin lc vi nhau dng giao thc TCP (Transmission Control Protocol)

    hoc UDP (User Datagram Protocol).- Khi vit chng trnh Java lin lc trn mng l vit lp ng dng (lp application) v sdng nhng lp trong gi java.net truy xut lp TCP/UDP (lp transport).

    - Lp trnh client/server: L vit ng dng trn mng gm hai chng trnh: chng trnhclient v chng trnh server. Chng trnh client gi yu cu ti chng trnh server, ctserver x l yu cu v tr kt qa v cho ct client. Ct server c th phc v ng thi nhiuyu cu ca cc ct client.

    - Lp trnh WEB: l trng hp c bit ca lp trnh client/server. Ct client l ct Browser(trnh duyt web), ct server l Web Server nhn yu cu trang web t Browser, Web Servertm trang web gi v cho Browser, brower thc thi trang web hin kt qa trn mn hnhclient. Browser v web server lin lc qua giao thc HTTP thng qua cng mc nh l 80.Trang Web l file .html vit bng ngn ng HTML (HyperText Markup Language), Browser

    s thng dch trang web. Khi client mun yu cu trang web, dng browser g va chui c dngsau:

    http://NameServer:port/path/file.html

  • 8/9/2019 Chuong I - NNJava

    20/27

    20

    http l giao thc lin lc gia Browser v Web server, NameServer l tn my web server ang

    thc thi, port l s hiu cng web server s dng, path/file.html l trang web c yu cu.

    v d: http://www.microsoft.com/index.html (khng c port th mc nh l 80)

    Chui ny gi l chui nh v ti nguyn URL (Uniform Resource Locator) dng xcnh ti nguyn trn mng Internet. Ngoi giao thc HTTP cn c th s dng cc giao thckhc nh l FTP, Gopher, File, v News. Hin c cc Browser thng dng nh: InternetExplorer, Netscape Navigator, v cc Web Server nh:IIS (Internet Information Server), PWS(Personal Web Server), JRUN, Tomcat,

    2. Giao thc TCP/UDPa) Giao thc TCP:- Thit lp kt ni v duy tr kt ni.- m bo d liu gi, c nhn chnh xc v ng th t, ngc li s bo li.Cc giao thc Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), v Telnet lnhng ng dng dng kt ni TCP. My tnh lin lc dng giao thc TCP ging nh con ngilin lc bng in thoi.b) Giao thc UDP:- Khng duy tr kt ni- Khng m bo d liu gi, c nhn chnh xc v ng th t,- Gi/nhn d liu dng gi (datagram), cc gi gi/nhn c lp vi nhau.UDP nhanh hn TCP v khng kim tra d liu, khng cn duy tri kt ni. Nhng ng dng nh hi gi, nhn tin, lnh ping nn dng UDP. Mytnh lin lc dng giao thc UDP ging nh con ngi lin lc bng th tn.

    Lu : c nhng firewalls v routers khng cho php gi/nhn gi UDP do admin t cuhnh cm gi UDP.3. a ch IP, cng (Port), socket:- a ch IP: l s 32 bit m IP dng xc nh my tnh.- Cng: l s 16 bit m TCP/UDP dng xc nh ng dng trn my tnh s nhn d liu.

    D liu khi gi i, c gi km theo a ch IP ca my nhn v cng m ng dng trnmy nhn s dng. S hiu cng trong phm vi t 0 65,535, nhng s hiu cng t 0 n1023 nn hn ch s dng v chng c dng cho nhng dch v thng dng nh HTTP,FTP.

    Dch v CngFTP (truyn /nhn file) 21HTTP (web) 80TELNET (truy xut my tnh t xa) 23

    SMTP (gi mail) 25POP3 (ly mail) 110

    - Socket: l cu trc d liu lu tr cc thng tin dng kt ni, d liu c gi/nhn thngqua socket. Trong lin lc TCP, ng dng server kt buc mt socket vi mt cng c th, nghal ng dng server ng k nhn tt c d liu gi cho cng .

  • 8/9/2019 Chuong I - NNJava

    21/27

    21

    Trong lin lc UDP, d liu gi/nhn dng gi. Gi cha s hiu cng, UDP s gi gi cho ngdng tng ng.

    Lp trnh TCP - S dng socket

    1. Khi nim:- Socket l mt u trong kt ni lin lc hai chiu gia hai chng trnh trn mng. Gi

    java.net cung cp lp Socket ci t kt ni pha client v ServerSocket ci t kt nipha server.- SocketServer i, lng nghe yu cu kt ni t SocketClient

    Khi chp nhn kt ni, SocketServer to mt socket mi kt buc vi mt cng khc phc v cho client kt ni, trong khi SocketServer vn tip tc lng nghe yu cu kt ni t

    cc client khc.

    Sau server v client s lin lc vi nhau thng qua socket ca chng.Lu :

    + Client dng cng cc b trn my ca client.+ Nu kt ni ti Web Server th lp URL thch hp hn lp Socket, thc ra lp URL cng s sdng lp socket

    2. Cu trc chng trnh client

  • 8/9/2019 Chuong I - NNJava

    22/27

    22

    STT Thao tc

    S dng lnh

    1 M socket (dng kt ni vi server) Socket cs = new Socket("ServerName", port);2 M lung c (dng c dl do server

    gi)BufferedReader in = new BufferedReader(new InputStreamReader( cs.getInputStream()));

    3 M lung ghi (dng gi dl cho server) PrintWriter out = new PrintWriter(cs.getOutputStream(), true);

    4 M lung c dl t bn phm (nu cn) BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in) );

    5 Gi dl cho server out.println(String str);6 Ly dl do server gi String str=in.readLine();7 ng cc lung c, ghi, ng socket in.close();out.close(); sdtIn.close(); cs.close();Ghi ch:- Reader, writer: c th c ghi k t Unicode qua socket- ng lung c/ghi, sau mi ng socket

    * Chng trnh client muimport java.io.*;import java.net.*;public class Client{

    public static void main(String[] args) throws IOException{

    Socket cs = new Socket("ServerName", 1234);PrintWriter out = new PrintWriter(cs.getOutputStream(), true);

    BufferedReader in = new BufferedReader(new InputStreamReader( cs.getInputStream() ));//cc lnh gi, nhn d liu vi serverout.close(); in.close(); cs.close();

    }}

    3. Cu trc chng trnh server

    STT

    Thao tcS dng lnh

    1 M socket (dng kt ni vi client) ServerSocket ss = new ServerSocket(port);2 Ch client kt ni v chp nhn kt ni Socket cs= ss.accept();3 M lung c (dng c dl do server

    gi)BufferedReader in = new BufferedReader(new InputStreamReader( cs.getInputStream()

    ));4 M lung ghi (dng gi dl cho client) PrintWrite out = new PrintWriter(cs.getOutputStream(), true);

    5 To lung c dl t bn phm (nu cn) BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in) );

    6 Gi dl cho client out.println(String str);7 Ly dl do client gi String str=in.readLine();8 ng cc lung c/ghi, ng cc socket in.close();out.close(); sdtIn.close(); cs.close();

    ss.close();

  • 8/9/2019 Chuong I - NNJava

    23/27

    23

    * Chng trnh server mu (1 client)import java.net.*;import java.io.*;public class Server {

    public static void main(String[] args) throws IOException{

    ServerSocket ss = new ServerSocket(1234);Socket cs = ss.accept();PrintWriter out = new PrintWriter(cs.getOutputStream(), true);BufferedReader in = new BufferedReader(new InputStreamReader(

    cs.getInputStream()));//cc lnh gi/nhn d liu vi mt client

    out.close(); in.close(); cs.close(); ss.close();}

    }

    phc v nhiu client kt ni ng thi th server cn to ra cc tiu trnh, mi tiu trnh s

    gi/nhn d liu vi mt client.

    * Chng trnh server mu (nhiu client)import java.net.*;import java.io.*;public class Server{

    public static void main(String[] args) throws IOException{

    ServerSocket ss = new ServerSocket(1234); //c th thay port khcboolean listening = true;while (listening){

    Socket cs=ss.accept();new ServiceThread(cs).start();

    }ss.close();

    }}

    //lp ServiceThread : tiu trnh phc v cho mt clientimport java.net.*;import java.io.*;public class ServiceThread extends Thread{

    private Socket socket = null;public ServiceThread(Socket socket)

  • 8/9/2019 Chuong I - NNJava

    24/27

    24

    {super("ServiceThread");this.socket = socket;

    }public void run()

    {try

    {PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

    BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream()));

    //cc lnh gi, nhn d liu vi mt clientout.close(); in.close(); socket.close();

    } catch (IOException e) { e.printStackTrace(); }}

    }

    * Chng trnh server mu (nhiu client) (cch khc)

    import java.net.*;import java.io.*;public class Server extends Thread{

    private Socket socket = null;public Server(Socket socket)

    {super("ServiceThread");

    this.socket = socket;}public static void main(String[] args) throws IOException

    {ServerSocket ss = new ServerSocket(1234); //c th thay port khcboolean listening = true;while (listening){

    Socket cs=ss.accept();new Server(cs).start();

    }

    ss.close();}public void run()

    {try

    {PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

  • 8/9/2019 Chuong I - NNJava

    25/27

    25

    BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream()));

    //cc lnh gi, nhn d liu vi mt clientout.close(); in.close(); socket.close();

    } catch (IOException e) { e.printStackTrace(); }}

    }

    Lp trnh UDP- s dng datagram

    1. Khi nimDatagram l gi cha d liu c UDP s dng gi d liu qua mng. Th t nhn, nidung cc gi khng m bo ging nh khi gi. Gi java.net c cc lp DatagramSocket vDatagramPacket, MulticastSocket dng gi/nhn gi.

    2. Cu trc chung trnh clientSTT

    Thao tc S dng lnh1 M mt datagram socket dng

    lin lc vi my serverDatagramSocket socket = new DatagramSocket();

    2 To gi gi v gi gi chad liu

    byte[] buf = new byte[256]; //mng dng cha dlString str=; //d liu cn gibuf=str.getBytes(); //ct dl vo mngInetAddress address =InetAddress.getByName(NameServer); /ly IP ca myserverDatagramPacket packet = new DatagramPacket(buf,

    buf.length, address,1234); //to gi gisocket.send(packet); //gi gi

    3 To gi nhn v nhn gi trli

    packet = new DatagramPacket(buf, buf.length);socket.receive(packet);

    4 Ly d liu trong gi String received = new String(packet.getData()).trim();

    5 ng socket socket.close();

    * Chng trnh client muimport java.io.*;import java.net.*;

    public class Client {public static void main(String[] args) throws IOException {

    DatagramSocket socket = new DatagramSocket();byte[] obuf = new byte[256];InetAddress address = InetAddress.getByName("NameServer');DatagramPacket opacket = new DatagramPacket(obuf, obuf.length, address,1234);socket.send(opacket);DatagramPacket ipacket = new DatagramPacket(ibuf, ibuf.length);

  • 8/9/2019 Chuong I - NNJava

    26/27

    26

    socket.receive(packet);String received = new String(packet.getData()).trim();

    //cc lnh x l d liusocket.close();

    }}

    3. Cu trc chung trnh serverSTT

    Thao tcS dng lnh

    1 To mt datagram socketdng lin lc vi myclient

    DatagramSocket socket = new DatagramSocket(1234);

    2 To gi nhn v nhn gi doclient gi

    byte[] buf = new byte[256];packet = new DatagramPacket(buf, buf.length);socket.receive(packet);

    3 Ly d liu trong gi String received = new String(packet.getData()).trim();

    4 To gi gi v gi gi tr licho client

    String sendStr =chuoi dl goi;buf = sendStr.getBytes();InetAddress address = packet.getAddress();int port = packet.getPort();packet = new DatagramPacket(buf, buf.length, address,port);

    socket.send(packet);5 ng socket socket.close();Ct server khng cn to tiu trnh v khng c kt ni no cn duy tr gia client v server. phc v nhiu client, chng trnh server ch cn dng mt vng lp ln lt nhn cc gi cacc client v tr li. Nu cng vic tr li thc hin tn nhiu thi gian th khi nn to tiutrnh thc hin cng vic tr li.

    * Chng trnh server mu

    import java.io.*;import java.net.*;public class Server {

    public static void main(String[] args) throws IOException {DatagramSocket socket = new DatagramSocket(1234);while (true) {

    byte[] buf = new byte[256];

    DatagramPacket packet = new DatagramPacket(buf, buf.length);socket.receive(packet);String received = new String(packet.getData()).trim();

    //x l dl nhnString sendStr =chuoi dl goi;buf = sendStr.getBytes();InetAddress address = packet.getAddress();int port = packet.getPort();

  • 8/9/2019 Chuong I - NNJava

    27/27

    packet = new DatagramPacket(buf, buf.length, address, port);socket.send(packet);

    }socket.close();

    }

    - Ht -