[Java] Java Servlet พื้นฐานของการพัฒนา Java Web Application
จากที่เคยพูดถึงว่า Java Servet คืออะไร? ไปแล้วนั้น อาจทำให้บางคนงง เพราะหนักไปทางเปรียบเทียบกับ PHP ซะมากกว่า แต่คราวนี้ เราจะมาทดลองสร้าง Java Web Application กันดูนะครับว่า concept และรูปแบบการเขียนเว็บของ Java นั้น เป็นอย่างไร
พูดถึงเว็บ แน่นอนเราต้องนึกถึง HTML Javascript และ CSS กันก่อนทั้ง 3 อย่างนี้ทำงานฝั่ง client ส่วนฝั่ง server สำหรับโพสนี้ก็คือ java ครับ
จะเห็นว่า JSP ทำให้เราแทรกภาษา Java เข้าไปได้เลย แต่ด้วย concept OOP เราจะไม่ทำ logic ซับซ้อนใน JSP แต่ถึงแม้ว่าจะไม่ทำอะไรซับซ้อนแล้ว ด้วยภาษา Java เอง syntax ค่อนข้างยุ่งแล้วยิ่งไปปนกับ HTML อีก ก็เลยมีการเอา technology อย่างอื่นมาช่วยสำหรับการทำงานของฝั่ง server ในหน้า JSP แทน เช่น EL , taglib เป็นต้น หรืออาจจะประกอบกันเป็น framework ขึ้นมาอีกทีหนึ่ง เพื่อทำให้ส่วน view* ตาม มีความสวยงานและง่ายต่อการพัฒนามากยิ่งขึ้น
ลองประยุกต์ใช้กันดูนะครับ
เพิ่มเติมเนื้อหา
TagLib กับการลด Scriptlet สำหรับหน้า Web Application
Model-View-Controller Architechture
พูดถึงเว็บ แน่นอนเราต้องนึกถึง HTML Javascript และ CSS กันก่อนทั้ง 3 อย่างนี้ทำงานฝั่ง client ส่วนฝั่ง server สำหรับโพสนี้ก็คือ java ครับ
- เตรียมของก่อน
- สร้างโปรเจคและไฟล์ให้พร้อม
- create Dynamic Web Project ("JSP_JavaServlet")
- create HTML File ("index.html")
- create Java Class ("Controller.java")
- HTML File : index.html
- ที่จริงไฟล์นี้ก็เป็น html file ธรรมดาๆ เลยครับ ไม่ได้มีอะไรหวือหวาไปกว่านั้นเลย ในที่นี้ผมก็จะสร้าง tag form กับปุ่ม เพื่อให้มีการ submit ไปยัง Controller.java นะครับ
- 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 ดังกล่าวจริงหรือไม่
- 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>
<form action="./Controller" method="GET"> <input type="submit" /> </form>
มันยังไม่จบ เราใช้ Servlet เป็นแล้ว แต่เป็น HTML + Servlet ยังไม่ได้เริ่ม JSP เลย
จะเห็นว่า JSP ทำให้เราแทรกภาษา Java เข้าไปได้เลย แต่ด้วย concept OOP เราจะไม่ทำ logic ซับซ้อนใน JSP แต่ถึงแม้ว่าจะไม่ทำอะไรซับซ้อนแล้ว ด้วยภาษา Java เอง syntax ค่อนข้างยุ่งแล้วยิ่งไปปนกับ HTML อีก ก็เลยมีการเอา technology อย่างอื่นมาช่วยสำหรับการทำงานของฝั่ง server ในหน้า JSP แทน เช่น EL , taglib เป็นต้น หรืออาจจะประกอบกันเป็น framework ขึ้นมาอีกทีหนึ่ง เพื่อทำให้ส่วน view* ตาม มีความสวยงานและง่ายต่อการพัฒนามากยิ่งขึ้น
ลองประยุกต์ใช้กันดูนะครับ
เพิ่มเติมเนื้อหา
TagLib กับการลด Scriptlet สำหรับหน้า Web Application
Model-View-Controller Architechture