SlideShare a Scribd company logo
1 of 45
Download to read offline
Grails login/logout
  Simple
         tutorial

    http://khomkrit.wordpress.com
Part I
สราง View
เริ่มตน
สรางโปรเจคใหม
        > grails create-app simple-login


สราง controller ชื่อ user สำหรับจัดการเรื่องของ
การ login และ logout
        > grails create-controller user
เริ่มตน
สรางไฟลชื่อ “index.gsp” ไว∙ี่
grails-app/views/user/ Directory
สรางหนา Login
แกไขไฟล “index.gsp” ∙ี่เราสรางไวดังนี้
สรางหนา Login
แกไขไฟล “index.gsp” ∙ี่เราสรางไวดังนี้

                     เพิ่ม style
                             สราง form สำหรับกรอก
                            username และ password
สรางหนา Login
สราง form โดยใช <g:form> แ∙็ก
สรางหนา Login
ถาไมอยากใช <g:form> แ∙็ก เราก็สามารถใช HTML
form ธรรมาดาๆได เพราะสุด∙ายแลว Grails ก็จะ
สราง HTML form จาก <g:form> ใหเราอยูดี
<g:form> แ∙็ก บอกอะไร∙ี่มีความหมายชัดเจนกวา เชน
บอกวา action ∙ี่จะรับ request ชื่อวาอะไร

        <g:form action=”login”/>
สรางหนา Login
        <g:form action=”login”/>

สง request ไป∙ี่ action ชื่อ “login”
แลวสงไป∙ี่ controller ไหนละ? ถาเราไมกำหนดชื่อ
controller Grails จะสราง form ∙ี่สง request ไป
∙ี่ controller ∙ี่สอดคลองกับ∙ี่อยูของไฟลให
ตอนนี้ index.gsp อยูใน /grails-app/user/
directory ดังนั้นมันจะสง request ไป∙ี่ user
controller
สรางหนา Login
<g:form controller=”user” action=”login”/>



   อยางไรก็ตาม เราก็ยังกำหนดชื่อ controller
   ∙ี่เราจะสง request ไปเองไดเชนกัน
เริ่ม Grails Application โดยใชคำสั่งนี้
                > grails run-app


เบราซไป∙ี่ http://localhost:8080/simple-login/user
ตอนนี้เรายังไมสามารถ∙ำอะไรกับ form ได และ
เมื่อกดปุม Login ก็จะโดน Grails ดากลับมา
เพราะวา action ∙ี่เรากำหนดไวกอนหนายังไมได
ถูกสรางขึ้นมา
action ไหนละ∙ี่เรากำหนดไวกอนหนานี้?
กลับไปดู∙ี่ไฟลชื่อ login.gsp เราจะเห็น action ∙ี่เรา
กำหนดไว มันชื่อวา “login”

                            action ชื่อวา “login” จะรับ
                              request จาก form นี้
Part II
สราง Action
Tip
เราสามารถ แกไข, เชนแกไข domain และ
แกไข controller ได, โดยไมจำเปนตอง
restart web server ใหม
แตบาง∙ีก็ตองการการ restart web server
เชน การสราง controller และ action หรือ
แมแตการแกไข domain ใหม
สราง action
ปกติ∙ุกๆ action จะถูกสรางไวใน controller ใน
กรณีนี้เราตองการสง request ไป∙ี่ controller ชื่อ
user และ action ชื่อ name
ดังนั้นเปดไฟลชื่อ UserController.groovy เพื่อสราง
action ชื่อวา login
แกไข controller
       ปกติ∙ุกๆ controller จะอยูใน
       /grails-app/controllers/
แกไข controller
เปดไฟล UserController.groovy
แลวสราง action ชื่อ “login”
แกไข controller
ไป∙ี่ http://localhost:8080/simple-login/user/ อีกครั้ง
               แลว∙ดลอง login ดู
แกไข controller
พบวา Grails ตอบ 404 กลับมา! ∙ำไม?
โดยปริยายแลว เมื่อเราเรียก action ใดๆก็ตาม Grails
จะพยายามหาไฟล∙ี่มีชื่อสอดคลองกับ action
ในกรณีนี้เราสง request ไป∙ี่ http://localhost:8080/
simple-login/user/login, หมายความวาเราพยายาม
เรียก action ชื่อ “login” ∙ี่อยูใน user controller
ดังนั้น Grails จะพยายามหาไฟลชื่อ “login.gsp” ใน /
grails-app/views/user/ เพื่อ∙ี่จะ render กลับไป
แตตอนนี้เรายังไมมีไฟลนี้!
แกไข controller
เรายังไมมีไฟลชื่อ login.gsp ∙ำให Grails ไมรูวาจะ
render อะไรกลับไปให client ดี
เราสามารถใช method ชื่อ “render” เพื่อบอก
Grails วาจะให render อะไรกลับไปให client
แกไข controller
ไป∙ี่ http://localhost:8080/simple-login/user/ อีกครั้ง
               จากนั้นลอง login ดู
