SlideShare ist ein Scribd-Unternehmen logo
1 von 111
Downloaden Sie, um offline zu lesen
1




                                   Hand-on
                                   Exercises

                              การเขยนโปรแกรมเวบ
                               Java Servlet / JSP
                                     โดยใช
                GlassFish and NetBeans 6.5


                       Dr.Thanachart Numnonda
                                 and
                   Asst Prof.Thanisa Kruawaisayawan


                                    July 2009




การเขยนโปรแกรม Java Servet / JSP             Thanachart Numnonda / Thanisa Kruawaisayawan
2


สารบญ
Exercise 1 การสรางโปรเจค Web Application และไฟล HTML........................................................................5
  1.1 การสราง Web Application Project..................................................................................................5
  1.2 การพฒนาโปรแกรม addCustomer.html................................................................................................9
  1.3 การทดสอบโปรแกรม..........................................................................................................................11
Exercise 2 การเขยนโปรแกรม Java Servlet เพ!ออ"านค"าพาราม#เตอร.........................................................................13
  2.1 การพฒนาโปรแกรม CustomerServlet.java.........................................................................................13
     2.1.1 การอ"านค"าพาราม#เตอรจาก addCustomer.html ...............................................................................13
     2.1.2 การแสดงรายละเอยดของค"าต"างๆ.......................................................................................................14
  2.2 ข&นตอนการพฒนาโปรแกรม CustomerServlet.java ...............................................................................14
  2.3 การทดสอบโปรแกรม..........................................................................................................................19
  2.4 การปรบปร'งโปรแกรมเพ!อใหแสดงผลภาษาไทยและเรยกไฟล addCustomer.html เม!อเร#!มตน......................................20
Exercise 3 โปรแกรมเวบส.าหรบการท.าโพล........................................................................................................22
  3.1 การพฒนาโปรแกรม vote.html............................................................................................................22
  3.2 การพฒนาโปรแกรม VoteServlet.java................................................................................................23
     3.2.1 ก.าหนดตวแปร counter และ lang ...............................................................................................24
     3.2.2 อ"านค"าพาราม#เตอรต"างๆท!ส"งมาจาก vote.html และท.าการประมวลผล............................................................24
     3.2.3 การแสดงผลการโหวต..................................................................................................................24
  3.3 ข&นตอนการพฒนาโปรเจค Voter ...........................................................................................................25
  3.4 การปรบปร'งโปรแกรม VoteServlet.java..............................................................................................29
     3.4.1 ก.าหนดตวแปร voters................................................................................................................29
     3.4.2 การอ"านหมายเลขไอพของผ/ใช..........................................................................................................29
Exercise 4 การเช!อมต"อกบ MySQL Database.............................................................................................32
  4.1 การต#ดต&งโปรแกรมฐานขอม/ล MySQL....................................................................................................32
  4.2 การสราง Database Connection.....................................................................................................32
  4.3 การสรางตาราง books.......................................................................................................................35
  4.4 การใชค.าส!ง SQL ใน NetBeans........................................................................................................37
Exercise 5 การพฒนาโปรแกมเวบเพ!อต#ดต"อกบฐานขอม/ล..........................................................................................39
  5.1 การสราง Web Application Project................................................................................................39
  5.2 การพฒนาโปรแกรม addBook.html....................................................................................................39
  5.3 การพฒนาโปรแกรม Thankyou.html...................................................................................................41
  5.4 การพฒนาโปรแกรม AddBookServlet.java.........................................................................................41
     5.4.1 การอ"านค"าพาราม#เตอรจาก addBook.html ......................................................................................42
     5.4.2 การเช!อมต"อกบฐานขอม/ล...............................................................................................................42
     5.4.3 เพ#!มรายช!อหนงสอใหม"ลงในฐานขอม/ล ................................................................................................43
     5.4.4 การเรยกเวบเพจ Thankyou.html ...............................................................................................43
  5.5 ข&นตอนการพฒนาโปรแกรม AddBookServlet.java ...............................................................................45
  5.6 ทดสอบโปรแกรม..............................................................................................................................47
Exercise 6 โปรแกรมเวบเพ!อสาธ#ตขอบเขตของออปเจค............................................................................................49
  6.1 การพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Request .....................................................................49
     6.1.1 ข&นตอนการพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Request ....................................................52
     6.1.2 ข&นตอนการทดสอบโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Request....................................................52

การเขยนโปรแกรม Java Servet / JSP                                                    Thanachart Numnonda / Thanisa Kruawaisayawan
3

  6.2 การพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Session .....................................................................52
     6.2.1 ข&นตอนการพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Session .....................................................55
     6.2.2 ข&นตอนการทดสอบโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Session ...................................................55
  6.3 การพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Application................................................................55
     6.3.1 ข&นตอนการพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Application...............................................58
     6.3.2 ข&นตอนการทดสอบโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Application..............................................58
Exercise 7 การพฒนาโปรแกรม Servlet โดยใชคลาสประเภท Web Listener..........................................................59
  7.1 การพฒนาโปรแกรม Init.java..............................................................................................................59
  7.2 การปรบปร'งโปรแกรม AddBookServlet.java .....................................................................................64
  7.3 ทดสอบโปรแกรม..............................................................................................................................65
Exercise 8 การพฒนาโปรแกรม Servlet Filter ..............................................................................................67
  8.1 การพฒนาโปรแกรม Servlet Filter......................................................................................................67
  8.2 การเขยนหนา Login.........................................................................................................................68
     8.2.1 ข&นตอนการพฒนาโปรแกรม ...........................................................................................................69
  8.3 การเขยน Servlet Filter..................................................................................................................70
     8.3.1 ข&นตอนการพฒนาโปรแกรม ...........................................................................................................71
  8.4 การเขยนโปรแกรม ShowServlet .......................................................................................................73
     8.4.1 ข&นตอนการพฒนาโปรแกรม ...........................................................................................................73
  8.5 ข&นตอนการทดสอบโปรแกรม .................................................................................................................74
Exercise 9 การเขยนโปรแกรม JSP เพ!อแสดงผลลพธ............................................................................................75
  9.1 การพฒนาโปรแกรม hello.jsp.............................................................................................................75
  9.2 การพฒนาโปรแกรม viewBook.jsp....................................................................................................76
     9.2.1 การก.าหนด Tag Library .........................................................................................................76
     9.2.2 การก.าหนด Datasource ..........................................................................................................76
     9.2.3 การใชค.าส!ง sql:query .............................................................................................................77
     9.2.4 การใชค.าส!ง c:forEach เพ!อแสดงผล ..............................................................................................77
Exercise 10 การพฒนาโปรแกรมเวบ Online Book Store................................................................................80
  10.1 การพฒนาโปรแกรม selectBooks.jsp................................................................................................80
  10.2 การพฒนาโปรแกรม Book.java.........................................................................................................84
                         3
  10.3 การพฒนาโปรแกรม Cart.java...........................................................................................................85
                           3
  10.4 การพฒนาโปรแกรม ProcessSelection.java......................................................................................86
  10.5 การพฒนาโปรแกรม Init.java ...........................................................................................................88
  10.6 การพฒนาโปรแกรม viewCart.jsp.....................................................................................................88
  10.7 ข&นตอนการทดสอบโปรแกรม ...............................................................................................................89
Exercise 11 การสราง Custom Tags ส.าหรบโปรแกรม JSP...............................................................................92
  11.1 การพฒนาโปรแกรม hello.jsp............................................................................................................92
  11.2 การพฒนาโปรแกรม helloTag.jsp.....................................................................................................94
     11.2.1 สราง Tag Library Descriptor.............................................................................................94
     11.2.2 สรางไฟล Tag Handler.........................................................................................................95
     11.2.3 เขยนโปรแกรม helloTag.jsp...................................................................................................97
  11.3 การพฒนาโปรแกรม helloJSTL.jsp...................................................................................................98
  11.4 การพฒนาโปรแกรม helloTagFile.jsp...............................................................................................98
     11.4.1 สราง Tag File....................................................................................................................99


การเขยนโปรแกรม Java Servet / JSP                                                    Thanachart Numnonda / Thanisa Kruawaisayawan
4

     11.4.2 เขยนโปรแกรม helloTagFile.jsp...........................................................................................100
Exercise 12 การพฒนาโปรแกรมเวบโดยใช Strut Framework .........................................................................101
  12.1 การสราง Web Application Project............................................................................................101
  12.2 การพฒนาโปรแกรม BookActionForm.java...................................................................................101
  12.3 การพฒนาโปรแกรม AddBook.jsp..................................................................................................106
  12.4 การพฒนาโปรแกรม AddBookAction.java.....................................................................................107
  12.5 การพฒนาไฟล ApplicationResource.properties..........................................................................109
  12.6 การพฒนาโปรแกรม Init.java และ Thankyou.html...........................................................................109
  12.7 การพฒนาไฟล Struts-config.xml.................................................................................................109
  12.8 การทดสอบโปรแกรม......................................................................................................................110
Exercise 13 การพฒนาโปรแกรมเวบโดยใช JSF Framework............................................................................112
  13.1 การสราง Web Application Project............................................................................................112
  13.2 การพฒนาโปรแกรม JSF Managed Bean........................................................................................113
  13.3 การพฒนาโปรแกรม PriceValidator.java........................................................................................115
  13.4 การพฒนาโปรแกรม AddBook.jsp..................................................................................................116
  13.5 การก.าหนด Page Navigation......................................................................................................117
  13.6 การก.าหนด Error Message.........................................................................................................118
  13.7 การพฒนาโปรแกรม Thankyou.html, error.html และ Init.java.........................................................119
  13.8 การพฒนาโปรแกรม AddBookServlet.java.....................................................................................119
  13.9 การทดสอบโปรแกรม......................................................................................................................121
Exercise 14 การพฒนาโปรแกรมเวบโดยใช Visual JSF....................................................................................122
  14.1 การสราง Web Application Project............................................................................................122
  14.2 การพฒนาโปรแกรม HelloWeb......................................................................................................122
  14.3 การทดสอบโปรแกรม......................................................................................................................126
  14.4 การปรบปร'งโปรแกรม HelloWeb....................................................................................................127
  14.5 การทดสอบโปรแกรม......................................................................................................................129




การเขยนโปรแกรม Java Servet / JSP                                                  Thanachart Numnonda / Thanisa Kruawaisayawan
5


                Exercise 1 การสรางโปรเจค Web Application และไฟล
                                    HTML
        แบบฝกหดนจะเปนการสรางโปรเจค Web Application และพฒนาหนาเวบเพจเพอใหผ#ใชป%อนขอม#ล
ของล#กคา โดยเวบเพจจะพฒนาดวยภาษา HTML ซ,งจะท.าหนาเปนส/วนอ0นพ1ตของโปรแกรมเพอใหผ#ใชป%อน
ขอม#ลผ/าน Web Browser

ขนตอนในการพฒนาโปรแกรม
   1. สรางโปรเจค Web Application
   2. พฒนาโปรแกรม addCustomer.html

1.1    การสราง Web Application Project

       เราจะเร0มตนสรางโปรแกรม Web-Base Application โดยการสราง Project ใหม/ข,นมาใน NetBeans
ซ,งมขนตอนดงน
    1. เลอกเมน# File > New Project
    2. ในไดอะลอก New Project ใหเลอก Categories เปน Java Web และเลอก Projects เปน Web
       Application ดงร#ปท 1.1




                                รปท 1.1 การสรางโปรเจค Web Application
      3.   กด Next ก.าหนด Project Name: เปน WebApp แลวเลอก Project Location: เปน Directory ทเรา

การเขยนโปรแกรม Java Servet / JSP                          Thanachart Numnonda / Thanisa Kruawaisayawan
6

         ตองการจะเกบไฟล5ไว ดงร#ปท 1.2




                                        รปท 1.2 การกาหนดชอโปรเจค

    4.   จากนนใหเลอก Server เปน Apache Tomcat 6.0.18 ดงร#ปท 1.3




                                   รปท 1.3 การเลอก Server ทจะตดตงโปรเจค


การเขยนโปรแกรม Java Servet / JSP                            Thanachart Numnonda / Thanisa Kruawaisayawan
7

      5.   กดป16ม Finish โปรแกรมจะท.าการสราง Projects และสรางไฟล5ต/างๆ ข,นมาโดยมโครงสรางของไฟล5ดง
           ร#ปท




                                   รปท 1.4 โครงสรางไฟล!ของโปรเจค WebApp

1.2    การพฒนาโปรแกรม addCustomer.html

       โปรแกรม addCustomer.html เปนเวบเพจทใชแสดงฟอร5มส.าหรบป%อนขอม#ลล#กคา เขาในฐานขอม#ล
customers ซ,งจะสรางข,นในแบบฝกหดถดไป โดยมร#ปแบบดงร#ปท 1.5 โปรแกรม addBook.html มขนตอนการ
พฒนาดงน
    1. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด WebApp จากนนเลอกค.าสง New > Other
    2. ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย
       ใต Category น ใหเราเลอก HTML แลวกด Next
    3. ก.าหนด HTML File Name: เปน addCustomer แลวกด Finish
    4. เขยน source code ของไฟล5 addCustomer.html ตาม Listing ท 1.1 โดยเราสามารถทจะลาก icon
       ประเภท HTML Forms ทอย#/ในหนาต/าง Palette เพอสามารถใหเขยนโปรแกรมไดง/ายข,น




การเขยนโปรแกรม Java Servet / JSP                            Thanachart Numnonda / Thanisa Kruawaisayawan
8




                                   รปท 1.5 หนาเวบเพจ addCustomer.html

Listing ท 1.1 โปรแกรม addCustomer.html

<html>
 <head>
  <title> Add Customer </title>
 </head>
 <body>
    <H1> Add a new customer profile </H1>
    <p>
    <form action="addCustomer.do" method="POST">
       Customer ID : <input name="id" /> <br>
       Name: <input name="name" /> <br>
       Address: <textarea name="addr" rows="4" cols="20"></textarea> <br>
       Mobile: <input name="mobile" size="9" /> <br>
       Fax: <input name="fax" size="9" /> <br>
       E-mail: <input name="email" size="25" /> <br><br>
       <input type="submit" value="Add" />
    </form>
 </body>
</html>

1.3    การทดสอบโปรแกรม

      1.   ท.าการ Clean and Build และ Undeploy and Deploy โปรแกรม WebApp
      2.   Run โปรแกรม WebApp
      3.   ท Web Browser เปลยน URL เปน http://localhost:8080/WebApp/addCustomer.html จะได
           ผลลพธ5ดงร#ปท 1.6
การเขยนโปรแกรม Java Servet / JSP                           Thanachart Numnonda / Thanisa Kruawaisayawan
9

หมายเหต1 หมายเลขพอร5ตโดยพนฐานจะเปน 8080 ยกเวนว/าจะก.าหนดหมายเลขอน




                           รปท 1.6 ผลลพธ!ทไดจากการรนโปรแกรม addCustomer.html




การเขยนโปรแกรม Java Servet / JSP                          Thanachart Numnonda / Thanisa Kruawaisayawan
10


                 Exercise 2 การเขยนโปรแกรม Java Servlet เพออ!านค!า
                                              พาราม"เตอร

เนอหาทตองศกษากอน การสรางโปรเจค Web Application และสรางไฟล5 HTML

       แบบฝกหดนจะเปนการพฒนาโปรแกรม Java Servlet เพอแสดงรายละเอยดของค/าพาราม0เตอร5ทผ#ใช
ป%อนเขามาออกทางโปรแกรม Web Browser และแสดงผลการออกออกทาง Web Browser

2.1     การพฒนาโปรแกรม CustomerServlet.java

      โปรแกรม CustomerServlet.java เปนโปรแกรมทถ#กเรยกใชโดย addCustomer.html เมอผ#ใชกดป16ม
Add โปรแกรมนจะท.าหนาทน.าค/าพาราม0เตอร5ต/างๆ ทผ#ใชป%อนมาแสดงผล โดยมขนตอนการท.างานดงน

      1.   อ/านค/าพาราม0เตอร5ต/างๆ ทส/งมาจาก addCustomer.html
      2.   แสดงรายละเอยดของค/าต/างๆ

