SlideShare uma empresa Scribd logo
1 de 111
Baixar para ler offline
1




                                   Hand-on
                                   Exercises

                              āļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļ§āļš
                               Java Servlet / JSP
                                     āđ‚āļ”āļĒāđƒāļŠ
                      GlassFish and NetBeans


                       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 [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans

Mais conteÚdo relacionado

Destaque

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
 
Animation Restaurant2
Animation Restaurant2Animation Restaurant2
Animation Restaurant2tunk
 
Brew up a Rich Web Application with Cappuccino
Brew up a Rich Web Application with CappuccinoBrew up a Rich Web Application with Cappuccino
Brew up a Rich Web Application with CappuccinoHoward Lewis Ship
 
Smart phone development
Smart phone developmentSmart phone development
Smart phone developmentMyles Eftos
 
Struts,Jsp,Servlet
Struts,Jsp,ServletStruts,Jsp,Servlet
Struts,Jsp,Servletdasguptahirak
 
āļāļēāļĢāļˆāļąāļ”āļāļīāļˆāļāļĢāļĢāļĄāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļ™ Web Application : Edmodo
āļāļēāļĢāļˆāļąāļ”āļāļīāļˆāļāļĢāļĢāļĄāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļ™ Web  Application : EdmodoāļāļēāļĢāļˆāļąāļ”āļāļīāļˆāļāļĢāļĢāļĄāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļ™ Web  Application : Edmodo
āļāļēāļĢāļˆāļąāļ”āļāļīāļˆāļāļĢāļĢāļĄāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļ™ Web Application : EdmodoNunta Petman
 
Hybrid vs Native vs Web Apps
Hybrid vs Native vs Web AppsHybrid vs Native vs Web Apps
Hybrid vs Native vs Web AppsPoluru S
 
Introduction to the Servlet / JSP course
Introduction to the Servlet / JSP course Introduction to the Servlet / JSP course
Introduction to the Servlet / JSP course JavaEE Trainers
 
āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ Lect 04
āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ Lect 04āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ Lect 04
āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ Lect 04Jenchoke Tachagomain
 
Dream mx
Dream mxDream mx
Dream mxphochai
 
Web Based Application Development with Open Source
Web Based Application Development with Open SourceWeb Based Application Development with Open Source
Web Based Application Development with Open SourceRachabodin Suwannakanthi
 

Destaque (14)

lesson4 JSP
lesson4 JSPlesson4 JSP
lesson4 JSP
 
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
 
Animation Restaurant2
Animation Restaurant2Animation Restaurant2
Animation Restaurant2
 
Brew up a Rich Web Application with Cappuccino
Brew up a Rich Web Application with CappuccinoBrew up a Rich Web Application with Cappuccino
Brew up a Rich Web Application with Cappuccino
 
Web app
Web appWeb app
Web app
 
Smart phone development
Smart phone developmentSmart phone development
Smart phone development
 
Struts,Jsp,Servlet
Struts,Jsp,ServletStruts,Jsp,Servlet
Struts,Jsp,Servlet
 
āļāļēāļĢāļˆāļąāļ”āļāļīāļˆāļāļĢāļĢāļĄāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļ™ Web Application : Edmodo
āļāļēāļĢāļˆāļąāļ”āļāļīāļˆāļāļĢāļĢāļĄāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļ™ Web  Application : EdmodoāļāļēāļĢāļˆāļąāļ”āļāļīāļˆāļāļĢāļĢāļĄāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļ™ Web  Application : Edmodo
āļāļēāļĢāļˆāļąāļ”āļāļīāļˆāļāļĢāļĢāļĄāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđƒāļ™ Web Application : Edmodo
 
lesson1 JSP
lesson1 JSPlesson1 JSP
lesson1 JSP
 
Hybrid vs Native vs Web Apps
Hybrid vs Native vs Web AppsHybrid vs Native vs Web Apps
Hybrid vs Native vs Web Apps
 
Introduction to the Servlet / JSP course
Introduction to the Servlet / JSP course Introduction to the Servlet / JSP course
Introduction to the Servlet / JSP course
 
āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ Lect 04
āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ Lect 04āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ Lect 04
āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ Lect 04
 
Dream mx
Dream mxDream mx
Dream mx
 
Web Based Application Development with Open Source
Web Based Application Development with Open SourceWeb Based Application Development with Open Source
Web Based Application Development with Open Source
 

Semelhante a Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans

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
 
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
 
Word2007 moce
Word2007 moceWord2007 moce
Word2007 moce520147141
 
Cisco packet tracer_1
Cisco packet tracer_1Cisco packet tracer_1
Cisco packet tracer_1Tru Regis Nitt
 
Cisco packet tracer_1
Cisco packet tracer_1Cisco packet tracer_1
Cisco packet tracer_1Tru Regis Nitt
 
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
 
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™AjBenny Pong
 
EJB Programming Using Eclipse & JBoss
EJB Programming Using Eclipse & JBossEJB Programming Using Eclipse & JBoss
EJB Programming Using Eclipse & JBossSoftware Park Thailand
 
Eclipse
EclipseEclipse
Eclipsegzxc
 
Active Directory
Active DirectoryActive Directory
Active Directorysompriaw aums
 
Exproject2
Exproject2Exproject2
Exproject2najak
 
āđ‹Java Web Programming on Cloud Computing using Google App Engine
āđ‹Java Web Programming on Cloud Computing using Google App Engineāđ‹Java Web Programming on Cloud Computing using Google App Engine
āđ‹Java Web Programming on Cloud Computing using Google App EngineIMC Institute
 

Semelhante a Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans (20)

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)
 
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
 
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]
 