แกไข controller
Grails ไมบนกลับมาแลว :)
แกไข controller
เราสามารถเพิ่ม logic สำหรับจัดการการ login ได
ตรงนี้ เชนการเก็บสถานะการ login ไวใน session
และสงขอความอะไรบางอยางกลับไปให client

                         กำหนด logic
                        บางอยางไวตรงนี้
Part III
เพิ่ม logic สำหรับจัดการ
         การ login
ตรวจสอบการ login
เพิ่มการตรวจสอบความถูกตองของการ login อยางงายๆ
parameter ∙ุกตัว∙ี่ถูกสงมาจะถูกเก็บไวในตัวแปรชื่อ
“params” ดังนั้น code ก็นาจะออกมาหนาตาลักษณะนี้
ตรวจสอบการ login
ลอง∙ดสอบโดยการพยายาม login อีกครั้ง
ถา username เปน “admin” และ password
คือ “pass” เราก็จะสามารถ login ได แตถา
เปนอยางอื่นก็จะ login ไมได
ตรวจสอบการ login
ตอไป หลังจาก∙ี่ user login เสร็จแลว Grails จะ
redirect user ไป∙ี่หนา login อีกครั้ง (/user/
index) และบอกอะไรบางอยางโดยใชตัวแปร “flash”
เกี่ยวกับ flash โดยละเอียดนั้นจะไมพูดใน แตก็สังเกต
ไดวา flash มันจะนำมาใชในลักษณะไหน ในหนาตอๆ
ไป
การใช flash
ใชตัวแปร flash เก็บคาอะไรบางอยางไวแบบนี้ จาก
นั้น redirect ไป∙ี่หนาสำหรับ login (index.gsp)
อีกครั้ง
การใช flash
การ redirect ไป∙ี่ action ชื่อ “index” โดยปกติ
Grails จะคนหาไฟลชื่อ “index.gsp” ใน grails-app/
views/user/ directory.
flash message ∙ี่เรากำหนดไวก็จะถูกสงไปให action
ชื่อ “index” และไฟล index.gsp ใหสามารถเขาถึงและ
นำมาใชได
การใช flash
เพิ่ม ${flash.message} ในหนา login ถามัน
มีคาอะไรบางอยาง คานั้นจะถูกแสดงออกมา




 สำหรับการแสดงคาในตัวแปรเราสามารถเขียน
 ไดในลักษณะนี้ ${ชื่อตัวแปร}
การใช flash
      ∙ดสอบโดยพยายาม login อีกครั้ง




หลังจากพยายาม login แลว เราจะเห็น flash
message แสดงออกมา
เก็บสถานะ
เราสามารถใช “session” ในการเก็บขอมูล
เกี่ยวกับการ login ไดในลักษณะนี้
จัดการการ Logout
สราง action ใหมชื่อ “logout” สำหรับจัดการการ logout
เราอาจตองเคลียรคาใน session.user เมื่อมีการ
logout
แกไขหนา Loginuser login
เพิ่ม logic มากกวานี้โดยตรวจสอบวาถา
แลวจะไมเสดงฟอรมสำหรับ login อีก และใหแสดง link
สำหรับ logout แ∙น
ใช <g:if>, <g:else> แ∙็กสำหรับตรวจสอบบางอยาง
แกไขหนา login
การใช <g:if> แ∙็ก
     <g:if test=”${boolean-logic}”>



ตัวอยาง:
            <g:if test=”${5 == 6}”>
แกไขหนา login
เราสามารถใช <g:link> แ∙็กเพื่อสราง link
สำหรับการ logout
แกไขหนา login
  แนนอนวาเราสามารถใช HTML แ∙็ก <a href=””>
  แ∙นได แตแนะนำใหใช <g:link> ดวยเหตุผลเดียวกับ
  ∙ี่วา∙ำไมตองใช <g:form>
       <g:link controller=”” action=””>