2.1.1      การอ/านค/าพาราม0เตอร5จาก addCustomer.html

           เวบเพจ addCustomer.html จะส/งขอม#ลของรายชอหนงสอใหม/ผ/านมาทางพาราม0เตอร5ต/างๆ ดงน
               ● id รหสของล#กคา

               ● name ชอล#กคา

               ● addr ทอย#/ล#กคา

               ● mobile หมายเลขโทรศพท5มอถอ

               ● fax หมายเลข fax

               ● email ของล#กคา


         พาราม0เตอร5ต/างๆ เหล/านจะถ#กส/งผ/านโปรโตคอล Http และในโปรแกรมเราสามารถทจะอ/านค/าพารา-
ม0เตอร5เหล/านไดจากออปเจค request โดยเรยกใชเมธอด getParameter() ซ,งโปรแกรมส/วนนจะมค.าสงต/างๆ
ดงน
                  String id = request.getParameter("id");
                  String name = request.getParameter("name");
                  String addr = request.getParameter("addr");
                  String mobile = request.getParameter("mobile");
                  String fax = request.getParameter("fax");
                  String email = request.getParameter("email");



การเขยนโปรแกรม Java Servet / JSP                                Thanachart Numnonda / Thanisa Kruawaisayawan
11

2.1.2      การแสดงรายละเอยดของค/าต/างๆ


      โปรแกรม Servlet จะสามารถแสดงผลออกทาง Web Browser ไดโดยการเขยนโคด HTML ภายใน ค.าสง
      out.println() โดยมค.าสงในเมธอด processRequest() ดงน

               response.setContentType("text/html;charset=UTF-8");
               PrintWriter out = response.getWriter();

               out.println("<html>");
               out.println("<head>");
               out.println("<title>Customer Information</title>");
               out.println("</head>");
               out.println("<body>");

               String id = request.getParameter("id");
               String name = request.getParameter("name");
               String addr = request.getParameter("addr");
               String mobile = request.getParameter("mobile");
               String fax = request.getParameter("fax");
               String email = request.getParameter("email");

               out.println("<h1> Customer Information </h1>");
               out.println("<b>ID: </b>" + id + "<BR>");
               out.println("<b>Name: </b>" + name + "<BR>");
               out.println("<b>Address: </b>" + addr + "<BR>");
               out.println("<b>Mobile: </b>" + mobile + "<BR>");
               out.println("<b>Fax: </b>" + fax + "<BR>");
               out.println("<b>E-mail: </b>" + email + "<BR>");

               out.println("</body>");
               out.println("</html>");

               out.close();



2.2     ขนตอนการพฒนาโปรแกรม CustomerServlet.java

           เราสามารถทจะพฒนาโปรแกรม CustomerServlet.java ตามขนตอนดงน

      1.   เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด WebApp จากนนเลอกค.าสง New > Other...
      2.   ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย
           ใต Category น ใหเราเลอก Servlet แลวกด Next ดงร#ปท 2.1




การเขยนโปรแกรม Java Servet / JSP                              Thanachart Numnonda / Thanisa Kruawaisayawan
12




                                      รปท 2.1 การเลอกไฟล!ประเภท Servlet

    3.   ก.าหนด Class Name: เปน CustomerServlet และก.าหนด Package เปน servlet ดงร#ปท 2.2




                                         รปท 2.2 การกาหนดชอ Servlet

    4.    กด Next ก.าหนด       URL Pattern(s): เปน /addCustomer.do ดงร#ปท 2.3




การเขยนโปรแกรม Java Servet / JSP                              Thanachart Numnonda / Thanisa Kruawaisayawan
13




                                   รปท 2.3 การกาหนด URL Pattern

      5.   กด Finish โปรแกรม NetBeans จะสรางไฟล5 CustomerServlet.java ไวภายใต Source Packages
           โดยจะอย#/ใน Directory ชอ servlet
      6.   ในหนาต/าง editor ใหแกไข sourcecode ของไฟล5 CustomerServlet.java โดยม source code ของ
           เมธอด processRequest ตามหวขอ 2.1.2

2.3    การทดสอบโปรแกรม

      1.   ท.าการ Build และ Deploy โปรแกรม WebApp
      2.   Run โปรแกรม WebApp
      3.   ท Web Browser เปลยน URL เปน http://localhost:8080/WebApp/addCustomer.html
      4.   ทดลองป%อนขอม#ลดงร#ป
      5.   โปรแกรมจะแสดงผลดงร/ปท! 2.4 และ 2.5




การเขยนโปรแกรม Java Servet / JSP                          Thanachart Numnonda / Thanisa Kruawaisayawan
14




                                   รปท 2.4 การป+อนขอมลหนา addCustomer.html




                              รปท 2.5 ผลลพธ!จากการเรยกโปรแกรม CustomerServlet


การเขยนโปรแกรม Java Servet / JSP                             Thanachart Numnonda / Thanisa Kruawaisayawan
15

2.4    การปรบปรงโปรแกรมเพอใหแสดงผลภาษาไทยและเร%ยกไฟล' addCustomer.html เมอเร(มตน

      เราสามารถท!จะปรบปร'งโปรเจคน&เพ!อใหเรยกไฟล addCustomer.html โดยอตโนมต#เม!อเร#!มตนรน
โปรแกรม โดยการก.าหนดพาราม#เตอร Welcome Files ใหเป6นไฟลดงกล"าว โดยมข&นตอนดงน&

      1.   ในหนาต/าง Projects ขยายโหนด WebApp > Web Pages > WEB-INF
      2.   เลอกไฟล5 web.xml แลวเลอกแทป Pages ท.าการแกไข Welcome Files เปน addCustomer.html ดง
           ร#ปท 2.6




                                       รปท 2.6 การจดการไฟล! web.xml

       นอกจากนถาเราทดลองป%อนขอม#ลภาษาไทย ลงไปในจะพบว/า โปรแกรม Web Browser บางตวจะแสดง
ผลลพธ5ภาษาไทยไม/ถ#กตอง เราสามารถแกไขไดโดยการก.าหนดใหการเขารหสของพาราม0เตอร5ทส/งมาเปน UTF-
8 โดยเพ0มค.าสงดงน

                  request.setCharacterEncoding("UTF-8");




การเขยนโปรแกรม Java Servet / JSP                           Thanachart Numnonda / Thanisa Kruawaisayawan
16


                             Exercise 3 โปรแกรมเวบส%าหรบการท%าโพล

เนอหาทตองศกษากอน การเขยนโปรแกรม Java Servlet เพออ/านค/าพาราม0เตอร5

      แบบฝกหดนจะเปนการพฒนาโปรแกรม Java Servlet เพอท.า Poll โดยใหผ#ใชสามารถทจะโหวตเลอก
ภาษาคอมพ0วเตอร5ทชอบได แลวโปรแกรมจะแสดงผลการโหวตทาง Web Browser

3.1   การพฒนาโปรแกรม vote.html

        โปรแกรม vote.html เปนหนาเวบทใหผ#ใชสามารถทจะท.าการโหวตเลอกภาษาคอมพ0วเตอร5ได โดยเมอผ#
ใชกดป16ม Vote โปรแกรมเวบกจะไปท.าการเรยก url ทชอ processVote โปรแกรมนมหนาเวบดงร#ปท 3.1




                                   รปท   3.1 การแสดงผลของโปรแกรม vote.html

และม sourcecode ดง Listing ท 3.1

Listing ท 3.1 โปรแกรม vote.html

<html>
 <head>
  <title> Web Voting</title>
 </head>
 <body>
   <form action="processVote" method="POST">
       Select a computer language <BR>

        <input type="radio" name="lang" value="1" /> Java <br>
        <input type="radio" name="lang" value="2" /> C# <br>
        <input type="radio" name="lang" value="3" /> C <br>
        <input type="radio" name="lang" value="4" /> Pascal <br>

การเขยนโปรแกรม Java Servet / JSP                              Thanachart Numnonda / Thanisa Kruawaisayawan
17

           <input type="submit" value="Vote" />

    </form>
 </body>
</html>

3.2     การพฒนาโปรแกรม VoteServlet.java

       โปรแกรม VoteServlet.java เปนโปรแกรมทถ#กเรยกใชโดย vote.html เมอผ#ใชกดป16ม Vote โปรแกรม
นจะท.าหนาทเพอน.าค/าทผ#ใชโหวตมาประมวลผล โดยมขนตอนการท.างานดงน

      1.    ก.าหนดตวแปร counter และ lang
      2.    อ/านค/าพาราม0เตอร5ต/างๆทส/งมาจาก vote.html และท.าการประมวลผล
      3.    แสดงผลการโหวต

3.2.1      ก.าหนดตวแปร counter และ lang

       ตวแปร count เปนอะเรย5เพอทจะเกบจ.านวนผลโหวตของภาษาคอมพ0วเตอร5แต/ละภาษา และตวแปร lang
เปนอะเรย5ของ String เพอทจะเกบรายชอภาษาคอมพ0วเตอร5 ตวแปรทงสองเปนตวแปรของออปเจคทจะประกาศ
นอกเมธอด โดยมค.าสงประกาศดงน
              String []lang ={"Java", "C#", "C", "Pascal"};
              int []count = new int[4];


3.2.2      อ/านค/าพาราม0เตอร5ต/างๆทส/งมาจาก vote.html และท.าการประมวลผล

        เวบเพจ vote.html จะส/งขอม#ลของการโหวตมาในพาราม0เตอร5ทชอ lang โดยจะมค/าเปนหมายเลข 1-
4 ในทนจะมค.าสง request.getParameter เพอจะอ/านค/าทโหวตมา จากนนจะท.าการแปลงค/าซ,งเปน String ให
เปนค/าจ.านวนเตม จากนนจะเปนการเพ0มจ.านวนโหวตในตวแปร count ตามค/า index ทสอดคลองกบภาษาท
โหวตมา โดยมค.าสงต/างๆ ดงน
                String vote = request.getParameter("lang");
                int voteNum = Integer.parseInt(vote) – 1;
                count[voteNum]++;

3.2.3      การแสดงผลการโหวต

           ค.าสงแสดงผลการโหวตจะเปนค.าสงเพอแสดงค/าของตวแปร count โดยมค.าสงดงน
                for (int i = 0; i < count.length; i++) {
                   out.println(lang[i] +" = " + count[i] + "<BR>");


การเขยนโปรแกรม Java Servet / JSP                                Thanachart Numnonda / Thanisa Kruawaisayawan
18

               }

         โปรแกรม VoteServlet.java จะม sourcecode ดง Listing ท 3.2


Listing ท 3.2 โปรแกรม VoteServlet.java

import java.io.*;
import java.util.HashSet;

import javax.servlet.*;
import javax.servlet.http.*;

public class VoteServlet extends HttpServlet {

   String []lang ={"Java", "C#", "C", "Pascal"};
   int []count = new int[4];

   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      String vote = request.getParameter("lang");
      int voteNum = Integer.parseInt(vote) - 1;
      count[voteNum]++;

       out.println("<html>");
       out.println("<head>");
       out.println("<title>Servlet VoteServlet</title>");
       out.println("</head>");
       out.println("<body>");
       out.println("<h1>Servlet VoteServlet at " + request.getContextPath() + "</h1>");
       for (int i = 0; i < count.length; i++) {
          out.println(lang[i] +" = " + count[i] + "<BR>");
       }

       out.println("</body>");
       out.println("</html>");

       out.close();
   }


   protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      processRequest(request, response);
   }


   protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      processRequest(request, response);
   }



การเขยนโปรแกรม Java Servet / JSP                           Thanachart Numnonda / Thanisa Kruawaisayawan
19

    public String getServletInfo() {
       return "Short description";
    }
    // </editor-fold>
}

3.3    ขนตอนการพฒนาโปรเจ*ค Voter

           เราสามารถทจะพฒนาแบบฝกหดนทชอโปรเจค Voter ตามขนตอนดงน

      1.   เลอกค.าสงสราง New Project > Web Application จากนนก.าหนดชอโปรเจคเปน Voter ดงร#ปท 3.2




                                   รปท 3.2 การสรางโปรเจค Web Application

      2.   เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด Voter จากนนเลอกค.าสง New > Other...
      3.   ในไดอะลอก New File ใหเลอก Categories ทชอ Java Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ
           ภายใต Category น ใหเราเลอก HTML แลวกด Next
      4.   ก.าหนด HTML File Name: เปน vote แลวกด Finish
      5.   ในหนาต/าง Editor เขยน Source code ของ vote.html ดง Listing ท 3.1
      6.   เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด Voter จากนนเลอกค.าสง New > Servlet
      7.   ก.าหนด Class Name: เปน VoteServlet.java และ Package เปน controller แลวกด Next ก.าหนด
           URL Pattern(s): เปน /processVote แลวกด Finish
      8.   ในหนาต/าง Editor เขยน Source code ของ VoteServlet.java ดง Listing ท 3.2
      9.   กด Save แลวท.าการ run โปรเจคเพอทดสอบโปรแกรมโดยเรยก URL ท

การเขยนโปรแกรม Java Servet / JSP                            Thanachart Numnonda / Thanisa Kruawaisayawan
20

         http://localhost:8080/Voter/vote.html โดยจะไดผลลพธ5ดงตวอย/างในร#ปท3.3




                                   รปท 3.3 ตวอย-างผลลพธ!ของโปรเจค Voter

3.4     การปรบปรงโปรแกรม VoteServlet.java

       ขนตอนนจะเปนการปรบปร1งโปรแกรม VoteServlet.java เพอป%องกนการโหวตซ.าทงนจะไม/อน1ญาตให
ผ#ใชทใชหมายเลขไอพเดยวกนโหวตซ.าได โดยจะเกบหมายเลขไอพทท.าการโหวตแลวในออปเจคชน0ด HashSet
การพฒนาโปรแกรมนมค.าสงเพ0มเต0มทส.าคญดงน
    1. ก.าหนดตวแปร voters
    2. อ/านหมายเลขไอพของผ#โหวตและเพ0มคะแนนการโหวตหากหมายเลขไอพนไม/เคยโหวต

3.4.1    ก.าหนดตวแปร voters

      ตวแปร voters เปนตวแปรชน0ด HashSet ทจะเกบหมายเลขไอพของผ#โหวต โดยจะประกาศเปนตวแปร
ออปเจคทมค.าสงประกาศดงน
            HashSet voters = new HashSet();

3.4.2    การอ/านหมายเลขไอพของผ#ใช

       การอ/านหมายเลขไอพของผ#ใชท.าไดโดยเรยกใช ค.าสง getRemoteAddr() ในออปเจค request เมอ
ทราบหมายเลขไอพ เราสามารถทจะตรวจสอบไดว/าหมายเลขนเคยโหวตแลวหรอไม/ โดยการตรวจสอบว/าออปเจค
voters มค/าหมายเลขไอพนหรอไม/โดยใชค.าสง contain() หากยงไม/เคยโหวตกใหเพ0มค/าตวนบและเพ0มหมายเลข
ไอพนในออปเจค voters โดยมค.าสงดงน
               String ip = request.getRemoteAddr();


การเขยนโปรแกรม Java Servet / JSP                            Thanachart Numnonda / Thanisa Kruawaisayawan
21


               if (!voters.contains(ip)) {
                    count[voteNum]++;
                    voters.add(ip);
                } else {
                    out.println("This IP address has been voted");
                }

         ส.าหรบโปรแกรม VoteServlet.java ทปรบปร1งใหม/จะม sourcecode ดง Listing ท 3.3

Listing ท 3.3 โปรแกรม VoteServlet.java เพอป%องกนการโหวตซ.า

import java.io.*;
import java.util.HashSet;

import javax.servlet.*;
import javax.servlet.http.*;


public class VoteServlet extends HttpServlet {

   String []lang ={"Java", "C#", "C", "Pascal"};
   int []count = new int[4];

   HashSet voters = new HashSet();

   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      String vote = request.getParameter("lang");
      int voteNum = Integer.parseInt(vote) - 1;
      String ip = request.getRemoteAddr();
     if (!voters.contains(ip)) {
          count[voteNum]++;
          voters.add(ip);
      } else {
          out.println("This IP address has been voted");
      }
      out.println("<html>");
      out.println("<head>");
      out.println("<title>Servlet VoteServlet</title>");
      out.println("</head>");
      out.println("<body>");
      out.println("<h1>Servlet VoteServlet at " + request.getContextPath() + "</h1>");
      for (int i = 0; i < count.length; i++) {
          out.println(lang[i] +" = " + count[i] + "<BR>");
      }

       out.println("</body>");
       out.println("</html>");
       out.close();
   }