Word2007 moce
Word2007 moceWord2007 moce
Word2007 moce
 
Atomymaxsite25
Atomymaxsite25Atomymaxsite25
Atomymaxsite25
 
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
 
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
 
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āļĢāļđāļ›āđ€āļĨāđˆāļĄāļ§āļīāļŠāļēāđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
 
EJB Programming Using Eclipse & JBoss
EJB Programming Using Eclipse & JBossEJB Programming Using Eclipse & JBoss
EJB Programming Using Eclipse & JBoss
 
Eclipse
EclipseEclipse
Eclipse
 
Typecom
TypecomTypecom
Typecom
 
Tab10 1 manual
Tab10 1 manualTab10 1 manual
Tab10 1 manual
 
Active Directory
Active DirectoryActive Directory
Active Directory
 
Exproject2
Exproject2Exproject2
Exproject2
 
āđƒāļšāļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™āđƒāļšāļ‡āļēāļ™
āđƒāļšāļ‡āļēāļ™
 
Google App Engine Using Eclipse
Google App Engine Using EclipseGoogle App Engine Using Eclipse
Google App Engine Using Eclipse
 
āđ‹Java Web Programming on Cloud Computing using Google App Engine
āđ‹Java Web Programming on Cloud Computing using Google App Engineāđ‹Java Web Programming on Cloud Computing using Google App Engine
āđ‹Java Web Programming on Cloud Computing using Google App Engine
 
āļŠāđˆāļ§āļ™āļ™āļģ āļ—āļ§āļĩāļŠāļąāļĒ
āļŠāđˆāļ§āļ™āļ™āļģ  āļ—āļ§āļĩāļŠāļąāļĒāļŠāđˆāļ§āļ™āļ™āļģ  āļ—āļ§āļĩāļŠāļąāļĒ
āļŠāđˆāļ§āļ™āļ™āļģ āļ—āļ§āļĩāļŠāļąāļĒ
 

Mais de IMC Institute

āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14IMC Institute
 
Digital trends Vol 4 No. 13 Sep-Dec 2019
Digital trends Vol 4 No. 13  Sep-Dec 2019Digital trends Vol 4 No. 13  Sep-Dec 2019
Digital trends Vol 4 No. 13 Sep-Dec 2019IMC Institute
 
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AIāļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AIIMC Institute
 
IT Trends eMagazine Vol 4. No.12
IT Trends eMagazine  Vol 4. No.12IT Trends eMagazine  Vol 4. No.12
IT Trends eMagazine Vol 4. No.12IMC Institute
 
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformationāđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital TransformationIMC Institute
 
IT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to WorkIT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to WorkIMC Institute
 
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄāļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄIMC Institute
 
IT Trends eMagazine Vol 4. No.11
IT Trends eMagazine  Vol 4. No.11IT Trends eMagazine  Vol 4. No.11
IT Trends eMagazine Vol 4. No.11IMC Institute
 
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationIMC Institute
 
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valleyāļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon ValleyIMC Institute
 
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡ IMC Institute āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡  IMC Institute  āļ‰āļšāļąāļšāļ—āļĩāđˆ 10āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡  IMC Institute  āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡ IMC Institute āļ‰āļšāļąāļšāļ—āļĩāđˆ 10IMC Institute
 
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationIMC Institute
 
The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)IMC Institute
 
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡ āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡ IMC Institute
 