ถาเราไมกำหนดชื่อของ controller Grails จะคนหา
controller เชนเดียวกับพฤติกรรมตอนใช <g:form>
              <g:link action=””>
Check Point!
ตอนนี้เราสรางหนาสำหรับ login ไดแลว
ถา login สำหร็จเราจะเห็น link สำหรับ logout
และ form สำหรับ login จะหายไป
ถา login ไมสำเร็จ form สำหรับ login ก็ยังอยู
หลังจากพยายาม login แลว เราจะเห็น flash
message เสมอ
เพิ่มอะไรบางอยาง
โปรเจค∙ี่สรางดวย Grails จะมีไฟล CSS มา
ใหใช และถูก include ใชโดยอัตโนมัติ
                         ลองใช CSS∙ี่มากับ Grails
                            class=”message”
เพิ่มอะไรบางอยาง
ดูดีขึ้นกวาเดิม สำหรับการแสดงคาของ
flash.message
เพิ่มอะไรบางอยาง
สำหรับ style แบบอื่นๆ สามารถดูเพิ่มได∙ี่ /web-app/
css/
resource อื่นๆ∙ี่มีอยูแลวก็เชนกัน สามารถดูเพิ่ม
ได∙ี่ /web-app/images/ และ web-app/js/
หัวขอตอไป
Layout และ template
Filter
Tag Library
Service
URL Mapping
Thank You

Font: 2005_iannnnnGMO - http://www.f0nt.com

More Related Content

What's hot

PHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストPHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストMakio Tsukamoto
 
Sthseminar Gae 20090715
Sthseminar Gae 20090715Sthseminar Gae 20090715
Sthseminar Gae 20090715Kazunori Sato
 
비아그라구입∴fao8´net∴ φ팔팔정판매et7
비아그라구입∴fao8´net∴ φ팔팔정판매et7 비아그라구입∴fao8´net∴ φ팔팔정판매et7
비아그라구입∴fao8´net∴ φ팔팔정판매et7 임 상혼
 
여성최­음­제팝니다 (라인ks346 ◈ 카톡& | 카톡&텔레 : BF258)여성최­음­제판매하는곳 최­음­제구입
여성최­음­제팝니다  (라인ks346  ◈ 카톡&  |  카톡&텔레 : BF258)여성최­음­제판매하는곳 최­음­제구입여성최­음­제팝니다  (라인ks346  ◈ 카톡&  |  카톡&텔레 : BF258)여성최­음­제판매하는곳 최­음­제구입
여성최­음­제팝니다 (라인ks346 ◈ 카톡& | 카톡&텔레 : BF258)여성최­음­제판매하는곳 최­음­제구입haili25
 
G­HB 구해요 『텔­레&카톡 BF258 _ 라인 KS346』 흥­분­제판­매처 흥­분­제직거래
G­HB 구해요 『텔­레&카톡 BF258 _ 라인 KS346』 흥­분­제판­매처 흥­분­제직거래 G­HB 구해요 『텔­레&카톡 BF258 _ 라인 KS346』 흥­분­제판­매처 흥­분­제직거래
G­HB 구해요 『텔­레&카톡 BF258 _ 라인 KS346』 흥­분­제판­매처 흥­분­제직거래 wanghaliui
 

What's hot (7)

Ywc Web Design2
Ywc Web Design2Ywc Web Design2
Ywc Web Design2
 
Fujii Yuji.Websig.090606
Fujii Yuji.Websig.090606Fujii Yuji.Websig.090606
Fujii Yuji.Websig.090606
 
PHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストPHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテスト
 
Sthseminar Gae 20090715
Sthseminar Gae 20090715Sthseminar Gae 20090715
Sthseminar Gae 20090715
 
비아그라구입∴fao8´net∴ φ팔팔정판매et7
비아그라구입∴fao8´net∴ φ팔팔정판매et7 비아그라구입∴fao8´net∴ φ팔팔정판매et7
비아그라구입∴fao8´net∴ φ팔팔정판매et7
 
여성최­음­제팝니다 (라인ks346 ◈ 카톡& | 카톡&텔레 : BF258)여성최­음­제판매하는곳 최­음­제구입
여성최­음­제팝니다  (라인ks346  ◈ 카톡&  |  카톡&텔레 : BF258)여성최­음­제판매하는곳 최­음­제구입여성최­음­제팝니다  (라인ks346  ◈ 카톡&  |  카톡&텔레 : BF258)여성최­음­제판매하는곳 최­음­제구입
여성최­음­제팝니다 (라인ks346 ◈ 카톡& | 카톡&텔레 : BF258)여성최­음­제판매하는곳 최­음­제구입
 