การเขยนโปรแกรม Java Servet / JSP                              Thanachart Numnonda / Thanisa Kruawaisayawan
22

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       processRequest(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       processRequest(request, response);
    }

}




การเขยนโปรแกรม Java Servet / JSP                       Thanachart Numnonda / Thanisa Kruawaisayawan
23


                      Exercise 4 การเชอมต!อกบ MySQL Database

เนอหาทตองศกษากอน           -

         แบบฝ8กหดน&เป6นข&นตอนการต#ดต&ง NetBeans เพ!อเช!อมต"อกบโปรแกรมฐานขอม/ล MySQL ท!เป6น
โปรแกรมฐานขอม/ล OpenSource แบบ FreeWare ซ:!งปกต#จะมตวอย"างฐานขอม/ลท!สรางมาพรอมแลวอย/"หลาย
ช'ด หน:!งในน&นคอฐานขอม/ลท!ช!อ test ท!เราจะใชในการทดสอบการเช!อมต"อกบโปรแกรม NetBeans

4.1    การต(ดตงโปรแกรมฐานขอม-ล MySQL

           ขนตอนนเปนการต0ดตงโปรแกรม MySQL Server 5.0 โดยมขนตอนดงน

      1.   ท.าการดาวน5โหลดโปรแกรม MySQL Server 5.0 จาก URL ทชอ http://www.mysql.com/
      2.   ท.าการ unzip โปรแกรม mysql-5.0.xx-win32.zip
      3.   รนโปรแกรม setup.exe เพอท.าการต0ดตงโปรแกรม MySQL Server 5.0 โดยโปรแกรมจะแสดง
           ไดอะลอกดงร#ปท 4.1




                                    รปท 4.1 การตดตง MySQL Server

      4.   กดป16ม Next แลวท.าการต0ดตงโปรแกรมตามขนตอนต/างๆ โดยใหก.าหนดไดเรกทอรทตองการต0ดตงตาม
           ความเหมาะสม

4.2    การสราง Database Connection

           เม!อต#ดต&ง Database แลว เราสามารถท!จะใช NetBeans เพ!อเช!อมต"อ Database โดยใช JDBC Driver


การเขยนโปรแกรม Java Servet / JSP                            Thanachart Numnonda / Thanisa Kruawaisayawan
24

ซ:!งในท!น&จะใช Driver ท!ช!อ MySQL Connector/J ซ:!งเป6น Driver ท!พฒนาโดยใชภาษาจาวาและต#ดต"อโดยตรง
กบ Database และโปรแกรม NetBeans 6.5 ไดต#ดต&งมาไวใหแลว เราสามารถท!จะเช!อมต"อกบ Database โดยใช
Driver ดงกล"าวได โดยมข&นตอนดงน&

    1.   ในโปรแกรม NetBeans เลอกแทป Services แลวขยายโหนด Databases > Drivers
    2.   เลอกโหนด MySQL(Connector/J Driver) จากน&นคล#;กขวาเลอก Connect Using.. ดงร/ปท! 4.2




                                   รปท   4.2 การเลอกคาสงเชอมต-อ Database

    3.   ในไดอะลอก New Database Connection ใหระบ'
         ● Host: เป6น localhost

         ● Port: เป6น 3306

         ● Database: เป6น test

         ● User Name: เป6น root

    4.   ส.าหรบ Password: ใหใส"ค"าตามท!ก.าหนดไวในตอนต#ดต&งโปรแกรม MySQL ซ:!งในท!น&จะมค"าเป6น
         root

การเขยนโปรแกรม Java Servet / JSP                             Thanachart Numnonda / Thanisa Kruawaisayawan
25

    5.   ท.าการเลอก Remember password โดยไดอะลอกจะแสดงผลไดดงร/ปท! 4.3




                                   รปท   4.3 การกาหนดค-าในการเชอมต-อ Database

    6.   กดป'<ม OK เม!อไดอะลอกแสดงขอความใหเลอก database schema.ใหกดป'<ม OK อกคร&งซ:!งตอนน&ถา
         ขยายแทบ Database ในหนาต"าง Runtime จะเหน Connection ใหม"ดงร/ปท! 4.4




การเขยนโปรแกรม Java Servet / JSP                               Thanachart Numnonda / Thanisa Kruawaisayawan
26




                                        รปท 4.4 การแสดงการเชอมต-อ

4.3    การสรางตาราง books

      ในท!น&จะก.าหนดใหสราง Table ท!ช!อ books โดยใหอย/"ภายใต Schema ท!ช!อ test โดย Table น&ก.าหนด
ใหม Column ต"างๆ ดงตารางท! 4.1

ตารางท! 4.1Table books

            ชอ                      ชนด                   ขนาด
            isbn                   varchar                  20
            title                  varchar                  70
           author                  varchar                  50
           price                    float                   -

           เราจะใชโปรแกม NetBeans ในการท!จะสราง Table น&โดยมข&นตอนต"างๆ ดงน&

      1.   ในหนาต"าง Runtime ขยายแทบ Databases > jdbc:mysql://localhost:3306/test แลวจะเหนรายการ
           Tables




การเขยนโปรแกรม Java Servet / JSP                           Thanachart Numnonda / Thanisa Kruawaisayawan
27

    2.   คล#;กขวาท! Tables แลวเลอก Create Table... ดงร/ปท! 4.5




                                    รปท 4.5 การเลอกคาสงสรางตาราง

    3.   ภายในไดอะลอก Create Table ใหก.าหนด Table Name เป6น books แลวใส" Column ต"างๆ ดงตารางท!
         4.1 และก.าหนดให isbn เป6น Key โดยไดอะลอกจะแสดงผลไดดงร/ปท! 4.6




                                     รปท 4.6 การสรางตารางชอ books

    4.   แลวกด OK ซ:!งตอนน&ในหนาต"าง Runtime ถาขยายแทบ Tables > books จะเหน Column ต"างๆ ดงร/ป
         ท! 4.7




การเขยนโปรแกรม Java Servet / JSP                             Thanachart Numnonda / Thanisa Kruawaisayawan
28




                                     รปท 4.7 ผลลพธ!จากการสรางตาราง

4.4    การใชค/าสง SQL ใน NetBeans

        ภายหลงจากท!มการสราง Table ท!ช!อ books เราสามารถท!จะใชโปรแกรม NetBeans สรางค.าส!ง SQL
เพ!อท!จะต#ดต"อกบฐานขอม/ล ในท!น&จะแสดงการเพ#!มขอม/ลลงใน Table โดยมข&นตอนต"างๆดงน&

      1.   ตรงโหนด Procedures คล#;กขวาท!โหนดแลวเลอกค.าส!ง Execute Command... หนาต"าง       SQL Editor
           จะปรากฎข:&นมา
      2.   ใหป>อนค.าส!ง SQL เป6น
           INSERT INTO books VALUES ('123', 'Intro to Java Programming', 'Thanachart', 500.00)

      3.   กด Enter หรอ (Ctrl-Shift-E) เพ!อรนค.าส!ง SQL
      4.   เราสามารถท!จะด/ขอม/ลท!ป>อนเขาไปได โดยเลอกค.าส!ง View Data.. จาก Table ท!ช!อ books ดงร/ปท! 4.8




                                       รปท 4.8 การเรยกคาสงดขอมลในตาราง

การเขยนโปรแกรม Java Servet / JSP                             Thanachart Numnonda / Thanisa Kruawaisayawan
29


                   Exercise 5 การพฒนาโปรแกมเวบเพอต"ดต!อกบฐานขอม,ล

เนอหาทตองศกษากอน การเชอมต/อกบ MySQL Database

        แบบฝกหดนจะเปนการพฒนาโปรแกรม Web Application โดยใช Java Servlet เพอเชอมต/อกบฐาน
ขอม#ล ในทนก.าหนดใหใชฐานขอม#ล MySQL ซ,งม Table ทชอ books โปรแกรมทจะพฒนาข,นเปนการเพ0ม
ขอม#ลลงใน Table ดงกล/าว โดยก.าหนดใหผ#ใชป%อนรายละเอยดขอม#ลผ/านเวบเพจทชอ addBook.html ซ,งเมอผ#
ใชกดป16ม Add โปรแกรมกจะไปเรยกโปรแกรม Servlet ทชอ AddBookServlet ซ,งจะมค.าสงในอ/านค/า
parameter ทผ#ใชป%อนเขามาและท.าการใส/ขอม#ลลงใน Table ดงกล/าว โดยใชช1ดค.าสง JDBC

ขนตอนในการพฒนาโปรแกรม
   1. สรางโปรเจค WebBaseDB
   2. พฒนาโปรแกรม addBook.html และ Thankyou.html
   3. พฒนาโปรแกรม AddBookServlet.java



5.1    การสราง Web Application Project

     เราจะเร0มตนสรางโปรแกรม Web-Base Database โดยการสราง Project ใหม/ข,นมาใน NetBeans ซ,งม
ขนตอนดงน

      1.   เลอกเมน# File > New Project..
      2.   ในไดอะลอก New Project ใหเลอก Categories เปน Java Web และเลอก Projects เปน Web
           Application แลวกด Next
      3.   ก.าหนด Project Name: เปน WebBaseDB แลวเลอก Project Location: เปน Director ทเราตองการ
           จะเกบไฟล5ไว จากนนเลอก Server เปน Apache Tomcat 6.0.18 แลวกด Finish

5.2    การพฒนาโปรแกรม addBook.html

       โปรแกรม addBook.html เปนเวบเพจทใชแสดงฟอร5มส.าหรบป%อนขอม#ลหนงสอใหม/เขาในฐานขอม#ล
books ซ,งมลกษณะดงร#ปท 5.1 โปรแกรม addBook.html มขนตอนการพฒนาดงน

      1.   เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด WebBaseDB จากนนเลอกค.าสง New > Other...
      2.   ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย
           ใต Category น ใหเราเลอก HTML แลวกด Next

การเขยนโปรแกรม Java Servet / JSP                         Thanachart Numnonda / Thanisa Kruawaisayawan
30

    3.   ก.าหนด HTML File Name: เปน addBook แลวกด Finish
    4.   เขยน source code ของไฟล5 addBook.html ตาม Listing ท 5.1 โดยเราสามารถทจะลาก icon ประเภท
         HTML Forms ทอย#/ในหนาต/าง Palette ดงร#ปท 5.2 เพอสามารถใหเขยนโปรแกรมไดง/ายข,น




                                     รปท   5.1 หนาเวบเพจ addBook.html




                           รปท 5.2 ตวอย-างหนาต-าง Palette สาหรบการเขยนคาสง HTML


Listing ท 5.1 โปรแกรม addBook.html

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Add a new book</title>

   </head>
   <body>

   <h1>Add a new book</h1>



การเขยนโปรแกรม Java Servet / JSP                            Thanachart Numnonda / Thanisa Kruawaisayawan
31

 <P>

 <form action="addBook.do" method="POST">
   ISBN : <input type="text" name="isbn" value="" size="15"/> <BR>
   Title : <input type="text" name="title" value="" size="50"/> <BR>

      Author : <input type="text" name="author" value="" size="50"/> <BR>
      Price : <input type="text" name="price" value="" size="10"/> <BR>

    <input type="submit" value="Add" />
 </form>

  </body>
</html>



5.3    การพฒนาโปรแกรม Thankyou.html

       โปรแกรม Thankyou.html เปนเวบเพจทใชแสดงใหเหนว/าขอม#ลไดถ#กเพ0มเขาไปในฐานขอม#ลแลว โดย
ม sourcecode ดง Listing ท 2 ซ,งขนตอนการพฒนาโปรแกรมนจะเปนเช/นเดยวกบการพฒนาโปรแกรม
addBook.html


Listing ท 5.2 โปรแกรม Thankyou.html

<html>
 <head>
  <title>Thank you</title>
 </head>
 <body>
 <H1>Thank you for inserting data </H1>
 </body>
</html>



5.4    การพฒนาโปรแกรม AddBookServlet.java

      โปรแกรม AddBookServlet.java เปนโปรแกรมทถ#กเรยกใชโดย addBook.html เมอผ#ใชกดป16ม Add
โปรแกรมนจะท.าหนาทเพอต0ดต/อกบฐานขอม#ลโดยมขนตอนการท.างานดงน
   1. อ/านค/าพาราม0เตอร5ต/างๆทส/งมาจาก addBook.html
   2. เชอมต/อกบฐานขอม#ล books
   3. เพ0มรายชอหนงสอใหม/ลงในฐานขอม#ล books
   4. เรยกเวบเพจ Thankyou.html




การเขยนโปรแกรม Java Servet / JSP                        Thanachart Numnonda / Thanisa Kruawaisayawan
32

5.4.1    การอ/านค/าพาราม0เตอร5จาก addBook.html

         เวบเพจ addBook.html จะส/งขอม#ลของรายชอหนงสอใหม/ผ/านมาทางพาราม0เตอร5ต/างๆดงน
             ● isbn หมายเลข ISBN ของหนงสอ

             ● title ชอหนงสอ

             ● author ชอผ#แต/ง

             ● price ราคาหนงสอ


        พาราม0เตอร5ต/างๆเหล/านจะถ#กส/งผ/านโปรโตคอล Http และในโปรแกรมเราสามารถทจะอ/านค/า
พาราม0เตอร5เหล/านไดจากออปเจค request โดยเรยกใชเมธอด getParameter() ซ,งโปรแกรมส/วนนจะมค.าสง
ต/างๆดงน
                   String isbn = request.getParameter("isbn");
                   String author = request.getParameter("author");
                   String title = request.getParameter("title");
                   String priceStr = request.getParameter("price");



5.4.2    การเชอมต/อกบฐานขอม#ล

         การเขยนโปรแกรมเพอเชอมต/อกบฐานขอม#ลเพอเปนการเรยกใชค.าสง SQL ซ,งจะตองใช JDBC
         API โดยจะมขนตอนดงน

              ●   ท.าการโหลด Driver ส.าหรบ Database Server ทตองการเชอมต/อ ผ/าน DriverManager หรอ
                  โหลด DataSource จาก JNDI
              ●   ด,งออปเจคชน0ด Connection จาก Driver หรอ Datasource
              ●   ด,งออปเจคชน0ด Statement จากออปเจคชน0ด Connection
              ●   เรยกใชค.าสง SQL โดยใชเมธอด executeQuery() หรอ executeUpdate() ของออปเจคชน0ด
                  Statement

       โปรแกรม AddBookServlet จะใชว0ธการโหลด DataSource จาก JNDI ซ,งเราไม/จ.าเปนทจะตองโหลด
ท1กครงทมการเรยกใชโปรแกรม Servlet นแต/จะท.าการโหลดครงแรกทมการเรยกใช Servlet น ดงนนเราจะเขยน
sourcecode ส/วนนทเมธอด init() ดงน

            private Connection conn;

             public void init() {
              try {
                 conn = jdbcTest.getConnection();
              } catch (Exception ex) {
                 System.out.println(ex);

การเขยนโปรแกรม Java Servet / JSP                             Thanachart Numnonda / Thanisa Kruawaisayawan
33

                 }
             }



5.4.3    เพ0มรายชอหนงสอใหม/ลงในฐานขอม#ล

         เมอเชอมต/อฐานขอม#ลและไดออปเจคชน0ด Connection มาแลว เราสามารถทจะเรยกใชค.าสง SQL ได
         ซ,งในทนคอค.าสง INSERT ซ,งจะมร#ปแบบของค.าสงดงน
                     INSERT INTO books VALUES(....)

     โดยเราจะใชค/าจากพาราม0เตอร5ต/างๆทรบมา ดงนนถาขอม#ลทป%อนเขามาถ#กตองเราสามารถทจะเพ0มรายชอ
หนงสอใหม/ลงในฐานขอม#ลโดยใชค.าสงดงน
            Statement stmt = conn.createStatement();

            String sql = "INSERT INTO books VALUES('"+isbn+"','" + title +"','" +author +"',"+price
+")";
            int numRow = stmt.executeUpdate(sql);

5.4.4    การเรยกเวบเพจ Thankyou.html

         เมอขอม#ลไดถ#กเพ0มลงไปในฐานขอม#ลแลว โปรแกรม AddBookServlet จะท.าการเรยกเวบเพจ
         Thankyou.html โดยการเรยกใช RequestDispatcher ดงน

         RequestDispatcher obj = request.getRequestDispatcher("Thankyou.html");
         if (numRow == 1 && obj != null) {
                obj.forward(request,response);
         }

         โปรแกรม AddBookServlet.java จะม sourcecode ทงหมดดง Listing ท 5.3

Listing ท 5.3 โปรแกรม AddBookServlet.java

package controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.DataSource;



การเขยนโปรแกรม Java Servet / JSP                            Thanachart Numnonda / Thanisa Kruawaisayawan
34

public class AddBookServlet extends HttpServlet {

   @Resource(name = "jdbc/test")
   private DataSource jdbcTest;
   private Connection conn;

   public void init() {
     try {
        conn = jdbcTest.getConnection();
     } catch (Exception ex) {
        System.out.println(ex);
     }
   }

   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      out.println("<html>");
      out.println("<head>");
      out.println("<title>Add a new book</title>");
      out.println("</head>");
      out.println("<body>");
      out.println("<h1> Add a new book </h1>");

       try {
          String isbn = request.getParameter("isbn");
          String author = request.getParameter("author");
          String title = request.getParameter("title");
          String priceStr = request.getParameter("price");
          float price = Float.parseFloat(priceStr);

         Statement stmt = conn.createStatement();

         String sql = "INSERT INTO books VALUES('"+isbn+"','" + title +"','" +author +"',"+price+")";
         int numRow = stmt.executeUpdate(sql);

         RequestDispatcher obj = request.getRequestDispatcher("Thankyou.html");
         if (numRow == 1 && obj != null) {
          obj.forward(request,response);
         }

       } catch (SQLException ex) {
          out.println("Error " + ex);
          return;
       }

       out.println("</body>");
       out.println("</html>");

       out.close();
   }

   protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      processRequest(request, response);

การเขยนโปรแกรม Java Servet / JSP                             Thanachart Numnonda / Thanisa Kruawaisayawan
35

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       processRequest(request, response);
    }

}



