introduction to database system - maejo...

17
www.itsci.mju.ac.th/sayan MODEL VIEW CONTROLLER SAYAN UNANKARD 1/2562 6

Upload: others

Post on 12-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

w w w . i t s c i . m j u . a c . t h / s a y a n

MODEL VIEW CONTROLLER SAYAN UNANKARD1/2562

6

Page 2: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

จาวา โมเดล วิว คอนโทรลเลอร (JAVA MODEL VIEW CONTROLLER)

สถาปตยกรรมเอ็มวีซี (MVC) เปนสถาปตยกรรมซอฟตแวรที่แยกสวนของขอมูล การนําเสนอ และ

การควบคุมทางลอจิกออกจากกัน

แบงเปนสามสวนไดแก

• โมเดล (Model)

• วิว (View)

• คอนโทรลเลอร (Controller)

ทั้งนี้ก็เพื่อใหโปรแกรมมีความยืดหยุนมากขึ้น รวมถึงการแกไขไดงาย ตลอดจนการบํารุงรักษา

สามารถทําไดโดยงาย และเปนวิธีการที่เหมาะสมอยางยิ่งในการพัฒนาเว็บ

2

Page 3: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

สถาปตยกรรม MVC ประกอบดวย 3 สวนคือ

• โมเดลจะใชแทนขอมูลที่ใชภายในระบบและกฎเกณฑทางดานธุรกิจที่เก่ียวของกับการ

ดําเนินการเขาถึงและเปล่ียนแปลงแกไขขอมูลนั้น ๆ การเปล่ียนแปลงแตละคร้ังที่เกิดขึ้นโมเดล

จะตองมีการแจงใหวิวทราบเสมอ ทั้งนี้เนื่องจากโมเดลจะทําหนาที่ในการเรียกใชขอมูลใหแก

วิวเสมอ

• วิวใชสําหรับแสดงขอมูลที่บรรจุอยูในโมเดล ซึ่งวิวจะทําหนาที่นําเสนอขอมูล ตาง ๆ

นอกจากนั้นวิวยังมีหนาที่ในการนําเสนอเพ่ือที่เปล่ียนแปลงแกไขขอมูลในโมเดลโดยผานทาง

ผูใช หรือกลาวอีกในหนึ่งก็คือวิวทําหนาที่ติดตอกับผูใชนั่นเอง

• คอนโทรลเลอร เปนตัวควบคมุการทํางานทางลอจิกของระบบ โดยทําหนาที่ในการกําหนด

พฤติกรรมการทํางานของระบบ ตัวอยางเชน ผูใชเลือกเมนูใน แอพพลิเคชัน

คอนโทรลเลอรจะทําหนาที่เลือกสวนการนําเสนอตามความตองการของผูใช

3

Page 4: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

เว็บแอพพลิเคชันที่ใชจาวาเทคโนโลยี

เว็บแอพพลิเคชันที่ใชจาวาเทคโนโลยีในการพัฒนา สามารถแบงการทํางานออกไดเปน 3 สวน

หลักๆ ไดดังตอไปนี้

• เจเอสพี (JSP) ทําหนาที่ในการสรางเฮชทีเอ็มแอล สําหรับเปนสวนติดตอกับผูใช ซึ่งทําหนาที่

เปนวิวของระบบในสถาปตยกรรมแบบเอ็มวีซี

• เซิรฟเลต (Servlets) ทําหนาที่รับผิดชอบเก่ียวกับการทํางานทางลอจิก ซึ่งทําหนาที่เปน

คอนโทรลเลอรของระบบในสถาปตยกรรมแบบเอ็มวีซี

• จาวาบีน (JavaBeans) ทําหนาที่รับผิดชอบเก่ียวกับการเขาถึงขอมูลภายในระบบ ซึ่งทําหนาที่

เปนโมเดลของระบบในสถาปตยกรรมแบบเอ็มวีซี

4

Page 5: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

โมเดลแบบเอ็มวีซีของภาษาจาวา

5

Page 6: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

ประโยชนของการออกแบบ

• ประโยชนของการออกแบบโดยสถาปตยกรรมแบบเอ็มวีซี ยังเปนการแยกสวนของโมเดลและ

วิวออกจากกันจะทําใหงายตอการพัฒนา ทดสอบและบํารุงรักษาระบบ เน่ืองจากการเขาถึง

ทั้งหมดไปยังโมเดลจะตองอาศัยสวนประกอบเหลานี้

• การใชหลักการของเอ็มวีซีจะชวยใหการทําความเขาใจในการทํางานของตัว คอนโทรล และ

โมเดลไดงายขึ้น

• เนื่องจากการออกแบบโมเดลในลักษณะนี้จะถูกแบงออกเปนสวนที่ชัดเจน ดังนั้นการนํากลับไป

ใชใหมจึงสามารถทําไดโดยงาย

6

Page 7: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

ตัวอยางสถาปตยกรรมแบบเอ็มวีซีของการเขาสูระบบ (LOGIN)

โมเดล - จัดเก็บคาของชื่อผูใช และรหัสผานโดยมีวิธีการที่จะทําการ get และ set คาของขอมูล

