Contoh MVC dengan Servlets dan JSP

1. Ikhtisar

Dalam artikel singkat ini, kita akan membuat aplikasi web kecil yang mengimplementasikan pola desain Model View Controller (MVC), menggunakan Servlets dan JSP dasar.

Kami akan menjelajahi sedikit tentang cara kerja MVC, dan fitur-fitur utamanya sebelum kami melanjutkan ke penerapan.

2. Pengantar MVC

Model-View-Controller (MVC) adalah pola yang digunakan dalam rekayasa perangkat lunak untuk memisahkan logika aplikasi dari antarmuka pengguna. Sesuai dengan namanya, pola MVC memiliki tiga lapisan.

Model mendefinisikan lapisan bisnis aplikasi, Kontroler mengelola aliran aplikasi, dan Tampilan mendefinisikan lapisan presentasi aplikasi.

Meskipun pola MVC tidak spesifik untuk aplikasi web, pola MVC sangat cocok untuk jenis aplikasi ini. Dalam konteks Java, Model terdiri dari kelas-kelas Java sederhana, Controller terdiri dari servlet dan View terdiri dari halaman JSP.

Berikut adalah beberapa fitur utama dari polanya:

  • Ini memisahkan lapisan presentasi dari lapisan bisnis
  • Controller melakukan tindakan memanggil Model dan mengirim data ke View
  • Model bahkan tidak menyadari bahwa ia digunakan oleh beberapa aplikasi web atau aplikasi desktop

Mari kita lihat setiap lapisan.

2.1. Lapisan Model

Ini adalah lapisan data yang berisi logika bisnis sistem, dan juga mewakili status aplikasi.

Ini tidak tergantung pada lapisan presentasi, pengontrol mengambil data dari lapisan Model dan mengirimkannya ke lapisan Tampilan.

2.2. Lapisan Pengontrol

Lapisan pengontrol bertindak sebagai antarmuka antara Tampilan dan Model. Ini menerima permintaan dari lapisan View dan memprosesnya, termasuk validasi yang diperlukan.

Permintaan selanjutnya dikirim ke lapisan Model untuk pemrosesan data, dan setelah diproses, data dikirim kembali ke Pengontrol dan kemudian ditampilkan di Tampilan.

2.3. Lapisan Tampilan

Lapisan ini mewakili keluaran aplikasi, biasanya beberapa bentuk UI. Lapisan presentasi digunakan untuk menampilkan data Model yang diambil oleh Kontroler.

3. MVC Dengan Servlets dan JSP

Untuk mengimplementasikan aplikasi web berdasarkan pola desain MVC, kita akan membuat kelas Student dan StudentService - yang akan bertindak sebagai lapisan Model kita.

Kelas S tudentServlet akan bertindak sebagai Controller, dan untuk lapisan presentasi, kita akan membuat halaman student-record.jsp .

Sekarang, mari kita tulis layer ini satu per satu dan mulai dengan kelas Student :

public class Student { private int id; private String firstName; private String lastName; // constructors, getters and setters goes here } 

Sekarang mari kita tulis StudentService yang akan memproses logika bisnis kita:

public class StudentService { public Optional getStudent(int id) { switch (id) { case 1: return Optional.of(new Student(1, "John", "Doe")); case 2: return Optional.of(new Student(2, "Jane", "Goodall")); case 3: return Optional.of(new Student(3, "Max", "Born")); default: return Optional.empty(); } } }

Sekarang mari buat kelas Pengendali StudentServlet kita :

@WebServlet( name = "StudentServlet", urlPatterns = "/student-record") public class StudentServlet extends HttpServlet { private StudentService studentService = new StudentService(); private void processRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String studentID = request.getParameter("id"); if (studentID != null) { int id = Integer.parseInt(studentID); studentService.getStudent(id) .ifPresent(s -> request.setAttribute("studentRecord", s)); } RequestDispatcher dispatcher = request.getRequestDispatcher( "/WEB-INF/jsp/student-record.jsp"); dispatcher.forward(request, response); } @Override protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }

Servlet ini adalah pengontrol aplikasi web kita.

Pertama, ini membaca id parameter dari permintaan. Jika id dikirimkan, objek Mahasiswa diambil dari lapisan bisnis.

Setelah mengambil data yang diperlukan dari Model, ia menempatkan data ini dalam permintaan menggunakan metode setAttribute () .

Akhirnya, Controller meneruskan objek request dan respon ke JSP, tampilan aplikasi.

Selanjutnya, mari tulis lapisan presentasi siswa-record.jsp :

  Student Record ID: First Name: Last Name: 

Dan, tentu saja, JSP adalah tampilan aplikasi; itu menerima semua informasi yang dibutuhkan dari Pengendali, tidak perlu berinteraksi dengan lapisan bisnis secara langsung.

4. Kesimpulan

Dalam tutorial ini, kita telah belajar tentang MVC yaitu arsitektur Model View Controller, dan kita berfokus pada bagaimana mengimplementasikan contoh sederhana.

Seperti biasa, kode yang disajikan di sini dapat ditemukan di GitHub.