5.5      ขนตอนการพฒนาโปรแกรม AddBookServlet.java

             เราสามารถทจะพฒนาโปรแกรม AddBookServlet.java ตามขนตอนดงน

        1.   เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด WebBaseDB จากนนเลอกค.าสง New > Other...
        2.   ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย
             ใต Category น ใหเราเลอก Servlet แลวกด Next
        3.   ก.าหนด Class Name: เปน AddBookServlet และก.าหนด Package เปน controller แลวกด Next
        4.   ก.าหนด URL Pattern(s): เปน /addBook.do แลวกด Finish
        5.   โปรแกรม NetBeans จะสรางไฟล5 AddBookServlet.java ไวภายใต Source Packages โดยจะอย#/ใน
             Directory ชอ controller
        6.   ในหนา Editor ใหคล0;กขวาเลอก Insert Code... > Use Database ดงร#ปท 5.3




                                   รปท 5.3 การเลอกคาสง Use Database

        7.   ในไดอะลอก Choose Database กดป16ม Add...
        8.   ในไดอะลอก Add Data Source Reference กดป16ม Add...
        9.   ในไดอะลอก Create Data Source ก.าหนด JNDI Name เปน jdbc/test และเลอก Database
             Connection เปน jdbc:mysql//localhost:3306/test ดงร#ปท 5.4




การเขยนโปรแกรม Java Servet / JSP                          Thanachart Numnonda / Thanisa Kruawaisayawan
36




                                       รปท 5.4 การกาหนดค-า JNDI

    10. กดป16ม OK โปรแกรมจะกลบไปแสดงไดอะลอก Add Data Source Reference ใหก.าหนด Reference
         Name: เปน jdbc/test ดงร#ปท 5.5




                                   รปท 5.5 การกาหนดค-า Reference Name

    11. กดป16ม OK      จะไดไดอะลอก Choose Database ดงร#ปท 5.6




                                     รปท 5.6 หนาไดอะลอก Choose Database

    12. กดป16ม OK โปรแกรม NetBeans จะเพ0ม context.xml ใหอตโนมต0 โดยสามารถด#ไดจากการ ขยายโหนด
         WebBaseDB > Web Pages > META-INF [หมายเหต1 ในกรณทใช GlassFish Server ค.าสงนจะ
        เขยนในไฟล5 sun-web.xml]
    13. โปรแกรมจะเพ0ม sourcecode ใหดงน



การเขยนโปรแกรม Java Servet / JSP                           Thanachart Numnonda / Thanisa Kruawaisayawan
37

                          @Resource(name = "jdbc/test")
                          private DataSource jdbcTest;

      14. ในหนาต/าง editor ใหแกไข sourcecode ของไฟล5 AddBookServlet.java ใหเปนไปตาม Listing ท
          5.3
      15. โปรแกรมจะมขอผ0ดพลาดอย#/เนองจากยงไม/ไดท.าการ import คลาสต/างๆ เราสามารถแกไขไดโดยคล0;ก
           ขวาในหนาต/าง editor แลวเลอก Fix Imports หรอกด Ctrl+Shift+I โปรแกรมจะแสดงชอคลาสต/างๆ ท
           ตอง Import มาใหเลอก ในทนจะตองเลอกคลาสใหถ#กตองดงร#ปท 5.7




                                    รปท 5.7 การกาหนดคลาสทตอง import

      16. ท.าการ Save โปรแกรมโดยการกด Ctrl+S
      17. ตรวจสอบไฟล5 context.xml จะเปนดง Listing ท 5.4

Listing ท 5.4 ไฟล5 context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/WebBaseDB">
 <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="20"
maxIdle="10" maxWait="-1" name="jdbc/test" password="root" type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/test" username="root"/>
</Context>


5.6    ทดสอบโปรแกรม

      1.   ท.าการ Build และ Deploy โปรแกรม WebBaseDB
      2.   Run โปรแกรม WebBaseDB ทงนตองท.าการรน MySQL Database Server ก/อน
      3.   โปรแกรมจะแสดงหนา addBook.html ใหเราใส/ขอม#ล ลองทดลองใส/ขอม#ลดงร#ปท 5.8




การเขยนโปรแกรม Java Servet / JSP                          Thanachart Numnonda / Thanisa Kruawaisayawan
38




                                    รปท 5.8 ตวอย-างการป+อนขอมล Books

    4.   เมอกดป16ม Add โปรแกรมกจะใส/ขอม#ลลงใน Database และแสดงผลลพธ5ดงร#ปท 5.9




                                   รปท 5.9 ผลลพธ!ทแสดงทาง Web Browser

    5.   เราสามารถทจะด#ขอม#ลทป%อนเขาไปได โดยไปทหนาต/าง Services ของโปรแกรม NetBeans แลวเลอก
         ค.าสง View Data.. จาก Table ทชอ books ดงร#ปท 5.10




                                    รปท 5.10 ขอมลทถกป+อนเขา Table ทชอ books

การเขยนโปรแกรม Java Servet / JSP                           Thanachart Numnonda / Thanisa Kruawaisayawan
39


                     Exercise 6 โปรแกรมเวบเพอสาธ"ตขอบเขตของออปเจค

เนอหาทตองศกษากอน การเขยนโปรแกรม Servlet เพออ/านค/าพาราม0เตอร5

      แบบฝกหดนจะเปนการพฒนาโปรแกรม Java Servlet เพออธ0บายขอบเขตการท.างานของออปเจคใน
โปรแกรมแบบเวบ (Object Scope) ทมอย#/สแบบคอ Page, Request, Session และ Web (Application) โดย
จะทดลองส/งค/าของออปเจคผ/านกนระหว/างโปรแกรม Servlet สองช1ด

6.1   การพฒนาโปรแกรมเพอสาธ(ตขอบเขตของ Object แบบ Request

        ออปเจคทสรางข,นในโปรแกรม Java Servlet ในแต/โปรแกรมจะมขอบเขตการใชงาน (scope) อย#/เพยง
แค/โปรแกรมนนๆ (url นนๆ) ไม/สามารถทจะใชโปรแกรม Java Servlet หรอ JSP ตวอนเรยกใชออปเจคตวนน
ได การจะใหโปรแกรม Servlet หรอ JSP อนๆ เรยกออปเจคใดๆ ไดนน จะตองมการเขยน source code เพอส/ง
ผ/านค/าของออปเจคนนไปยงออปเจคอนๆ ทงนเราสามารถก.าหนดขอบเขตการใชงานเพ0มเต0มไดอก 3 แบบคอ
           ● Request ออปเจคสามารถถ#กเรยกใชเมอมการเรยกมาจากโปรแกรม Servlet/JSP อน

           ● Session ออปเจคจะเกบอย#/ใน Session ของ Web Browser ตราบเท/าทยงมการใชงานอย#/

           ● Application ออปเจคจะสามารถใชงานไดในโปรแกรม Servlet/JSP ใดๆ ทอย#/ใน Web

              Application เดยวกน

        การส/งค/าของออปเจคจาก url หน,งมายง url อนท.าไดหลายว0ธ แบบฝกหดทผ/านมาเปนการแสดงใหเหนถ,ง
การส/งค/าพาราม0เตอร5ทอย#/ในฟอร5มของไฟล5 HTML ไปยงโปรแกรม Java Servlet ทสามารถเรยกใชไดโดย ค.าสง
request.getParameter()

        นอกจากนเรายงสามารถทจะส/งออปเจคไปยง โปรแกรม Java Servlet หรอ JSP อนโดยการใชค.าสง
setAttribute() อาท0เช/นส/งค/าของตวแปร String ชอว/า name โดยจะเกบไวใน attribute ทชอ RequestName
และมร#ปแบบค.าสงดงน
                  String name = “Thanisa”;
                  request.setAttribute(“RequestName”, name);

      ซ,งจะท.าให url ทท.าการเรยกถดไปสามารถเรยกใช attribute ทชอ RequestName และด,งค/าของตวแปร
name ออกมาได โดยใชค.าสง getAttribute() โดยมร#ปแบบดงน

                  String name = (String) request.getAttribute(“RequestName”);

         ส/วนค.าสงทใชในการทจะ forward จากโปรแกรม Servlet ตวหน,งไปยง url อนจะเปนค.าสงทมร#ปแบบ


การเขยนโปรแกรม Java Servet / JSP                           Thanachart Numnonda / Thanisa Kruawaisayawan
40

ดงน
         RequestDispatcher obj = request.getRequestDispatcher("SecondServlet");
            obj.forward(request,response);

         โดยท SecondServlet คอชอ url ทตองการ forward

       ในขนตอนนจะเปนการพฒนาโปรแกรมเพอสาธ0ตการท.างานของขอบเขตการท.างานของ Object แบบ
request โดยการพฒนาโปรแกรม Servlet ข,นมาสองโปรแกรมคอ FirstServlet ทจะใชในการส/งออปเจคซ,งม
source code ตาม Listing ท 6.1 และ โปรแกรม SecondServlet ทจะใช/ในการอ/านค/าของออปเจคทส/งออกมา
แลวน.ามาแสดงผล ซ,งม source code ตาม Listing ท 6.2

Listing ท 6.1 โปรแกรม FirstServlet.java

package servlet;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class FirstServlet extends HttpServlet {


   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      try {
        String name = "Thanisa";
        request.setAttribute("RequestName", name);
        RequestDispatcher obj = request.getRequestDispatcher("SecondServlet");
        obj.forward(request, response);

       } finally {
           out.close();
       }
   }


   protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      processRequest(request, response);
   }


   protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      processRequest(request, response);


การเขยนโปรแกรม Java Servet / JSP                        Thanachart Numnonda / Thanisa Kruawaisayawan
41

    }


    public String getServletInfo() {
       return "Short description";
    }
    // </editor-fold>
}



Listing ท 6.2 โปรแกรม SecondServlet.java


package servlet;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;


public class SecondServlet extends HttpServlet {


    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
       PrintWriter out = response.getWriter();
       try {
          String name = (String) request.getAttribute("RequestName");
          out.println(name);
       } finally {
           out.close();
       }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       processRequest(request, response);
    }



    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       processRequest(request, response);
    }

    public String getServletInfo() {
       return "Short description";
    }
    // </editor-fold>
}


การเขยนโปรแกรม Java Servet / JSP                       Thanachart Numnonda / Thanisa Kruawaisayawan
42

6.1.1      ขนตอนการพฒนาโปรแกรมเพอสาธ0ตขอบเขตของ Object แบบ Request

           เราสามารถทจะพฒนาโปรแกรม ตามขนตอนดงน

      1.   เลอกค.าสงสราง New Project จากเมน# เลอก Java Web แลวเลอก Web Application ก.าหนดชอโปร
           เจคเปน ScopeDemo เลอก Server เปน Apache Tomcat 6.0.18 และ Java EE Version เปน Java
           EE5 แลวกด Finish
      2.   เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด ScopeDemo จากนนเลอกค.าสง New > Servlet
      3.   ก.าหนด Class Name: เปน FirstServlet.java และ Package เปน servlet แลวกด Finish
      4.   ในหนาต/าง Editor เขยน Source code ของ FirstServlet.java ดง Listing ท 6.1 แลวเลอกค.าสง Save
      5.   เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด ScopeDemo จากนนเลอกค.าสง New > Servlet
      6.   ก.าหนด Class Name: เปน SecondServlet.java และ Package เปน servlet แลวกด Finish
      7.   ในหนาต/าง Editor เขยน Source code ของ SecondServlet.java ดง Listing ท 6.2 แลวเลอกค.าสง
           Save

6.1.2      ขนตอนการทดสอบโปรแกรมเพอสาธ0ตขอบเขตของ Object แบบ Request

           เราสามารถทจะทดสอบโปรแกรม ตามขนตอนดงน

      1.   ท.าการ Build และ Deploy โปรเจค ScopeDemo
      2.   ท.าการ Run โปรเจค ScopeDemo
      3.   ในโปรแกรม Web Browser เลอก url ทชอ http://localhost:8080/ScopeDemo/FirstServlet
           แลวสงเกต1ผลลพธ5
      4.   ทดลองรน url ทชอ http://localhost:8080/ScopeDemo/SecondServlet โดยตรง แลวสงเกตผลลพธ5
           อกครงจะเหนว/า ค/าทแสดงเปน null ทงนเนองจากโปรแกรมไม/ไดมการส/ง request มาจาก FirstServlet

6.2     การพฒนาโปรแกรมเพอสาธ(ตขอบเขตของ Object แบบ Session

       ขอบเขตการใชงานของออปเจคแบบ Request จะส/งผ/านค/าของออปเจคตาม request ของ url ทงนไม/
สามารถทจะใชงานไดโดยการเรยก url นนโดยไม/มการส/ง request มาดงแสดงในขนตอนทผ/านมา เราสามารถท
จะก.าหนดขอบเขตของการใชงานของออปเจค ใหใชงานผ/านใน session ของ Web Browser ได (ตราบเท/าท
Browser ยงใช session นนอย#) โดยการก.าหนด Attribute ลงในออปเจคชน0ด HttpSession ซ,งจะเปนออปเจคท
                          /
เกบขอม#ล session ของ Web Browser อาท0เช/นเกบค/าของตวแปร String ชอว/า name ไวใน attribute
ของ session ทชอ SessionName โดยมร#ปแบบค.าสงดงน
           String name = “Thanisa”;


การเขยนโปรแกรม Java Servet / JSP                            Thanachart Numnonda / Thanisa Kruawaisayawan
43

         HttpSession session = request.getSession();
         session.setAttribute(“SessionName”, name);



       โปรแกรม Java Servlet อนๆสามารถทจะเรยกใช attribute ของ Session ทชอ SessionName และด,ง
ค/าของตวแปร name ออกมาได โดยใชค.าสง getAttribute() เพอเรยกค/าจาก Session โดยมร#ปแบบดงน
         HttpSession session = request.getSession();
         String name = (String) session.getAttribute(“SessionName”);

        ในขนตอนนจะเปนการพฒนาโปรแกรมเพอสาธ0ตการท.างานของขอบเขตการท.างานของ Object แบบ
session โดยการพฒนาโปรแกรม Servlet ข,นมาสองโปรแกรมคอ FirstSessionServlet ทจะใชในการส/งออป
เจคซ,งม source code ตาม Listing ท 6.3 และ โปรแกรม SecondSessionServlet ทจะใช/ในการอ/านค/าของออป
เจคทส/งออกมาแลวน.ามาแสดงผล ซ,งม source code ตาม Listing ท 6.4

Listing ท 6.3 โปรแกรม FirstSessionServlet.java

package servlet;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;


public class FirstSessionServlet extends HttpServlet {

   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     response.setContentType("text/html;charset=UTF-8");
     PrintWriter out = response.getWriter();
     try {
         String name = "Thanisa";
         HttpSession session = request.getSession();
         session.setAttribute("SessionName", name);
     } finally {
         out.close();
     }
   }

   protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     processRequest(request, response);
   }


   protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     processRequest(request, response);


การเขยนโปรแกรม Java Servet / JSP                         Thanachart Numnonda / Thanisa Kruawaisayawan
44

    }


    public String getServletInfo() {
       return "Short description";
    }
    // </editor-fold>
}