วิว - การแสดงผลในสวนของหนาจอ

คอนโทรลเลอร - ควบคุมการตรวจสอบความถูกตองของขอมูลและสงไปแสดงผลในสวนของววิ

ตอไป

Customer LoginPage

LoginDB

LoginController

MainPage

7

Page 8: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

: Customer : LoginPage : LoginController : LoginDB : MainPageBasic Flow

1.เมือผูใชเขาสูหนา login

2. ปอนชื่อผูใชและรหัสผาน

5.ระบบคืนคาการตรวจสอบจากฐานขอมูล

6. ระบบแสดงหนาจอหลักสําหรับผูใชระบบ

Alternate Flow

5.1 ในกรณีท่ีการตรวจสอบชื่อผูใชและ

รหัสผานไมถูกตอง ระบบจะแสดง

ขอความ "Invalid Password and/or

User ID"

openLoginPage

inputLogin

getLogin()

query Login

return Login

3. ระบบรับคาขอมูล verifyLogin()

openMainPage

errorMessage

4.ระบบคนหาจากฐานขอมูล

8

Page 9: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

ตัวอยางสถาปตยกรรมแบบเอ็มวีซีของการเขาสูระบบ (LOGIN)

จากนั้นเมื่อเลือกเทคโนโลยีที่ใชในระบบ นักออกแบบระบบจะตองสรางซีเควนซไดอาแกรมระดับ

การพัฒนาเพ่ือใหเขากับเทคโนโลยีที่เลือกใช ในที่นี้ไดแก เจเอสพี และเซิรฟเลต

• โมเดลซึ่งประกอบดวยแอททริบิวสทั้งหมด และเมธอดสําหรับ set และ get คาขอมูล

• วิว คือหนาจอ login.jsp

• คอนโทรลเลอร ประกอบดวยเซิรฟเลต และคลาสสําหรับจัดการขอมูล โดยเซิรฟเลตทําหนาที่

รับคาจากหนาจอเพ่ือติดตอกับคลาสจัดการขอมูล

9

Page 10: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

LoginBean : Customer LoginServlet LoginManager : LoginDB : mainPage : loginPage

open loginPage

input logindoPost()

new LoginManager()new LoginBean()

setUsername()

setPassword()

isKnownVerifyLogin()

query login data

return login data

return result

[isKnown == true]

session.setAttribute()LoginBean

response.sendRedirect()

response.sendRedirect()

Login failed

10

Page 11: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

คลาสไดอาแกรมระดับการพัฒนาของลอกอิน

1 1

2

2

11

Page 12: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

หนาจอ LOGINPAGE.JSP

12

Page 13: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

สรางคลาส LOGINBEAN สําหรับเปนโมเดล

package login;

public class LoginBean {

private String username ;

private String password;

public LoginBean() { }public void setUsername(String uname) { username = uname; }public void setPassword(String pwd) { password = pwd; }public String getUsername() { return username; }public String getPassword() { return password; }

}

13

Page 14: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

คลาส LOGINMANAGER สาํหรับเปนคอนโทรลเลอร

package login;import java.sql.*;public class LoginManager {LoginBean loginbean = new LoginBean();public LoginManager(String uname, String pword) {

loginbean.setUsername(uname);loginbean.setPassword(pword);

}public LoginBean getLogin() { return loginbean; }public boolean VerifyLogin() {

boolean result = false;String url = "jdbc:odbc:lab9";Connection con;Statement stmt;try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");con = DriverManager.getConnection(url);

14

Page 15: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

คลาส LOGINMANAGER สาํหรับเปนคอนโทรลเลอร

stmt = con.createStatement();String sql = "Select * From Login Where username = '" +

loginbean.getUsername() + "'";ResultSet rs = stmt.executeQuery(sql);if ((rs.next()) && rs.getString(2).equals(loginbean.getPassword()))) {

result = true; }

} catch (SQLException e) { System.out.println(e.getMessage()); }finally {

try { if (stmt != null) stmt.close();if (con != null) con.close();

} catch (SQLException e1) { System.out.println(e1.getMessage()); }}return result;

}}

15

Page 16: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

สราง LOGINSERVLET สาํหรับรับคาจากหนาจอ

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session = request.getSession(true);String var0 = request.getParameter("username");if (var0 == null) {var0 = ""; }String var1 = request.getParameter("password");if (var1 == null) {var1 = ""; }

<!—เรยีกใชเ้มธอดในคลาส LoginManager เพือ่ตรวจสอบผูใ้ชแ้ละรหสัผา่น -->LoginManager loginmanager = new LoginManager(var0, var1);boolean isKnown = loginmanager.isVerify();if (isKnown == true) {

session.setAttribute("login",loginmanager.getLogin()); response.sendRedirect("mainPage.jsp");

} else {response.sendRedirect("loginPage.jsp");

}}

16

Page 17: Introduction to database system - Maejo Universityitsci.mju.ac.th/sayan/it311/slides/Ch06_MVC.pdf · สถาป ตยกรรม. mvc . ประกอบด วย . 3 . ส

หนาจอ MAINPAGE.JSP

17