[Java] Java Servlet พื้นฐานของการพัฒนา Java Web Application

จากที่เคยพูดถึงว่า Java Servet คืออะไร? ไปแล้วนั้น อาจทำให้บางคนงง เพราะหนักไปทางเปรียบเทียบกับ PHP ซะมากกว่า แต่คราวนี้ เราจะมาทดลองสร้าง Java Web Application กันดูนะครับว่า concept และรูปแบบการเขียนเว็บของ Java นั้น เป็นอย่างไร

พูดถึงเว็บ แน่นอนเราต้องนึกถึง HTML Javascript และ CSS กันก่อนทั้ง 3 อย่างนี้ทำงานฝั่ง client ส่วนฝั่ง server สำหรับโพสนี้ก็คือ java ครับ
  1. เตรียมของก่อน
  2. สร้างโปรเจคและไฟล์ให้พร้อม
    • create Dynamic Web Project ("JSP_JavaServlet")
    • create HTML File ("index.html")
    • create Java Class ("Controller.java") 

  3. HTML File : index.html
    • ที่จริงไฟล์นี้ก็เป็น html file ธรรมดาๆ เลยครับ ไม่ได้มีอะไรหวือหวาไปกว่านั้นเลย ในที่นี้ผมก็จะสร้าง tag form กับปุ่ม เพื่อให้มีการ submit ไปยัง Controller.java นะครับ
     <form action="./Controller" method="GET">
      <input type="submit" />
     </form>

  4. Java Class : Controller.java
    • ขั้นตอนนี้อยากให้ลองสร้าง Java Class ก่อนครับ ถึงแม้ว่า editor บางตัวจะมี wizard สำหรับสร้าง Servlet ได้เลย เพื่อความเข้าใจของเราครับ
      public class Controller {
      
      }
      

    • สิ่งที่เราต้องเพิ่มคือ inherit. หรือ สืบทอด HttpServlet มาครับ จากนั้นใส่ annotation @WebServlet เพื่อระบุ path สำหรับเรียกใช้งาน
      @WebServlet("/Controller")
      public class Controller extends HttpServlet{
      
      }
      

    • สิ่งที่เราต้องเข้าใจถัดไปคือ หลังจากมีการเรียก Class นี้ได้แล้ว ต่อไปที่จะต้องเรียกคือ method และ method ที่จะเข้าก็คือ doGet หรือ doPost ขึ้นอยู่กับว่าเราเรียกมาแบบไหนนั่นเอง มาดูตัวอย่างแบบเต็มๆ กันครับ
      package jsp.servlet.example;
      
      import java.io.IOException;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      
      @WebServlet("/Controller")
      public class Controller extends HttpServlet {
      
       @Override
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
       }
      
       @Override
       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
       }
      }
      

    • ทีนี้ก็ลองทดสอบดูว่าหลังจาก submit แล้ว มีการเข้าใช้งาน method ดังกล่าวจริงหรือไม่

    มันยังไม่จบ เราใช้ Servlet เป็นแล้ว แต่เป็น HTML + Servlet ยังไม่ได้เริ่ม JSP เลย

  5. new JSP File : index.jsp
    • copy code มาจาก index.html และทดลองใช้งาน scriptlet 
      <body>
       <% System.out.println("Test Scriptlet"); %>
       <form action="./Controller" method="GET" >
        <input type="submit" />
       </form>
      </body>
      

จะเห็นว่า JSP ทำให้เราแทรกภาษา Java เข้าไปได้เลย แต่ด้วย concept OOP เราจะไม่ทำ logic ซับซ้อนใน JSP แต่ถึงแม้ว่าจะไม่ทำอะไรซับซ้อนแล้ว ด้วยภาษา Java เอง syntax ค่อนข้างยุ่งแล้วยิ่งไปปนกับ HTML อีก ก็เลยมีการเอา technology อย่างอื่นมาช่วยสำหรับการทำงานของฝั่ง server ในหน้า JSP แทน เช่น EL , taglib เป็นต้น หรืออาจจะประกอบกันเป็น framework ขึ้นมาอีกทีหนึ่ง เพื่อทำให้ส่วน view* ตาม  มีความสวยงานและง่ายต่อการพัฒนามากยิ่งขึ้น

ลองประยุกต์ใช้กันดูนะครับ

เพิ่มเติมเนื้อหา
TagLib กับการลด Scriptlet สำหรับหน้า Web Application
Model-View-Controller Architechture

Facebook Comment

Popular post of 7 days

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)