Listing ท 6.4 โปรแกรม SecondSessionServlet.java

package servlet;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;


public class SecondSessionServlet extends HttpServlet {


    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      try {
          HttpSession session = request.getSession();
          String name = (String) session.getAttribute("SessionName");
          out.println(name);
      } finally {
          out.close();
      }
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
      processRequest(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
      processRequest(request, response);
    }


    public String getServletInfo() {
       return "Short description";
    }
    // </editor-fold>
}



การเขยนโปรแกรม Java Servet / JSP                          Thanachart Numnonda / Thanisa Kruawaisayawan
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5

Weitere ähnliche Inhalte

Ähnlich wie Java Web Programming Using NetBeans 6.5

Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using  Eclipse and TomcatJava Web Programming (JSP/Servlet) Using  Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and TomcatIMC Institute
 
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)Thanachart Numnonda
 
Word2007 moce
Word2007 moceWord2007 moce
Word2007 moce520147141
 
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeansHand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeansIMC Institute
 
SOA Using GlassFishESB and NetBeans [in Thai]
SOA Using GlassFishESB and NetBeans [in Thai]SOA Using GlassFishESB and NetBeans [in Thai]
SOA Using GlassFishESB and NetBeans [in Thai]Thanachart Numnonda
 
Java Web Services and SOA Exercises [in Thai]
Java Web Services and SOA Exercises [in Thai]Java Web Services and SOA Exercises [in Thai]
Java Web Services and SOA Exercises [in Thai]IMC Institute
 
รายงานการปฏิบัติงานสหกิจศึกษา
รายงานการปฏิบัติงานสหกิจศึกษารายงานการปฏิบัติงานสหกิจศึกษา
รายงานการปฏิบัติงานสหกิจศึกษาAttaporn Ninsuwan
 
รูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงานรูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงานAjBenny Pong
 
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐานหนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐานManop Kongoon
 
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5Nont Banditwong
 
Exproject2
Exproject2Exproject2
Exproject2najak
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์Nattawatking
 
แผนคอมฯ ม.2 3
แผนคอมฯ ม.2 3แผนคอมฯ ม.2 3
แผนคอมฯ ม.2 3Surapong Jakang
 

Ähnlich wie Java Web Programming Using NetBeans 6.5 (20)

Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using  Eclipse and TomcatJava Web Programming (JSP/Servlet) Using  Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
 
webprogramming eclipse-jsp
webprogramming eclipse-jspwebprogramming eclipse-jsp
webprogramming eclipse-jsp
 
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
 
Word2007 moce
Word2007 moceWord2007 moce
Word2007 moce
 
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeansHand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
 
Atomymaxsite25
Atomymaxsite25Atomymaxsite25
Atomymaxsite25
 
Tab10 1 manual
Tab10 1 manualTab10 1 manual
Tab10 1 manual
 
SOA Using GlassFishESB and NetBeans [in Thai]
SOA Using GlassFishESB and NetBeans [in Thai]SOA Using GlassFishESB and NetBeans [in Thai]
SOA Using GlassFishESB and NetBeans [in Thai]
 
Java Web Services and SOA Exercises [in Thai]
Java Web Services and SOA Exercises [in Thai]Java Web Services and SOA Exercises [in Thai]
Java Web Services and SOA Exercises [in Thai]
 
Cisco packet tracer_1
Cisco packet tracer_1Cisco packet tracer_1
Cisco packet tracer_1
 
Cisco packet tracer_1
Cisco packet tracer_1Cisco packet tracer_1
Cisco packet tracer_1
 
รายงานการปฏิบัติงานสหกิจศึกษา
รายงานการปฏิบัติงานสหกิจศึกษารายงานการปฏิบัติงานสหกิจศึกษา
รายงานการปฏิบัติงานสหกิจศึกษา
 
รูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงานรูปเล่มวิชาโครงงาน
รูปเล่มวิชาโครงงาน
 
ใบงาน
ใบงานใบงาน
ใบงาน
 
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐานหนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
หนังสือ Yii framework 2 Web Application Basic ฉบับพื้นฐาน
 
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
MySQL Multi-Master Replication Using Tungsten Replicator 2.0.5
 
Typecom
TypecomTypecom
Typecom
 
Exproject2
Exproject2Exproject2
Exproject2
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
แผนคอมฯ ม.2 3
แผนคอมฯ ม.2 3แผนคอมฯ ม.2 3
แผนคอมฯ ม.2 3
 

Mehr von Thanachart Numnonda

Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thanachart Numnonda
 
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขThanachart Numnonda
 
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยThanachart Numnonda
 
Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Thanachart Numnonda
 
How would cloud computing Effect to Software Industry?
How would cloud computing  Effect to Software Industry?How would cloud computing  Effect to Software Industry?
How would cloud computing Effect to Software Industry?Thanachart Numnonda
 
Impact of cloud computing to Asian IT Industry
Impact of cloud computing  to Asian IT IndustryImpact of cloud computing  to Asian IT Industry
Impact of cloud computing to Asian IT IndustryThanachart Numnonda
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่Thanachart Numnonda
 
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]Thanachart Numnonda
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่Thanachart Numnonda
 
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย Thanachart Numnonda
 
Cloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆCloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆThanachart Numnonda
 
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทยThanachart Numnonda
 
บทความ Google vs. Android
บทความ Google vs. Android  บทความ Google vs. Android
บทความ Google vs. Android Thanachart Numnonda
 
Technology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryTechnology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryThanachart Numnonda
 
อยากอยู่ 110 ปี
อยากอยู่ 110 ปี อยากอยู่ 110 ปี
อยากอยู่ 110 ปี Thanachart Numnonda
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตThanachart Numnonda
 

Mehr von Thanachart Numnonda (20)

Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021
 
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
 
Planning on Mobile Strategy
Planning on Mobile StrategyPlanning on Mobile Strategy
Planning on Mobile Strategy
 
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
 
Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Software Trends Towards AEC 2015
Software Trends Towards AEC 2015
 
Personal Cloud
Personal CloudPersonal Cloud
Personal Cloud
 
How would cloud computing Effect to Software Industry?
How would cloud computing  Effect to Software Industry?How would cloud computing  Effect to Software Industry?
How would cloud computing Effect to Software Industry?
 
Impact of cloud computing to Asian IT Industry
Impact of cloud computing  to Asian IT IndustryImpact of cloud computing  to Asian IT Industry
Impact of cloud computing to Asian IT Industry
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
 
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
 
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
 
Cloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆCloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆ
 
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
 
บทความ Google vs. Android
บทความ Google vs. Android  บทความ Google vs. Android
บทความ Google vs. Android
 
IT trends for co-creation
IT trends for co-creationIT trends for co-creation
IT trends for co-creation
 
Technology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryTechnology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software Industry
 
อยากอยู่ 110 ปี
อยากอยู่ 110 ปี อยากอยู่ 110 ปี
อยากอยู่ 110 ปี
 
Open
OpenOpen
Open
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุต
 

