2005/Nov/26

MVC คืออะไร?
MVC เ้็ป็นเฟรมเวิร์คที่เกิดขึ้นในยุค Smalltalk โดยครั้งแรกได้ถูกนำมาใช้ในการสร้างแบบจำลอง graphical user Interaction อย่างไรก็ตามแนวคิดนี้ยังถูกนำมาใช้ในการสร้าง multi-tier enterprise application

  • Model คือ ออบเจ็กต์ที่เป็นตัวแทนข้อมูลขององค์กร ที่ต้องการเข้าถึง
  • View คือ ออบเจ็กต์็ที่ใช้ในการแสดงข้อมูลขององค์กร โดยจะเข้าถึงข้อมูลผ่านทางออบเจ็กต์ model และเลือกวิธีการที่จะแสดงข้อมูลนั้น ซึ่งเมื่อข้อมูลใน model มีการเปลี่ยนแปลง ข้อมูลที่แสดงใน view ก็ต้องเปลี่ยนด้วยเช่นกัน ซึ่ง view จะมีเรียกใช้ model เมื่อต้องการอัพเดทข้อมูล
  • Control เป็นตัวแปล interaction ของผู้ใช้ที่ทำกับ view ให้เป็น action ที่จะทำกับ model ใน stand-alone GUI clinet, interaction จากผู้ใช้ได้แก่การกดคลิกที่ปุ่มหรือเมนู ในขณะที่ web application จะหมายถึง HTTP request GET และ POST ซึ่ง action ที่จะทำกับ model อาจเป็นการเรียกใช้ bussiness method หรือ การเปลี่ยนแปลงข้อมูลในตัว model ซึ่งขึ้นกับ interaction ของผู้ใช้ว่าเป็นอย่างไร จากนั้น controller จะทำการเลือก view ที่เหมาะสมสำหรับผลลัพธ์นั้น ๆ


MVC ในมุมมองของ Web
ในการพัฒนา web applicaton, จะแทน view แทนด้วย JSP, controllers แทนด้วย Servlet และ model แทนด้วย Javabean EJB หรือคลาสของจาวาอื่น ๆ
เมื่อเกิด interaction ของผู้ใช้ที่ฝั่งบราวเซอร์ Servlet (Controller) จะสร้าง instance ของ bean (Model) ที่ต้องการเข้าถึงโดยจากนั้นเปลี่ยนให้เป็น object หรือ session object และส่งต่อไปยัง JSP (View) เพื่อแสดงผลลัพธ์ที่เหมาะสม



ภาพประกอบแนวคิดของการใช้ MVC Framework ในการพัฒนา web application ครับ

2005/Nov/18

หลังจากที่เราได้เตรียมฐานข้อมูลกันแล้ว แต่ไปเราจะทำให้ JBuilder รู้จักกับ PostgreSQL กันนะครับ
1. ดาวน์โหลด JDBC Driver ของ PostgreSQL จาก http://jdbc.postgresql.org/download.html แล้ว copy ไปไว้ที่ /JBuilder/lib/ext (ความจริงเอาไว้ที่อื่นก็ได้)
2. เข้าโปรแกรม JBuilder เลือกเมนู Tools -> Config Library จากนั้นให้กด New.. .ที่ช่อง name ให้ใส่ PostgreSQL และ Location เป็น User Home จากนั้นกด Add จะเลือกไฟล์ไดรเวอร์จากข้อ 1 ครับ
3. เลือกเมนู Tools -> Enterprise Setup แล้วกดปุ่ม Add.. จากนั้นเลือก PostgreSQL กด OK จบขั้นตอนนี้แล้วจะถือว่า JBuilder รู้จัก PostgreSQL แล้วครับ
4. ทดสอบเขียนหน้า JSP ที่ insert ข้อมูลลงฐานข้อมูลในตอนที่ 1 ได้ดังนี้ครับ

<%@ page contentType="text/html; charset=windows-874" %>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>
PGDemo
</title>
</head>
<body bgcolor="#ffffff">
<h1>
PostgreSQL Test Page
</h1>
<%
Statement stmt = null;
Connection con = null;
if(request.getParameter("submit")!=null){
String URL = "jdbc:postgresql://localhost:5432/dbTest",
username = "Administrator",
password = "1234",
id = request.getParameter("id"),
pwd = request.getParameter("pwd");
try{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException ex){
out.println("error : " + ex.toString());
}
try{
con = DriverManager.getConnection(URL, username, password) ;
stmt = con.createStatement();
String sql = "INSERT INTO dbTest_user VALUES('"+id + "', '"+ pwd + "')";
int row = stmt.executeUpdate(sql);
if(row != 0){
out.println("update DB success!");
}
else{
out.println("unable to update DB!");
}
}
catch(SQLException qe){
out.println("error : " + qe.toString());
}
stmt.close();
con.close();
}
else{
%>
<form method="post" action="pgTest.jsp">
<table>
<tr><td>id</td><td><input type="text" name="id"></td></tr>
<tr><td>password</td><td><input type="text" name="pwd"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="insert"></td></tr>
</table>
</form>
</body>
</html>
<%}%>


edit @ 2005/11/18 18:49:02

2005/Nov/18

1. ติดตั้ง PostgreSQL
ให้ทำการติดตั้ง PostgreSQL และ pqAdmin เมื่อเสร็จแล้วให้เข้าไปแก้ config ไฟล์โดยไปที่ Start -> Program File -> PostgreSQL -> Adjust PostgreSQL Configuration Files ให้แก้ไขค่าในบรรทัดต่อไปนี้
#tcpip_socket = true ให้แก้เป็น tpcip_socket = true
#port = 5432 ให้แก้เป็น port = 5432
หมายเหตุ : อย่าลืมลบ "#" ที่อยู่ข้างหน้าออกทั้งสองบรรทัด
2. สร้างฐานข้อมูลที่ใช้ทดสอบ
2.1 ให้สร้าง Server ของฐานข้อมูลก่อน โดยเข้า pgAdmin จากนั้นไปที่ Tool -> Qurey Tool กรอกค่าต่าง ๆ ดังรูป (UserName จะเป็นชื่อ Account ใน Windows ที่เราใช้)



2.2 สร้างฐานข้อมูลโดยการ เรียกใช้ Quey Tool และพิมพ์ CREATE DATABASE myDB;
2.3 สร้างตารางด้วยคำสั่ง
CREATE TABLE dbTest_user( id varchar(14), pwd varchar(20));
จบตอนที่ 1 แล้วครับ ตอนนี้เราก็จะได้ฐานข้อมูล PostgreSQL สำหรับที่จะใช้ทดสอบในโปรแกรมเราแล้วครับ ตอนต่อไปจะพูดส่วนการตั้งค่าใน JBuilderX และการเขียนโปรแกรมทดสอบครับ