G­HB 구해요 『텔­레&카톡 BF258 _ 라인 KS346』 흥­분­제판­매처 흥­분­제직거래
G­HB 구해요 『텔­레&카톡 BF258 _ 라인 KS346』 흥­분­제판­매처 흥­분­제직거래 G­HB 구해요 『텔­레&카톡 BF258 _ 라인 KS346』 흥­분­제판­매처 흥­분­제직거래
G­HB 구해요 『텔­레&카톡 BF258 _ 라인 KS346』 흥­분­제판­매처 흥­분­제직거래
 

Viewers also liked

Grails Simple Login
Grails Simple LoginGrails Simple Login
Grails Simple Loginmoniguna
 
Concert de Nadal 2010
Concert de Nadal 2010Concert de Nadal 2010
Concert de Nadal 2010Joan Davia
 
Media And Money
Media And MoneyMedia And Money
Media And MoneyJohn Healy
 
2013 04 17 - LaunchPad Bangkok - web performance
 2013 04 17 - LaunchPad Bangkok - web performance 2013 04 17 - LaunchPad Bangkok - web performance
2013 04 17 - LaunchPad Bangkok - web performanceLaurent Perche
 
Sardana: l'Empordà
Sardana: l'EmpordàSardana: l'Empordà
Sardana: l'EmpordàJoan Davia
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails FrameworkPT.JUG
 
El petit príncep
El petit príncepEl petit príncep
El petit príncepJoan Davia
 
Digital Lifestyle in Thailand
Digital Lifestyle in ThailandDigital Lifestyle in Thailand
Digital Lifestyle in ThailandLaurent Perche
 
Application Architectures in Grails
Application Architectures in GrailsApplication Architectures in Grails
Application Architectures in GrailsPeter Ledbrook
 
éCnico judiciário
éCnico judiciárioéCnico judiciário
éCnico judiciáriocayse
 
Pré modernismo e vanguardas europeias
Pré modernismo e vanguardas europeiasPré modernismo e vanguardas europeias
Pré modernismo e vanguardas europeiasOctávio Da Matta
 
Tecnologí..
Tecnologí..Tecnologí..
Tecnologí..yenny
 
historia del arte
historia del artehistoria del arte
historia del artechurozita
 

Viewers also liked (20)

Grails Simple Login
Grails Simple LoginGrails Simple Login
Grails Simple Login
 
Agustina
AgustinaAgustina
Agustina
 
Mis Fotos
Mis FotosMis Fotos
Mis Fotos
 
Concert de Nadal 2010
Concert de Nadal 2010Concert de Nadal 2010
Concert de Nadal 2010
 
Media And Money
Media And MoneyMedia And Money
Media And Money
 
2013 04 17 - LaunchPad Bangkok - web performance
 2013 04 17 - LaunchPad Bangkok - web performance 2013 04 17 - LaunchPad Bangkok - web performance
2013 04 17 - LaunchPad Bangkok - web performance
 
Sardana: l'Empordà
Sardana: l'EmpordàSardana: l'Empordà
Sardana: l'Empordà
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails Framework
 
El petit príncep
El petit príncepEl petit príncep
El petit príncep
 
Digital Lifestyle in Thailand
Digital Lifestyle in ThailandDigital Lifestyle in Thailand
Digital Lifestyle in Thailand
 
Application Architectures in Grails
Application Architectures in GrailsApplication Architectures in Grails
Application Architectures in Grails
 
Moving Our Enterprises Into Moodle Seplan Jalisco
Moving Our Enterprises Into Moodle Seplan JaliscoMoving Our Enterprises Into Moodle Seplan Jalisco
Moving Our Enterprises Into Moodle Seplan Jalisco
 
éCnico judiciário
éCnico judiciárioéCnico judiciário
éCnico judiciário
 
Pré modernismo e vanguardas europeias
Pré modernismo e vanguardas europeiasPré modernismo e vanguardas europeias
Pré modernismo e vanguardas europeias
 
Tecnologí..
Tecnologí..Tecnologí..
Tecnologí..
 
Aula3e4
Aula3e4Aula3e4
Aula3e4
 
Educacion vial
Educacion vialEducacion vial
Educacion vial
 
FISHER
FISHERFISHER
FISHER
 
historia del arte
historia del artehistoria del arte
historia del arte
 
Book allegro
Book allegroBook allegro
Book allegro
 

Simple Login Th