IT Trends eMagazine Vol 3. No.9
IT Trends eMagazine  Vol 3. No.9 IT Trends eMagazine  Vol 3. No.9
IT Trends eMagazine Vol 3. No.9 IMC Institute
 
Thailand software & software market survey 2016
Thailand software & software market survey 2016Thailand software & software market survey 2016
Thailand software & software market survey 2016IMC Institute
 
Developing Business Blockchain Applications on Hyperledger
Developing Business  Blockchain Applications on Hyperledger Developing Business  Blockchain Applications on Hyperledger
Developing Business Blockchain Applications on Hyperledger IMC Institute
 
Digital transformation @thanachart.org
Digital transformation @thanachart.orgDigital transformation @thanachart.org
Digital transformation @thanachart.orgIMC Institute
 
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.orgāļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.orgIMC Institute
 
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital TransformationāļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital TransformationIMC Institute
 

Mais de IMC Institute (20)

āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
āļ™āļīāļ•āļĒāļŠāļēāļĢ Digital Trends āļ‰āļšāļąāļšāļ—āļĩāđˆ 14
 
Digital trends Vol 4 No. 13 Sep-Dec 2019
Digital trends Vol 4 No. 13  Sep-Dec 2019Digital trends Vol 4 No. 13  Sep-Dec 2019
Digital trends Vol 4 No. 13 Sep-Dec 2019
 
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AIāļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
āļšāļ—āļ„āļ§āļēāļĄ The evolution of AI
 
IT Trends eMagazine Vol 4. No.12
IT Trends eMagazine  Vol 4. No.12IT Trends eMagazine  Vol 4. No.12
IT Trends eMagazine Vol 4. No.12
 
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformationāđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
āđ€āļžāļĢāļēāļ°āđ€āļŦāļ•āļļāđƒāļ” Digitization āđ„āļĄāđˆāļ•āļ­āļšāđ‚āļˆāļ—āļĒāđŒ Digital Transformation
 
IT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to WorkIT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to Work
 
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄāļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
āļĄāļđāļĨāļ„āđˆāļēāļ•āļĨāļēāļ”āļ”āļīāļˆāļīāļ—āļąāļĨāđ„āļ—āļĒ 3 āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ
 
IT Trends eMagazine Vol 4. No.11
IT Trends eMagazine  Vol 4. No.11IT Trends eMagazine  Vol 4. No.11
IT Trends eMagazine Vol 4. No.11
 
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
 
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valleyāļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
āļšāļ—āļ„āļ§āļēāļĄ The New Silicon Valley
 
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡ IMC Institute āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡  IMC Institute  āļ‰āļšāļąāļšāļ—āļĩāđˆ 10āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡  IMC Institute  āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
āļ™āļīāļ•āļĒāļŠāļēāļĢ IT Trends āļ‚āļ­āļ‡ IMC Institute āļ‰āļšāļąāļšāļ—āļĩāđˆ 10
 
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformationāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
āđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ—āļģ Digital transformation
 
The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)
 
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡ āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
āļšāļ—āļ„āļ§āļēāļĄ Robotics āđāļ™āļ§āđ‚āļ™āđ‰āļĄāđƒāļŦāļĄāđˆāļŠāļđāđˆāļšāļĢāļīāļāļēāļĢāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡
 
IT Trends eMagazine Vol 3. No.9
IT Trends eMagazine  Vol 3. No.9 IT Trends eMagazine  Vol 3. No.9
IT Trends eMagazine Vol 3. No.9
 
Thailand software & software market survey 2016
Thailand software & software market survey 2016Thailand software & software market survey 2016
Thailand software & software market survey 2016
 
Developing Business Blockchain Applications on Hyperledger
Developing Business  Blockchain Applications on Hyperledger Developing Business  Blockchain Applications on Hyperledger
Developing Business Blockchain Applications on Hyperledger
 
Digital transformation @thanachart.org
Digital transformation @thanachart.orgDigital transformation @thanachart.org
Digital transformation @thanachart.org
 
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.orgāļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
āļšāļ—āļ„āļ§āļēāļĄ Big Data āļˆāļēāļāļšāļĨāđ‡āļ­āļ thanachart.org
 
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital TransformationāļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
āļāļĨāļĒāļļāļ—āļ˜āđŒ 5 āļ”āđ‰āļēāļ™āļāļąāļšāļāļēāļĢāļ—āļģ Digital Transformation
 

Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans

  • 1. 1 Hand-on Exercises āļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļ§āļš Java Servlet / JSP āđ‚āļ”āļĒāđƒāļŠ GlassFish and NetBeans 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