Java Web Programming Using NetBeans 6.5

  • 1. 1 Hand-on Exercises การเขยนโปรแกรมเวบ Java Servlet / JSP โดยใช GlassFish and NetBeans 6.5 Dr.Thanachart Numnonda and Asst Prof.Thanisa Kruawaisayawan July 2009 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 2. 2 สารบญ Exercise 1 การสรางโปรเจค Web Application และไฟล HTML........................................................................5 1.1 การสราง Web Application Project..................................................................................................5 1.2 การพฒนาโปรแกรม addCustomer.html................................................................................................9 1.3 การทดสอบโปรแกรม..........................................................................................................................11 Exercise 2 การเขยนโปรแกรม Java Servlet เพ!ออ"านค"าพาราม#เตอร.........................................................................13 2.1 การพฒนาโปรแกรม CustomerServlet.java.........................................................................................13 2.1.1 การอ"านค"าพาราม#เตอรจาก addCustomer.html ...............................................................................13 2.1.2 การแสดงรายละเอยดของค"าต"างๆ.......................................................................................................14 2.2 ข&นตอนการพฒนาโปรแกรม CustomerServlet.java ...............................................................................14 2.3 การทดสอบโปรแกรม..........................................................................................................................19 2.4 การปรบปร'งโปรแกรมเพ!อใหแสดงผลภาษาไทยและเรยกไฟล addCustomer.html เม!อเร#!มตน......................................20 Exercise 3 โปรแกรมเวบส.าหรบการท.าโพล........................................................................................................22 3.1 การพฒนาโปรแกรม vote.html............................................................................................................22 3.2 การพฒนาโปรแกรม VoteServlet.java................................................................................................23 3.2.1 ก.าหนดตวแปร counter และ lang ...............................................................................................24 3.2.2 อ"านค"าพาราม#เตอรต"างๆท!ส"งมาจาก vote.html และท.าการประมวลผล............................................................24 3.2.3 การแสดงผลการโหวต..................................................................................................................24 3.3 ข&นตอนการพฒนาโปรเจค Voter ...........................................................................................................25 3.4 การปรบปร'งโปรแกรม VoteServlet.java..............................................................................................29 3.4.1 ก.าหนดตวแปร voters................................................................................................................29 3.4.2 การอ"านหมายเลขไอพของผ/ใช..........................................................................................................29 Exercise 4 การเช!อมต"อกบ MySQL Database.............................................................................................32 4.1 การต#ดต&งโปรแกรมฐานขอม/ล MySQL....................................................................................................32 4.2 การสราง Database Connection.....................................................................................................32 4.3 การสรางตาราง books.......................................................................................................................35 4.4 การใชค.าส!ง SQL ใน NetBeans........................................................................................................37 Exercise 5 การพฒนาโปรแกมเวบเพ!อต#ดต"อกบฐานขอม/ล..........................................................................................39 5.1 การสราง Web Application Project................................................................................................39 5.2 การพฒนาโปรแกรม addBook.html....................................................................................................39 5.3 การพฒนาโปรแกรม Thankyou.html...................................................................................................41 5.4 การพฒนาโปรแกรม AddBookServlet.java.........................................................................................41 5.4.1 การอ"านค"าพาราม#เตอรจาก addBook.html ......................................................................................42 5.4.2 การเช!อมต"อกบฐานขอม/ล...............................................................................................................42 5.4.3 เพ#!มรายช!อหนงสอใหม"ลงในฐานขอม/ล ................................................................................................43 5.4.4 การเรยกเวบเพจ Thankyou.html ...............................................................................................43 5.5 ข&นตอนการพฒนาโปรแกรม AddBookServlet.java ...............................................................................45 5.6 ทดสอบโปรแกรม..............................................................................................................................47 Exercise 6 โปรแกรมเวบเพ!อสาธ#ตขอบเขตของออปเจค............................................................................................49 6.1 การพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Request .....................................................................49 6.1.1 ข&นตอนการพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Request ....................................................52 6.1.2 ข&นตอนการทดสอบโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Request....................................................52 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 3. 3 6.2 การพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Session .....................................................................52 6.2.1 ข&นตอนการพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Session .....................................................55 6.2.2 ข&นตอนการทดสอบโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Session ...................................................55 6.3 การพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Application................................................................55 6.3.1 ข&นตอนการพฒนาโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Application...............................................58 6.3.2 ข&นตอนการทดสอบโปรแกรมเพ!อสาธ#ตขอบเขตของ Object แบบ Application..............................................58 Exercise 7 การพฒนาโปรแกรม Servlet โดยใชคลาสประเภท Web Listener..........................................................59 7.1 การพฒนาโปรแกรม Init.java..............................................................................................................59 7.2 การปรบปร'งโปรแกรม AddBookServlet.java .....................................................................................64 7.3 ทดสอบโปรแกรม..............................................................................................................................65 Exercise 8 การพฒนาโปรแกรม Servlet Filter ..............................................................................................67 8.1 การพฒนาโปรแกรม Servlet Filter......................................................................................................67 8.2 การเขยนหนา Login.........................................................................................................................68 8.2.1 ข&นตอนการพฒนาโปรแกรม ...........................................................................................................69 8.3 การเขยน Servlet Filter..................................................................................................................70 8.3.1 ข&นตอนการพฒนาโปรแกรม ...........................................................................................................71 8.4 การเขยนโปรแกรม ShowServlet .......................................................................................................73 8.4.1 ข&นตอนการพฒนาโปรแกรม ...........................................................................................................73 8.5 ข&นตอนการทดสอบโปรแกรม .................................................................................................................74 Exercise 9 การเขยนโปรแกรม JSP เพ!อแสดงผลลพธ............................................................................................75 9.1 การพฒนาโปรแกรม hello.jsp.............................................................................................................75 9.2 การพฒนาโปรแกรม viewBook.jsp....................................................................................................76 9.2.1 การก.าหนด Tag Library .........................................................................................................76 9.2.2 การก.าหนด Datasource ..........................................................................................................76 9.2.3 การใชค.าส!ง sql:query .............................................................................................................77 9.2.4 การใชค.าส!ง c:forEach เพ!อแสดงผล ..............................................................................................77 Exercise 10 การพฒนาโปรแกรมเวบ Online Book Store................................................................................80 10.1 การพฒนาโปรแกรม selectBooks.jsp................................................................................................80 10.2 การพฒนาโปรแกรม Book.java.........................................................................................................84 3 10.3 การพฒนาโปรแกรม Cart.java...........................................................................................................85 3 10.4 การพฒนาโปรแกรม ProcessSelection.java......................................................................................86 10.5 การพฒนาโปรแกรม Init.java ...........................................................................................................88 10.6 การพฒนาโปรแกรม viewCart.jsp.....................................................................................................88 10.7 ข&นตอนการทดสอบโปรแกรม ...............................................................................................................89 Exercise 11 การสราง Custom Tags ส.าหรบโปรแกรม JSP...............................................................................92 11.1 การพฒนาโปรแกรม hello.jsp............................................................................................................92 11.2 การพฒนาโปรแกรม helloTag.jsp.....................................................................................................94 11.2.1 สราง Tag Library Descriptor.............................................................................................94 11.2.2 สรางไฟล Tag Handler.........................................................................................................95 11.2.3 เขยนโปรแกรม helloTag.jsp...................................................................................................97 11.3 การพฒนาโปรแกรม helloJSTL.jsp...................................................................................................98 11.4 การพฒนาโปรแกรม helloTagFile.jsp...............................................................................................98 11.4.1 สราง Tag File....................................................................................................................99 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 4. 4 11.4.2 เขยนโปรแกรม helloTagFile.jsp...........................................................................................100 Exercise 12 การพฒนาโปรแกรมเวบโดยใช Strut Framework .........................................................................101 12.1 การสราง Web Application Project............................................................................................101 12.2 การพฒนาโปรแกรม BookActionForm.java...................................................................................101 12.3 การพฒนาโปรแกรม AddBook.jsp..................................................................................................106 12.4 การพฒนาโปรแกรม AddBookAction.java.....................................................................................107 12.5 การพฒนาไฟล ApplicationResource.properties..........................................................................109 12.6 การพฒนาโปรแกรม Init.java และ Thankyou.html...........................................................................109 12.7 การพฒนาไฟล Struts-config.xml.................................................................................................109 12.8 การทดสอบโปรแกรม......................................................................................................................110 Exercise 13 การพฒนาโปรแกรมเวบโดยใช JSF Framework............................................................................112 13.1 การสราง Web Application Project............................................................................................112 13.2 การพฒนาโปรแกรม JSF Managed Bean........................................................................................113 13.3 การพฒนาโปรแกรม PriceValidator.java........................................................................................115 13.4 การพฒนาโปรแกรม AddBook.jsp..................................................................................................116 13.5 การก.าหนด Page Navigation......................................................................................................117 13.6 การก.าหนด Error Message.........................................................................................................118 13.7 การพฒนาโปรแกรม Thankyou.html, error.html และ Init.java.........................................................119 13.8 การพฒนาโปรแกรม AddBookServlet.java.....................................................................................119 13.9 การทดสอบโปรแกรม......................................................................................................................121 Exercise 14 การพฒนาโปรแกรมเวบโดยใช Visual JSF....................................................................................122 14.1 การสราง Web Application Project............................................................................................122 14.2 การพฒนาโปรแกรม HelloWeb......................................................................................................122 14.3 การทดสอบโปรแกรม......................................................................................................................126 14.4 การปรบปร'งโปรแกรม HelloWeb....................................................................................................127 14.5 การทดสอบโปรแกรม......................................................................................................................129 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 5. 5 Exercise 1 การสรางโปรเจค Web Application และไฟล HTML แบบฝกหดนจะเปนการสรางโปรเจค Web Application และพฒนาหนาเวบเพจเพอใหผ#ใชป%อนขอม#ล ของล#กคา โดยเวบเพจจะพฒนาดวยภาษา HTML ซ,งจะท.าหนาเปนส/วนอ0นพ1ตของโปรแกรมเพอใหผ#ใชป%อน ขอม#ลผ/าน Web Browser ขนตอนในการพฒนาโปรแกรม 1. สรางโปรเจค Web Application 2. พฒนาโปรแกรม addCustomer.html 1.1 การสราง Web Application Project เราจะเร0มตนสรางโปรแกรม Web-Base Application โดยการสราง Project ใหม/ข,นมาใน NetBeans ซ,งมขนตอนดงน 1. เลอกเมน# File > New Project 2. ในไดอะลอก New Project ใหเลอก Categories เปน Java Web และเลอก Projects เปน Web Application ดงร#ปท 1.1 รปท 1.1 การสรางโปรเจค Web Application 3. กด Next ก.าหนด Project Name: เปน WebApp แลวเลอก Project Location: เปน Directory ทเรา การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 6. 6 ตองการจะเกบไฟล5ไว ดงร#ปท 1.2 รปท 1.2 การกาหนดชอโปรเจค 4. จากนนใหเลอก Server เปน Apache Tomcat 6.0.18 ดงร#ปท 1.3 รปท 1.3 การเลอก Server ทจะตดตงโปรเจค การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 7. 7 5. กดป16ม Finish โปรแกรมจะท.าการสราง Projects และสรางไฟล5ต/างๆ ข,นมาโดยมโครงสรางของไฟล5ดง ร#ปท รปท 1.4 โครงสรางไฟล!ของโปรเจค WebApp 1.2 การพฒนาโปรแกรม addCustomer.html โปรแกรม addCustomer.html เปนเวบเพจทใชแสดงฟอร5มส.าหรบป%อนขอม#ลล#กคา เขาในฐานขอม#ล customers ซ,งจะสรางข,นในแบบฝกหดถดไป โดยมร#ปแบบดงร#ปท 1.5 โปรแกรม addBook.html มขนตอนการ พฒนาดงน 1. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด WebApp จากนนเลอกค.าสง New > Other 2. ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย ใต Category น ใหเราเลอก HTML แลวกด Next 3. ก.าหนด HTML File Name: เปน addCustomer แลวกด Finish 4. เขยน source code ของไฟล5 addCustomer.html ตาม Listing ท 1.1 โดยเราสามารถทจะลาก icon ประเภท HTML Forms ทอย#/ในหนาต/าง Palette เพอสามารถใหเขยนโปรแกรมไดง/ายข,น การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 8. 8 รปท 1.5 หนาเวบเพจ addCustomer.html Listing ท 1.1 โปรแกรม addCustomer.html <html> <head> <title> Add Customer </title> </head> <body> <H1> Add a new customer profile </H1> <p> <form action="addCustomer.do" method="POST"> Customer ID : <input name="id" /> <br> Name: <input name="name" /> <br> Address: <textarea name="addr" rows="4" cols="20"></textarea> <br> Mobile: <input name="mobile" size="9" /> <br> Fax: <input name="fax" size="9" /> <br> E-mail: <input name="email" size="25" /> <br><br> <input type="submit" value="Add" /> </form> </body> </html> 1.3 การทดสอบโปรแกรม 1. ท.าการ Clean and Build และ Undeploy and Deploy โปรแกรม WebApp 2. Run โปรแกรม WebApp 3. ท Web Browser เปลยน URL เปน http://localhost:8080/WebApp/addCustomer.html จะได ผลลพธ5ดงร#ปท 1.6 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 9. 9 หมายเหต1 หมายเลขพอร5ตโดยพนฐานจะเปน 8080 ยกเวนว/าจะก.าหนดหมายเลขอน รปท 1.6 ผลลพธ!ทไดจากการรนโปรแกรม addCustomer.html การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 10. 10 Exercise 2 การเขยนโปรแกรม Java Servlet เพออ!านค!า พาราม"เตอร เนอหาทตองศกษากอน การสรางโปรเจค Web Application และสรางไฟล5 HTML แบบฝกหดนจะเปนการพฒนาโปรแกรม Java Servlet เพอแสดงรายละเอยดของค/าพาราม0เตอร5ทผ#ใช ป%อนเขามาออกทางโปรแกรม Web Browser และแสดงผลการออกออกทาง Web Browser 2.1 การพฒนาโปรแกรม CustomerServlet.java โปรแกรม CustomerServlet.java เปนโปรแกรมทถ#กเรยกใชโดย addCustomer.html เมอผ#ใชกดป16ม Add โปรแกรมนจะท.าหนาทน.าค/าพาราม0เตอร5ต/างๆ ทผ#ใชป%อนมาแสดงผล โดยมขนตอนการท.างานดงน 1. อ/านค/าพาราม0เตอร5ต/างๆ ทส/งมาจาก addCustomer.html 2. แสดงรายละเอยดของค/าต/างๆ 2.1.1 การอ/านค/าพาราม0เตอร5จาก addCustomer.html เวบเพจ addCustomer.html จะส/งขอม#ลของรายชอหนงสอใหม/ผ/านมาทางพาราม0เตอร5ต/างๆ ดงน ● id รหสของล#กคา ● name ชอล#กคา ● addr ทอย#/ล#กคา ● mobile หมายเลขโทรศพท5มอถอ ● fax หมายเลข fax ● email ของล#กคา พาราม0เตอร5ต/างๆ เหล/านจะถ#กส/งผ/านโปรโตคอล Http และในโปรแกรมเราสามารถทจะอ/านค/าพารา- ม0เตอร5เหล/านไดจากออปเจค request โดยเรยกใชเมธอด getParameter() ซ,งโปรแกรมส/วนนจะมค.าสงต/างๆ ดงน String id = request.getParameter("id"); String name = request.getParameter("name"); String addr = request.getParameter("addr"); String mobile = request.getParameter("mobile"); String fax = request.getParameter("fax"); String email = request.getParameter("email"); การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 11. 11 2.1.2 การแสดงรายละเอยดของค/าต/างๆ โปรแกรม Servlet จะสามารถแสดงผลออกทาง Web Browser ไดโดยการเขยนโคด HTML ภายใน ค.าสง out.println() โดยมค.าสงในเมธอด processRequest() ดงน response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Customer Information</title>"); out.println("</head>"); out.println("<body>"); String id = request.getParameter("id"); String name = request.getParameter("name"); String addr = request.getParameter("addr"); String mobile = request.getParameter("mobile"); String fax = request.getParameter("fax"); String email = request.getParameter("email"); out.println("<h1> Customer Information </h1>"); out.println("<b>ID: </b>" + id + "<BR>"); out.println("<b>Name: </b>" + name + "<BR>"); out.println("<b>Address: </b>" + addr + "<BR>"); out.println("<b>Mobile: </b>" + mobile + "<BR>"); out.println("<b>Fax: </b>" + fax + "<BR>"); out.println("<b>E-mail: </b>" + email + "<BR>"); out.println("</body>"); out.println("</html>"); out.close(); 2.2 ขนตอนการพฒนาโปรแกรม CustomerServlet.java เราสามารถทจะพฒนาโปรแกรม CustomerServlet.java ตามขนตอนดงน 1. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด WebApp จากนนเลอกค.าสง New > Other... 2. ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย ใต Category น ใหเราเลอก Servlet แลวกด Next ดงร#ปท 2.1 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 12. 12 รปท 2.1 การเลอกไฟล!ประเภท Servlet 3. ก.าหนด Class Name: เปน CustomerServlet และก.าหนด Package เปน servlet ดงร#ปท 2.2 รปท 2.2 การกาหนดชอ Servlet 4. กด Next ก.าหนด URL Pattern(s): เปน /addCustomer.do ดงร#ปท 2.3 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 13. 13 รปท 2.3 การกาหนด URL Pattern 5. กด Finish โปรแกรม NetBeans จะสรางไฟล5 CustomerServlet.java ไวภายใต Source Packages โดยจะอย#/ใน Directory ชอ servlet 6. ในหนาต/าง editor ใหแกไข sourcecode ของไฟล5 CustomerServlet.java โดยม source code ของ เมธอด processRequest ตามหวขอ 2.1.2 2.3 การทดสอบโปรแกรม 1. ท.าการ Build และ Deploy โปรแกรม WebApp 2. Run โปรแกรม WebApp 3. ท Web Browser เปลยน URL เปน http://localhost:8080/WebApp/addCustomer.html 4. ทดลองป%อนขอม#ลดงร#ป 5. โปรแกรมจะแสดงผลดงร/ปท! 2.4 และ 2.5 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 14. 14 รปท 2.4 การป+อนขอมลหนา addCustomer.html รปท 2.5 ผลลพธ!จากการเรยกโปรแกรม CustomerServlet การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 15. 15 2.4 การปรบปรงโปรแกรมเพอใหแสดงผลภาษาไทยและเร%ยกไฟล' addCustomer.html เมอเร(มตน เราสามารถท!จะปรบปร'งโปรเจคน&เพ!อใหเรยกไฟล addCustomer.html โดยอตโนมต#เม!อเร#!มตนรน โปรแกรม โดยการก.าหนดพาราม#เตอร Welcome Files ใหเป6นไฟลดงกล"าว โดยมข&นตอนดงน& 1. ในหนาต/าง Projects ขยายโหนด WebApp > Web Pages > WEB-INF 2. เลอกไฟล5 web.xml แลวเลอกแทป Pages ท.าการแกไข Welcome Files เปน addCustomer.html ดง ร#ปท 2.6 รปท 2.6 การจดการไฟล! web.xml นอกจากนถาเราทดลองป%อนขอม#ลภาษาไทย ลงไปในจะพบว/า โปรแกรม Web Browser บางตวจะแสดง ผลลพธ5ภาษาไทยไม/ถ#กตอง เราสามารถแกไขไดโดยการก.าหนดใหการเขารหสของพาราม0เตอร5ทส/งมาเปน UTF- 8 โดยเพ0มค.าสงดงน request.setCharacterEncoding("UTF-8"); การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 16. 16 Exercise 3 โปรแกรมเวบส%าหรบการท%าโพล เนอหาทตองศกษากอน การเขยนโปรแกรม Java Servlet เพออ/านค/าพาราม0เตอร5 แบบฝกหดนจะเปนการพฒนาโปรแกรม Java Servlet เพอท.า Poll โดยใหผ#ใชสามารถทจะโหวตเลอก ภาษาคอมพ0วเตอร5ทชอบได แลวโปรแกรมจะแสดงผลการโหวตทาง Web Browser 3.1 การพฒนาโปรแกรม vote.html โปรแกรม vote.html เปนหนาเวบทใหผ#ใชสามารถทจะท.าการโหวตเลอกภาษาคอมพ0วเตอร5ได โดยเมอผ# ใชกดป16ม Vote โปรแกรมเวบกจะไปท.าการเรยก url ทชอ processVote โปรแกรมนมหนาเวบดงร#ปท 3.1 รปท 3.1 การแสดงผลของโปรแกรม vote.html และม sourcecode ดง Listing ท 3.1 Listing ท 3.1 โปรแกรม vote.html <html> <head> <title> Web Voting</title> </head> <body> <form action="processVote" method="POST"> Select a computer language <BR> <input type="radio" name="lang" value="1" /> Java <br> <input type="radio" name="lang" value="2" /> C# <br> <input type="radio" name="lang" value="3" /> C <br> <input type="radio" name="lang" value="4" /> Pascal <br> การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 17. 17 <input type="submit" value="Vote" /> </form> </body> </html> 3.2 การพฒนาโปรแกรม VoteServlet.java โปรแกรม VoteServlet.java เปนโปรแกรมทถ#กเรยกใชโดย vote.html เมอผ#ใชกดป16ม Vote โปรแกรม นจะท.าหนาทเพอน.าค/าทผ#ใชโหวตมาประมวลผล โดยมขนตอนการท.างานดงน 1. ก.าหนดตวแปร counter และ lang 2. อ/านค/าพาราม0เตอร5ต/างๆทส/งมาจาก vote.html และท.าการประมวลผล 3. แสดงผลการโหวต 3.2.1 ก.าหนดตวแปร counter และ lang ตวแปร count เปนอะเรย5เพอทจะเกบจ.านวนผลโหวตของภาษาคอมพ0วเตอร5แต/ละภาษา และตวแปร lang เปนอะเรย5ของ String เพอทจะเกบรายชอภาษาคอมพ0วเตอร5 ตวแปรทงสองเปนตวแปรของออปเจคทจะประกาศ นอกเมธอด โดยมค.าสงประกาศดงน String []lang ={"Java", "C#", "C", "Pascal"}; int []count = new int[4]; 3.2.2 อ/านค/าพาราม0เตอร5ต/างๆทส/งมาจาก vote.html และท.าการประมวลผล เวบเพจ vote.html จะส/งขอม#ลของการโหวตมาในพาราม0เตอร5ทชอ lang โดยจะมค/าเปนหมายเลข 1- 4 ในทนจะมค.าสง request.getParameter เพอจะอ/านค/าทโหวตมา จากนนจะท.าการแปลงค/าซ,งเปน String ให เปนค/าจ.านวนเตม จากนนจะเปนการเพ0มจ.านวนโหวตในตวแปร count ตามค/า index ทสอดคลองกบภาษาท โหวตมา โดยมค.าสงต/างๆ ดงน String vote = request.getParameter("lang"); int voteNum = Integer.parseInt(vote) – 1; count[voteNum]++; 3.2.3 การแสดงผลการโหวต ค.าสงแสดงผลการโหวตจะเปนค.าสงเพอแสดงค/าของตวแปร count โดยมค.าสงดงน for (int i = 0; i < count.length; i++) { out.println(lang[i] +" = " + count[i] + "<BR>"); การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 18. 18 } โปรแกรม VoteServlet.java จะม sourcecode ดง Listing ท 3.2 Listing ท 3.2 โปรแกรม VoteServlet.java import java.io.*; import java.util.HashSet; import javax.servlet.*; import javax.servlet.http.*; public class VoteServlet extends HttpServlet { String []lang ={"Java", "C#", "C", "Pascal"}; int []count = new int[4]; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String vote = request.getParameter("lang"); int voteNum = Integer.parseInt(vote) - 1; count[voteNum]++; out.println("<html>"); out.println("<head>"); out.println("<title>Servlet VoteServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet VoteServlet at " + request.getContextPath() + "</h1>"); for (int i = 0; i < count.length; i++) { out.println(lang[i] +" = " + count[i] + "<BR>"); } out.println("</body>"); out.println("</html>"); out.close(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 19. 19 public String getServletInfo() { return "Short description"; } // </editor-fold> } 3.3 ขนตอนการพฒนาโปรเจ*ค Voter เราสามารถทจะพฒนาแบบฝกหดนทชอโปรเจค Voter ตามขนตอนดงน 1. เลอกค.าสงสราง New Project > Web Application จากนนก.าหนดชอโปรเจคเปน Voter ดงร#ปท 3.2 รปท 3.2 การสรางโปรเจค Web Application 2. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด Voter จากนนเลอกค.าสง New > Other... 3. ในไดอะลอก New File ใหเลอก Categories ทชอ Java Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภายใต Category น ใหเราเลอก HTML แลวกด Next 4. ก.าหนด HTML File Name: เปน vote แลวกด Finish 5. ในหนาต/าง Editor เขยน Source code ของ vote.html ดง Listing ท 3.1 6. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด Voter จากนนเลอกค.าสง New > Servlet 7. ก.าหนด Class Name: เปน VoteServlet.java และ Package เปน controller แลวกด Next ก.าหนด URL Pattern(s): เปน /processVote แลวกด Finish 8. ในหนาต/าง Editor เขยน Source code ของ VoteServlet.java ดง Listing ท 3.2 9. กด Save แลวท.าการ run โปรเจคเพอทดสอบโปรแกรมโดยเรยก URL ท การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 20. 20 http://localhost:8080/Voter/vote.html โดยจะไดผลลพธ5ดงตวอย/างในร#ปท3.3 รปท 3.3 ตวอย-างผลลพธ!ของโปรเจค Voter 3.4 การปรบปรงโปรแกรม VoteServlet.java ขนตอนนจะเปนการปรบปร1งโปรแกรม VoteServlet.java เพอป%องกนการโหวตซ.าทงนจะไม/อน1ญาตให ผ#ใชทใชหมายเลขไอพเดยวกนโหวตซ.าได โดยจะเกบหมายเลขไอพทท.าการโหวตแลวในออปเจคชน0ด HashSet การพฒนาโปรแกรมนมค.าสงเพ0มเต0มทส.าคญดงน 1. ก.าหนดตวแปร voters 2. อ/านหมายเลขไอพของผ#โหวตและเพ0มคะแนนการโหวตหากหมายเลขไอพนไม/เคยโหวต 3.4.1 ก.าหนดตวแปร voters ตวแปร voters เปนตวแปรชน0ด HashSet ทจะเกบหมายเลขไอพของผ#โหวต โดยจะประกาศเปนตวแปร ออปเจคทมค.าสงประกาศดงน HashSet voters = new HashSet(); 3.4.2 การอ/านหมายเลขไอพของผ#ใช การอ/านหมายเลขไอพของผ#ใชท.าไดโดยเรยกใช ค.าสง getRemoteAddr() ในออปเจค request เมอ ทราบหมายเลขไอพ เราสามารถทจะตรวจสอบไดว/าหมายเลขนเคยโหวตแลวหรอไม/ โดยการตรวจสอบว/าออปเจค voters มค/าหมายเลขไอพนหรอไม/โดยใชค.าสง contain() หากยงไม/เคยโหวตกใหเพ0มค/าตวนบและเพ0มหมายเลข ไอพนในออปเจค voters โดยมค.าสงดงน String ip = request.getRemoteAddr(); การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 21. 21 if (!voters.contains(ip)) { count[voteNum]++; voters.add(ip); } else { out.println("This IP address has been voted"); } ส.าหรบโปรแกรม VoteServlet.java ทปรบปร1งใหม/จะม sourcecode ดง Listing ท 3.3 Listing ท 3.3 โปรแกรม VoteServlet.java เพอป%องกนการโหวตซ.า import java.io.*; import java.util.HashSet; import javax.servlet.*; import javax.servlet.http.*; public class VoteServlet extends HttpServlet { String []lang ={"Java", "C#", "C", "Pascal"}; int []count = new int[4]; HashSet voters = new HashSet(); protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String vote = request.getParameter("lang"); int voteNum = Integer.parseInt(vote) - 1; String ip = request.getRemoteAddr(); if (!voters.contains(ip)) { count[voteNum]++; voters.add(ip); } else { out.println("This IP address has been voted"); } out.println("<html>"); out.println("<head>"); out.println("<title>Servlet VoteServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet VoteServlet at " + request.getContextPath() + "</h1>"); for (int i = 0; i < count.length; i++) { out.println(lang[i] +" = " + count[i] + "<BR>"); } out.println("</body>"); out.println("</html>"); out.close(); } การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 22. 22 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } } การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 23. 23 Exercise 4 การเชอมต!อกบ MySQL Database เนอหาทตองศกษากอน - แบบฝ8กหดน&เป6นข&นตอนการต#ดต&ง NetBeans เพ!อเช!อมต"อกบโปรแกรมฐานขอม/ล MySQL ท!เป6น โปรแกรมฐานขอม/ล OpenSource แบบ FreeWare ซ:!งปกต#จะมตวอย"างฐานขอม/ลท!สรางมาพรอมแลวอย/"หลาย ช'ด หน:!งในน&นคอฐานขอม/ลท!ช!อ test ท!เราจะใชในการทดสอบการเช!อมต"อกบโปรแกรม NetBeans 4.1 การต(ดตงโปรแกรมฐานขอม-ล MySQL ขนตอนนเปนการต0ดตงโปรแกรม MySQL Server 5.0 โดยมขนตอนดงน 1. ท.าการดาวน5โหลดโปรแกรม MySQL Server 5.0 จาก URL ทชอ http://www.mysql.com/ 2. ท.าการ unzip โปรแกรม mysql-5.0.xx-win32.zip 3. รนโปรแกรม setup.exe เพอท.าการต0ดตงโปรแกรม MySQL Server 5.0 โดยโปรแกรมจะแสดง ไดอะลอกดงร#ปท 4.1 รปท 4.1 การตดตง MySQL Server 4. กดป16ม Next แลวท.าการต0ดตงโปรแกรมตามขนตอนต/างๆ โดยใหก.าหนดไดเรกทอรทตองการต0ดตงตาม ความเหมาะสม 4.2 การสราง Database Connection เม!อต#ดต&ง Database แลว เราสามารถท!จะใช NetBeans เพ!อเช!อมต"อ Database โดยใช JDBC Driver การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 24. 24 ซ:!งในท!น&จะใช Driver ท!ช!อ MySQL Connector/J ซ:!งเป6น Driver ท!พฒนาโดยใชภาษาจาวาและต#ดต"อโดยตรง กบ Database และโปรแกรม NetBeans 6.5 ไดต#ดต&งมาไวใหแลว เราสามารถท!จะเช!อมต"อกบ Database โดยใช Driver ดงกล"าวได โดยมข&นตอนดงน& 1. ในโปรแกรม NetBeans เลอกแทป Services แลวขยายโหนด Databases > Drivers 2. เลอกโหนด MySQL(Connector/J Driver) จากน&นคล#;กขวาเลอก Connect Using.. ดงร/ปท! 4.2 รปท 4.2 การเลอกคาสงเชอมต-อ Database 3. ในไดอะลอก New Database Connection ใหระบ' ● Host: เป6น localhost ● Port: เป6น 3306 ● Database: เป6น test ● User Name: เป6น root 4. ส.าหรบ Password: ใหใส"ค"าตามท!ก.าหนดไวในตอนต#ดต&งโปรแกรม MySQL ซ:!งในท!น&จะมค"าเป6น root การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 25. 25 5. ท.าการเลอก Remember password โดยไดอะลอกจะแสดงผลไดดงร/ปท! 4.3 รปท 4.3 การกาหนดค-าในการเชอมต-อ Database 6. กดป'<ม OK เม!อไดอะลอกแสดงขอความใหเลอก database schema.ใหกดป'<ม OK อกคร&งซ:!งตอนน&ถา ขยายแทบ Database ในหนาต"าง Runtime จะเหน Connection ใหม"ดงร/ปท! 4.4 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 26. 26 รปท 4.4 การแสดงการเชอมต-อ 4.3 การสรางตาราง books ในท!น&จะก.าหนดใหสราง Table ท!ช!อ books โดยใหอย/"ภายใต Schema ท!ช!อ test โดย Table น&ก.าหนด ใหม Column ต"างๆ ดงตารางท! 4.1 ตารางท! 4.1Table books ชอ ชนด ขนาด isbn varchar 20 title varchar 70 author varchar 50 price float - เราจะใชโปรแกม NetBeans ในการท!จะสราง Table น&โดยมข&นตอนต"างๆ ดงน& 1. ในหนาต"าง Runtime ขยายแทบ Databases > jdbc:mysql://localhost:3306/test แลวจะเหนรายการ Tables การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 27. 27 2. คล#;กขวาท! Tables แลวเลอก Create Table... ดงร/ปท! 4.5 รปท 4.5 การเลอกคาสงสรางตาราง 3. ภายในไดอะลอก Create Table ใหก.าหนด Table Name เป6น books แลวใส" Column ต"างๆ ดงตารางท! 4.1 และก.าหนดให isbn เป6น Key โดยไดอะลอกจะแสดงผลไดดงร/ปท! 4.6 รปท 4.6 การสรางตารางชอ books 4. แลวกด OK ซ:!งตอนน&ในหนาต"าง Runtime ถาขยายแทบ Tables > books จะเหน Column ต"างๆ ดงร/ป ท! 4.7 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 28. 28 รปท 4.7 ผลลพธ!จากการสรางตาราง 4.4 การใชค/าสง SQL ใน NetBeans ภายหลงจากท!มการสราง Table ท!ช!อ books เราสามารถท!จะใชโปรแกรม NetBeans สรางค.าส!ง SQL เพ!อท!จะต#ดต"อกบฐานขอม/ล ในท!น&จะแสดงการเพ#!มขอม/ลลงใน Table โดยมข&นตอนต"างๆดงน& 1. ตรงโหนด Procedures คล#;กขวาท!โหนดแลวเลอกค.าส!ง Execute Command... หนาต"าง SQL Editor จะปรากฎข:&นมา 2. ใหป>อนค.าส!ง SQL เป6น INSERT INTO books VALUES ('123', 'Intro to Java Programming', 'Thanachart', 500.00) 3. กด Enter หรอ (Ctrl-Shift-E) เพ!อรนค.าส!ง SQL 4. เราสามารถท!จะด/ขอม/ลท!ป>อนเขาไปได โดยเลอกค.าส!ง View Data.. จาก Table ท!ช!อ books ดงร/ปท! 4.8 รปท 4.8 การเรยกคาสงดขอมลในตาราง การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 29. 29 Exercise 5 การพฒนาโปรแกมเวบเพอต"ดต!อกบฐานขอม,ล เนอหาทตองศกษากอน การเชอมต/อกบ MySQL Database แบบฝกหดนจะเปนการพฒนาโปรแกรม Web Application โดยใช Java Servlet เพอเชอมต/อกบฐาน ขอม#ล ในทนก.าหนดใหใชฐานขอม#ล MySQL ซ,งม Table ทชอ books โปรแกรมทจะพฒนาข,นเปนการเพ0ม ขอม#ลลงใน Table ดงกล/าว โดยก.าหนดใหผ#ใชป%อนรายละเอยดขอม#ลผ/านเวบเพจทชอ addBook.html ซ,งเมอผ# ใชกดป16ม Add โปรแกรมกจะไปเรยกโปรแกรม Servlet ทชอ AddBookServlet ซ,งจะมค.าสงในอ/านค/า parameter ทผ#ใชป%อนเขามาและท.าการใส/ขอม#ลลงใน Table ดงกล/าว โดยใชช1ดค.าสง JDBC ขนตอนในการพฒนาโปรแกรม 1. สรางโปรเจค WebBaseDB 2. พฒนาโปรแกรม addBook.html และ Thankyou.html 3. พฒนาโปรแกรม AddBookServlet.java 5.1 การสราง Web Application Project เราจะเร0มตนสรางโปรแกรม Web-Base Database โดยการสราง Project ใหม/ข,นมาใน NetBeans ซ,งม ขนตอนดงน 1. เลอกเมน# File > New Project.. 2. ในไดอะลอก New Project ใหเลอก Categories เปน Java Web และเลอก Projects เปน Web Application แลวกด Next 3. ก.าหนด Project Name: เปน WebBaseDB แลวเลอก Project Location: เปน Director ทเราตองการ จะเกบไฟล5ไว จากนนเลอก Server เปน Apache Tomcat 6.0.18 แลวกด Finish 5.2 การพฒนาโปรแกรม addBook.html โปรแกรม addBook.html เปนเวบเพจทใชแสดงฟอร5มส.าหรบป%อนขอม#ลหนงสอใหม/เขาในฐานขอม#ล books ซ,งมลกษณะดงร#ปท 5.1 โปรแกรม addBook.html มขนตอนการพฒนาดงน 1. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด WebBaseDB จากนนเลอกค.าสง New > Other... 2. ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย ใต Category น ใหเราเลอก HTML แลวกด Next การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 30. 30 3. ก.าหนด HTML File Name: เปน addBook แลวกด Finish 4. เขยน source code ของไฟล5 addBook.html ตาม Listing ท 5.1 โดยเราสามารถทจะลาก icon ประเภท HTML Forms ทอย#/ในหนาต/าง Palette ดงร#ปท 5.2 เพอสามารถใหเขยนโปรแกรมไดง/ายข,น รปท 5.1 หนาเวบเพจ addBook.html รปท 5.2 ตวอย-างหนาต-าง Palette สาหรบการเขยนคาสง HTML Listing ท 5.1 โปรแกรม addBook.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Add a new book</title> </head> <body> <h1>Add a new book</h1> การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 31. 31 <P> <form action="addBook.do" method="POST"> ISBN : <input type="text" name="isbn" value="" size="15"/> <BR> Title : <input type="text" name="title" value="" size="50"/> <BR> Author : <input type="text" name="author" value="" size="50"/> <BR> Price : <input type="text" name="price" value="" size="10"/> <BR> <input type="submit" value="Add" /> </form> </body> </html> 5.3 การพฒนาโปรแกรม Thankyou.html โปรแกรม Thankyou.html เปนเวบเพจทใชแสดงใหเหนว/าขอม#ลไดถ#กเพ0มเขาไปในฐานขอม#ลแลว โดย ม sourcecode ดง Listing ท 2 ซ,งขนตอนการพฒนาโปรแกรมนจะเปนเช/นเดยวกบการพฒนาโปรแกรม addBook.html Listing ท 5.2 โปรแกรม Thankyou.html <html> <head> <title>Thank you</title> </head> <body> <H1>Thank you for inserting data </H1> </body> </html> 5.4 การพฒนาโปรแกรม AddBookServlet.java โปรแกรม AddBookServlet.java เปนโปรแกรมทถ#กเรยกใชโดย addBook.html เมอผ#ใชกดป16ม Add โปรแกรมนจะท.าหนาทเพอต0ดต/อกบฐานขอม#ลโดยมขนตอนการท.างานดงน 1. อ/านค/าพาราม0เตอร5ต/างๆทส/งมาจาก addBook.html 2. เชอมต/อกบฐานขอม#ล books 3. เพ0มรายชอหนงสอใหม/ลงในฐานขอม#ล books 4. เรยกเวบเพจ Thankyou.html การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 32. 32 5.4.1 การอ/านค/าพาราม0เตอร5จาก addBook.html เวบเพจ addBook.html จะส/งขอม#ลของรายชอหนงสอใหม/ผ/านมาทางพาราม0เตอร5ต/างๆดงน ● isbn หมายเลข ISBN ของหนงสอ ● title ชอหนงสอ ● author ชอผ#แต/ง ● price ราคาหนงสอ พาราม0เตอร5ต/างๆเหล/านจะถ#กส/งผ/านโปรโตคอล Http และในโปรแกรมเราสามารถทจะอ/านค/า พาราม0เตอร5เหล/านไดจากออปเจค request โดยเรยกใชเมธอด getParameter() ซ,งโปรแกรมส/วนนจะมค.าสง ต/างๆดงน String isbn = request.getParameter("isbn"); String author = request.getParameter("author"); String title = request.getParameter("title"); String priceStr = request.getParameter("price"); 5.4.2 การเชอมต/อกบฐานขอม#ล การเขยนโปรแกรมเพอเชอมต/อกบฐานขอม#ลเพอเปนการเรยกใชค.าสง SQL ซ,งจะตองใช JDBC API โดยจะมขนตอนดงน ● ท.าการโหลด Driver ส.าหรบ Database Server ทตองการเชอมต/อ ผ/าน DriverManager หรอ โหลด DataSource จาก JNDI ● ด,งออปเจคชน0ด Connection จาก Driver หรอ Datasource ● ด,งออปเจคชน0ด Statement จากออปเจคชน0ด Connection ● เรยกใชค.าสง SQL โดยใชเมธอด executeQuery() หรอ executeUpdate() ของออปเจคชน0ด Statement โปรแกรม AddBookServlet จะใชว0ธการโหลด DataSource จาก JNDI ซ,งเราไม/จ.าเปนทจะตองโหลด ท1กครงทมการเรยกใชโปรแกรม Servlet นแต/จะท.าการโหลดครงแรกทมการเรยกใช Servlet น ดงนนเราจะเขยน sourcecode ส/วนนทเมธอด init() ดงน private Connection conn; public void init() { try { conn = jdbcTest.getConnection(); } catch (Exception ex) { System.out.println(ex); การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 33. 33 } } 5.4.3 เพ0มรายชอหนงสอใหม/ลงในฐานขอม#ล เมอเชอมต/อฐานขอม#ลและไดออปเจคชน0ด Connection มาแลว เราสามารถทจะเรยกใชค.าสง SQL ได ซ,งในทนคอค.าสง INSERT ซ,งจะมร#ปแบบของค.าสงดงน INSERT INTO books VALUES(....) โดยเราจะใชค/าจากพาราม0เตอร5ต/างๆทรบมา ดงนนถาขอม#ลทป%อนเขามาถ#กตองเราสามารถทจะเพ0มรายชอ หนงสอใหม/ลงในฐานขอม#ลโดยใชค.าสงดงน Statement stmt = conn.createStatement(); String sql = "INSERT INTO books VALUES('"+isbn+"','" + title +"','" +author +"',"+price +")"; int numRow = stmt.executeUpdate(sql); 5.4.4 การเรยกเวบเพจ Thankyou.html เมอขอม#ลไดถ#กเพ0มลงไปในฐานขอม#ลแลว โปรแกรม AddBookServlet จะท.าการเรยกเวบเพจ Thankyou.html โดยการเรยกใช RequestDispatcher ดงน RequestDispatcher obj = request.getRequestDispatcher("Thankyou.html"); if (numRow == 1 && obj != null) { obj.forward(request,response); } โปรแกรม AddBookServlet.java จะม sourcecode ทงหมดดง Listing ท 5.3 Listing ท 5.3 โปรแกรม AddBookServlet.java package controller; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import javax.naming.Context; import javax.naming.InitialContext; import javax.servlet.*; import javax.servlet.http.*; import javax.sql.DataSource; การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 34. 34 public class AddBookServlet extends HttpServlet { @Resource(name = "jdbc/test") private DataSource jdbcTest; private Connection conn; public void init() { try { conn = jdbcTest.getConnection(); } catch (Exception ex) { System.out.println(ex); } } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Add a new book</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1> Add a new book </h1>"); try { String isbn = request.getParameter("isbn"); String author = request.getParameter("author"); String title = request.getParameter("title"); String priceStr = request.getParameter("price"); float price = Float.parseFloat(priceStr); Statement stmt = conn.createStatement(); String sql = "INSERT INTO books VALUES('"+isbn+"','" + title +"','" +author +"',"+price+")"; int numRow = stmt.executeUpdate(sql); RequestDispatcher obj = request.getRequestDispatcher("Thankyou.html"); if (numRow == 1 && obj != null) { obj.forward(request,response); } } catch (SQLException ex) { out.println("Error " + ex); return; } out.println("</body>"); out.println("</html>"); out.close(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 35. 35 } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } } 5.5 ขนตอนการพฒนาโปรแกรม AddBookServlet.java เราสามารถทจะพฒนาโปรแกรม AddBookServlet.java ตามขนตอนดงน 1. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด WebBaseDB จากนนเลอกค.าสง New > Other... 2. ในไดอะลอก New File ใหเลอก Categories ทชอ Web ซ,งโปรแกรมกจะแสดง File Types ต/างๆ ภาย ใต Category น ใหเราเลอก Servlet แลวกด Next 3. ก.าหนด Class Name: เปน AddBookServlet และก.าหนด Package เปน controller แลวกด Next 4. ก.าหนด URL Pattern(s): เปน /addBook.do แลวกด Finish 5. โปรแกรม NetBeans จะสรางไฟล5 AddBookServlet.java ไวภายใต Source Packages โดยจะอย#/ใน Directory ชอ controller 6. ในหนา Editor ใหคล0;กขวาเลอก Insert Code... > Use Database ดงร#ปท 5.3 รปท 5.3 การเลอกคาสง Use Database 7. ในไดอะลอก Choose Database กดป16ม Add... 8. ในไดอะลอก Add Data Source Reference กดป16ม Add... 9. ในไดอะลอก Create Data Source ก.าหนด JNDI Name เปน jdbc/test และเลอก Database Connection เปน jdbc:mysql//localhost:3306/test ดงร#ปท 5.4 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 36. 36 รปท 5.4 การกาหนดค-า JNDI 10. กดป16ม OK โปรแกรมจะกลบไปแสดงไดอะลอก Add Data Source Reference ใหก.าหนด Reference Name: เปน jdbc/test ดงร#ปท 5.5 รปท 5.5 การกาหนดค-า Reference Name 11. กดป16ม OK จะไดไดอะลอก Choose Database ดงร#ปท 5.6 รปท 5.6 หนาไดอะลอก Choose Database 12. กดป16ม OK โปรแกรม NetBeans จะเพ0ม context.xml ใหอตโนมต0 โดยสามารถด#ไดจากการ ขยายโหนด WebBaseDB > Web Pages > META-INF [หมายเหต1 ในกรณทใช GlassFish Server ค.าสงนจะ เขยนในไฟล5 sun-web.xml] 13. โปรแกรมจะเพ0ม sourcecode ใหดงน การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 37. 37 @Resource(name = "jdbc/test") private DataSource jdbcTest; 14. ในหนาต/าง editor ใหแกไข sourcecode ของไฟล5 AddBookServlet.java ใหเปนไปตาม Listing ท 5.3 15. โปรแกรมจะมขอผ0ดพลาดอย#/เนองจากยงไม/ไดท.าการ import คลาสต/างๆ เราสามารถแกไขไดโดยคล0;ก ขวาในหนาต/าง editor แลวเลอก Fix Imports หรอกด Ctrl+Shift+I โปรแกรมจะแสดงชอคลาสต/างๆ ท ตอง Import มาใหเลอก ในทนจะตองเลอกคลาสใหถ#กตองดงร#ปท 5.7 รปท 5.7 การกาหนดคลาสทตอง import 16. ท.าการ Save โปรแกรมโดยการกด Ctrl+S 17. ตรวจสอบไฟล5 context.xml จะเปนดง Listing ท 5.4 Listing ท 5.4 ไฟล5 context.xml <?xml version="1.0" encoding="UTF-8"?> <Context path="/WebBaseDB"> <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/test" password="root" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/test" username="root"/> </Context> 5.6 ทดสอบโปรแกรม 1. ท.าการ Build และ Deploy โปรแกรม WebBaseDB 2. Run โปรแกรม WebBaseDB ทงนตองท.าการรน MySQL Database Server ก/อน 3. โปรแกรมจะแสดงหนา addBook.html ใหเราใส/ขอม#ล ลองทดลองใส/ขอม#ลดงร#ปท 5.8 การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 38. 38 รปท 5.8 ตวอย-างการป+อนขอมล Books 4. เมอกดป16ม Add โปรแกรมกจะใส/ขอม#ลลงใน Database และแสดงผลลพธ5ดงร#ปท 5.9 รปท 5.9 ผลลพธ!ทแสดงทาง Web Browser 5. เราสามารถทจะด#ขอม#ลทป%อนเขาไปได โดยไปทหนาต/าง Services ของโปรแกรม NetBeans แลวเลอก ค.าสง View Data.. จาก Table ทชอ books ดงร#ปท 5.10 รปท 5.10 ขอมลทถกป+อนเขา Table ทชอ books การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 39. 39 Exercise 6 โปรแกรมเวบเพอสาธ"ตขอบเขตของออปเจค เนอหาทตองศกษากอน การเขยนโปรแกรม Servlet เพออ/านค/าพาราม0เตอร5 แบบฝกหดนจะเปนการพฒนาโปรแกรม Java Servlet เพออธ0บายขอบเขตการท.างานของออปเจคใน โปรแกรมแบบเวบ (Object Scope) ทมอย#/สแบบคอ Page, Request, Session และ Web (Application) โดย จะทดลองส/งค/าของออปเจคผ/านกนระหว/างโปรแกรม Servlet สองช1ด 6.1 การพฒนาโปรแกรมเพอสาธ(ตขอบเขตของ Object แบบ Request ออปเจคทสรางข,นในโปรแกรม Java Servlet ในแต/โปรแกรมจะมขอบเขตการใชงาน (scope) อย#/เพยง แค/โปรแกรมนนๆ (url นนๆ) ไม/สามารถทจะใชโปรแกรม Java Servlet หรอ JSP ตวอนเรยกใชออปเจคตวนน ได การจะใหโปรแกรม Servlet หรอ JSP อนๆ เรยกออปเจคใดๆ ไดนน จะตองมการเขยน source code เพอส/ง ผ/านค/าของออปเจคนนไปยงออปเจคอนๆ ทงนเราสามารถก.าหนดขอบเขตการใชงานเพ0มเต0มไดอก 3 แบบคอ ● Request ออปเจคสามารถถ#กเรยกใชเมอมการเรยกมาจากโปรแกรม Servlet/JSP อน ● Session ออปเจคจะเกบอย#/ใน Session ของ Web Browser ตราบเท/าทยงมการใชงานอย#/ ● Application ออปเจคจะสามารถใชงานไดในโปรแกรม Servlet/JSP ใดๆ ทอย#/ใน Web Application เดยวกน การส/งค/าของออปเจคจาก url หน,งมายง url อนท.าไดหลายว0ธ แบบฝกหดทผ/านมาเปนการแสดงใหเหนถ,ง การส/งค/าพาราม0เตอร5ทอย#/ในฟอร5มของไฟล5 HTML ไปยงโปรแกรม Java Servlet ทสามารถเรยกใชไดโดย ค.าสง request.getParameter() นอกจากนเรายงสามารถทจะส/งออปเจคไปยง โปรแกรม Java Servlet หรอ JSP อนโดยการใชค.าสง setAttribute() อาท0เช/นส/งค/าของตวแปร String ชอว/า name โดยจะเกบไวใน attribute ทชอ RequestName และมร#ปแบบค.าสงดงน String name = “Thanisa”; request.setAttribute(“RequestName”, name); ซ,งจะท.าให url ทท.าการเรยกถดไปสามารถเรยกใช attribute ทชอ RequestName และด,งค/าของตวแปร name ออกมาได โดยใชค.าสง getAttribute() โดยมร#ปแบบดงน String name = (String) request.getAttribute(“RequestName”); ส/วนค.าสงทใชในการทจะ forward จากโปรแกรม Servlet ตวหน,งไปยง url อนจะเปนค.าสงทมร#ปแบบ การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 40. 40 ดงน RequestDispatcher obj = request.getRequestDispatcher("SecondServlet"); obj.forward(request,response); โดยท SecondServlet คอชอ url ทตองการ forward ในขนตอนนจะเปนการพฒนาโปรแกรมเพอสาธ0ตการท.างานของขอบเขตการท.างานของ Object แบบ request โดยการพฒนาโปรแกรม Servlet ข,นมาสองโปรแกรมคอ FirstServlet ทจะใชในการส/งออปเจคซ,งม source code ตาม Listing ท 6.1 และ โปรแกรม SecondServlet ทจะใช/ในการอ/านค/าของออปเจคทส/งออกมา แลวน.ามาแสดงผล ซ,งม source code ตาม Listing ท 6.2 Listing ท 6.1 โปรแกรม FirstServlet.java package servlet; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class FirstServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { String name = "Thanisa"; request.setAttribute("RequestName", name); RequestDispatcher obj = request.getRequestDispatcher("SecondServlet"); obj.forward(request, response); } finally { out.close(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 41. 41 } public String getServletInfo() { return "Short description"; } // </editor-fold> } Listing ท 6.2 โปรแกรม SecondServlet.java package servlet; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class SecondServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { String name = (String) request.getAttribute("RequestName"); out.println(name); } finally { out.close(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; } // </editor-fold> } การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 42. 42 6.1.1 ขนตอนการพฒนาโปรแกรมเพอสาธ0ตขอบเขตของ Object แบบ Request เราสามารถทจะพฒนาโปรแกรม ตามขนตอนดงน 1. เลอกค.าสงสราง New Project จากเมน# เลอก Java Web แลวเลอก Web Application ก.าหนดชอโปร เจคเปน ScopeDemo เลอก Server เปน Apache Tomcat 6.0.18 และ Java EE Version เปน Java EE5 แลวกด Finish 2. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด ScopeDemo จากนนเลอกค.าสง New > Servlet 3. ก.าหนด Class Name: เปน FirstServlet.java และ Package เปน servlet แลวกด Finish 4. ในหนาต/าง Editor เขยน Source code ของ FirstServlet.java ดง Listing ท 6.1 แลวเลอกค.าสง Save 5. เลอกหนาต/าง Projects แลวคล0;กขวาทโหนด ScopeDemo จากนนเลอกค.าสง New > Servlet 6. ก.าหนด Class Name: เปน SecondServlet.java และ Package เปน servlet แลวกด Finish 7. ในหนาต/าง Editor เขยน Source code ของ SecondServlet.java ดง Listing ท 6.2 แลวเลอกค.าสง Save 6.1.2 ขนตอนการทดสอบโปรแกรมเพอสาธ0ตขอบเขตของ Object แบบ Request เราสามารถทจะทดสอบโปรแกรม ตามขนตอนดงน 1. ท.าการ Build และ Deploy โปรเจค ScopeDemo 2. ท.าการ Run โปรเจค ScopeDemo 3. ในโปรแกรม Web Browser เลอก url ทชอ http://localhost:8080/ScopeDemo/FirstServlet แลวสงเกต1ผลลพธ5 4. ทดลองรน url ทชอ http://localhost:8080/ScopeDemo/SecondServlet โดยตรง แลวสงเกตผลลพธ5 อกครงจะเหนว/า ค/าทแสดงเปน null ทงนเนองจากโปรแกรมไม/ไดมการส/ง request มาจาก FirstServlet 6.2 การพฒนาโปรแกรมเพอสาธ(ตขอบเขตของ Object แบบ Session ขอบเขตการใชงานของออปเจคแบบ Request จะส/งผ/านค/าของออปเจคตาม request ของ url ทงนไม/ สามารถทจะใชงานไดโดยการเรยก url นนโดยไม/มการส/ง request มาดงแสดงในขนตอนทผ/านมา เราสามารถท จะก.าหนดขอบเขตของการใชงานของออปเจค ใหใชงานผ/านใน session ของ Web Browser ได (ตราบเท/าท Browser ยงใช session นนอย#) โดยการก.าหนด Attribute ลงในออปเจคชน0ด HttpSession ซ,งจะเปนออปเจคท / เกบขอม#ล session ของ Web Browser อาท0เช/นเกบค/าของตวแปร String ชอว/า name ไวใน attribute ของ session ทชอ SessionName โดยมร#ปแบบค.าสงดงน String name = “Thanisa”; การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 43. 43 HttpSession session = request.getSession(); session.setAttribute(“SessionName”, name); โปรแกรม Java Servlet อนๆสามารถทจะเรยกใช attribute ของ Session ทชอ SessionName และด,ง ค/าของตวแปร name ออกมาได โดยใชค.าสง getAttribute() เพอเรยกค/าจาก Session โดยมร#ปแบบดงน HttpSession session = request.getSession(); String name = (String) session.getAttribute(“SessionName”); ในขนตอนนจะเปนการพฒนาโปรแกรมเพอสาธ0ตการท.างานของขอบเขตการท.างานของ Object แบบ session โดยการพฒนาโปรแกรม Servlet ข,นมาสองโปรแกรมคอ FirstSessionServlet ทจะใชในการส/งออป เจคซ,งม source code ตาม Listing ท 6.3 และ โปรแกรม SecondSessionServlet ทจะใช/ในการอ/านค/าของออป เจคทส/งออกมาแลวน.ามาแสดงผล ซ,งม source code ตาม Listing ท 6.4 Listing ท 6.3 โปรแกรม FirstSessionServlet.java package servlet; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class FirstSessionServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { String name = "Thanisa"; HttpSession session = request.getSession(); session.setAttribute("SessionName", name); } finally { out.close(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 44. 44 } public String getServletInfo() { return "Short description"; } // </editor-fold> } Listing ท 6.4 โปรแกรม SecondSessionServlet.java package servlet; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class SecondSessionServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { HttpSession session = request.getSession(); String name = (String) session.getAttribute("SessionName"); out.println(name); } finally { out.close(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; } // </editor-fold> } การเขยนโปรแกรม Java Servet / JSP Thanachart Numnonda / Thanisa Kruawaisayawan