Hướng dẫn xây dựng mô hình mvc trong java
Hướng dẫn xây dựng mô hình mvc trong java sẽ trình bày MVC là gì? Vai trò của từng thành phần.
MVC viết tắt của Model View Controller và được sử dụng để thiết kế những ứng dụng theo mô hình 3 tầng.
Trong đó
- Tầng Model là tầng thao tác với dữ liệu.
- Tầng View là tầng hiển thị dữ liệu.
- Tầng Controller có nhiệm vụ điều khiển các luồng dữ liệu (tầng Model) và hiển thị dữ liệu (tầng View), là cầu nối giữa tầng Model và tầng View.
Hướng dẫn xây dựng mô hình mvc trong java – Cài đặt (Implementation)
Chúng ta sẽ tạo một đối tượng Employee hoạt động như một model. EmployeeView là lớp hiển thị thông tin nhân viên. EmployeeController là lớp điều khiển, chịu trách nhiệm lưu trữ dữ liệu sử dụng đối tượng Employee và hiển thị dữ liệu sử dụng EmployeeView.
Yêu cầu:
- Cài đặt phần mềm Microsoft SQL Server
- Cài đặt cơ sở dữ liệu EMP có một bảng Employees (id int, first nvarchar(255), last nvarchar(255), age int). Xem hướng dẫn cài đặt cơ sở dữ liệu với SQL Server
- JDBC Driver for SQL Server
Bước 1: Tạo lớp EmployeeVO (Value Object)
package designpatterns.mvc; /** * * @author giasutinhoc.vn */ public class EmployeeVO { private int id; private String firstName; private String lastName; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Bước 2: Tạo EmployeeModel (View Layer)
package designpatterns.mvc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * * @author giasutinhoc.vn */ public class EmployeeModel { /** * To get the connection. * @return Connection * @throws Exception */ private static Connection getConnection() throws Exception { return DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=EMPDB;user=sa;password=sa"); } /** * To insert the record into the database * @param emp * @throws SQLException */ public int insert(EmployeeVO emp) throws SQLException { Connection c = null; PreparedStatement ps = null; int cnt = 0; try { c = this.getConnection(); ps = c.prepareStatement("insert into employees values(?, ?, ?, ?)"); int i = 0; ps.setInt(++i, emp.getId()); ps.setNString(++i, emp.getFirstName()); ps.setNString(++i, emp.getLastName()); ps.setInt(++i, emp.getAge()); cnt = ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { if (ps != null) { ps.close(); } if (c != null) { c.close(); } } return cnt; } /** * To display the data from the database * @param id * @throws SQLException */ public EmployeeVO display(EmployeeVO vo) throws SQLException { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; EmployeeVO emp = null; int cnt = 0; try { con = this.getConnection(); ps = con.prepareStatement("select * from employees where id = ?"); ps.setInt(1, vo.getId()); rs = ps.executeQuery(); emp = new EmployeeVO(); while (rs.next()) { emp.setId(rs.getInt("id")); emp.setFirstName(rs.getString("first")); emp.setLastName(rs.getString("last")); emp.setAge(rs.getInt("age")); cnt++; } if (cnt > 0) return emp; } catch (Exception e) { System.out.println(e); } finally { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (con != null) { con.close(); } } return null; } }
Bước 3: EmployeeController (Controller Layer)
package designpatterns.mvc; import java.sql.SQLException; /** * * @author giasutinhoc.vn */ public class EmployeeController { private EmployeeModel model; public EmployeeController() { model = new EmployeeModel(); } public int insertEmployee(EmployeeVO vo) { int cnt = 0; try { cnt = model.insert(vo); } catch (SQLException ex) { System.err.println("Error: " + ex.toString()); } return cnt; } public EmployeeVO displayEmployee(EmployeeVO emp) { EmployeeVO vo = null; try { vo = model.display(emp); } catch (SQLException ex) { System.err.println("Error: " + ex.toString()); } return vo; } }
Bước 4: Tạo lớp EmployeeView (View Layer)
package designpatterns.mvc; import java.util.Scanner; /** * * @author giasutinhoc.vn */ public class EmployeeView { private EmployeeVO vo; private EmployeeController controller; Scanner s; public EmployeeView() { controller = new EmployeeController(); vo = new EmployeeVO(); s = new Scanner(System.in); } public void createEmployee() { System.out.print("Enter employee's id: "); vo.setId(s.nextInt()); //clear buffer s.nextLine(); System.out.print("Enter employee's first name: "); vo.setFirstName(s.nextLine()); System.out.print("Enter employee's last name: "); vo.setLastName(s.nextLine()); System.out.print("Enter employee's age: "); vo.setAge(s.nextInt()); int cnt = controller.insertEmployee(vo); if (cnt != 0) { System.out.println("Insert successfully!"); } else { System.out.println("Cannot insert!"); } } public void printEmployeeDetails() { System.out.print("Enter employee's id to search: "); int id = s.nextInt(); vo.setId(id); EmployeeVO emp = controller.displayEmployee(vo); if (emp != null) { System.out.println(emp); } else { System.out.println("Not found!"); } } public static void main(String[] args) { Scanner s = new Scanner(System.in); int choice; EmployeeView view = new EmployeeView(); do { System.out.println(" 1. Create employee"); System.out.println(" 2. Display employee base on id"); System.out.println(" 3. Exit"); System.out.print("Please enter the choice: "); choice = s.nextInt(); //clear buffer s.nextLine(); switch (choice) { case 1: view.createEmployee(); break; case 2: view.printEmployeeDetails(); break; } } while (choice != 3); } }
Hướng dẫn xây dựng mô hình mvc trong java – Sau đây là kết quả nhận được khi chạy chương trình trên
Dữ liệu trong bảng Employees trước khi thêm
Sau khi chạy chương trình