1. Gambaran keseluruhan
Dalam artikel ringkas ini, kami akan membuat aplikasi web kecil yang menerapkan pola reka bentuk Model View Controller (MVC), menggunakan Servlets dan JSPs asas.
Kami akan menerangkan sedikit tentang bagaimana MVC berfungsi, dan ciri-ciri utamanya sebelum kita meneruskan pelaksanaannya.
2. Pengenalan MVC
Model-View-Controller (MVC) adalah corak yang digunakan dalam kejuruteraan perisian untuk memisahkan logik aplikasi dari antara muka pengguna. Seperti namanya, corak MVC mempunyai tiga lapisan.
Model menentukan lapisan perniagaan aplikasi, Pengawal menguruskan aliran aplikasi, dan Pandangan menentukan lapisan aplikasi.
Walaupun corak MVC tidak khusus untuk aplikasi web, ia sangat sesuai untuk jenis aplikasi ini. Dalam konteks Java, Model terdiri dari kelas Java sederhana, Controller terdiri dari servlet dan View terdiri dari halaman JSP.
Berikut adalah beberapa ciri utama corak:
- Ini memisahkan lapisan persembahan dari lapisan perniagaan
- Pengawal melakukan tindakan memanggil Model dan menghantar data ke View
- Model itu bahkan tidak menyedari bahawa ia digunakan oleh beberapa aplikasi web atau aplikasi desktop
Mari kita perhatikan setiap lapisan.
2.1. Lapisan Model
Ini adalah lapisan data yang mengandungi logik perniagaan sistem, dan juga mewakili keadaan aplikasi.
Tidak bergantung pada lapisan persembahan, pengawal mengambil data dari lapisan Model dan menghantarnya ke lapisan Lihat.
2.2. Lapisan Pengawal
Lapisan pengawal bertindak sebagai antara muka antara View dan Model. Ia menerima permintaan dari lapisan View dan memprosesnya, termasuk pengesahan yang diperlukan.
Permintaan selanjutnya dikirim ke lapisan Model untuk pemrosesan data, dan setelah diproses, data dikirim kembali ke Pengawal dan kemudian ditampilkan di View.
2.3. Lapisan Pandangan
Lapisan ini mewakili output aplikasi, biasanya beberapa bentuk UI. Lapisan presentasi digunakan untuk menampilkan data Model yang diambil oleh Controller.
3. MVC Dengan Servlets dan JSP
Untuk melaksanakan aplikasi web berdasarkan corak reka bentuk MVC, kami akan membuat kelas Student and StudentService - yang akan bertindak sebagai lapisan Model kami.
S tudentServlet kelas akan bertindak sebagai pengawal, dan untuk lapisan persembahan, kami akan membuat pelajar-record.jsp halaman.
Sekarang, mari tulis lapisan ini satu persatu dan mulakan dengan kelas Pelajar :
public class Student { private int id; private String firstName; private String lastName; // constructors, getters and setters goes here }
Mari sekarang tulis StudentService kami yang akan memproses logik perniagaan kami:
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 kita buat StudentServlet kelas Pengawal kami :
@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 pengawal aplikasi web kami.
Pertama, ia membaca id parameter dari permintaan. Sekiranya id dihantar, objek Pelajar diambil dari lapisan perniagaan.
Setelah mengambil data yang diperlukan dari Model, data ini akan dimasukkan ke dalam permintaan menggunakan kaedah setAttribute () .
Akhirnya, Pengawal meneruskan permintaan dan objek respons ke JSP, pandangan aplikasi.
Seterusnya, mari tuliskan lapisan persembahan pelajar kami-record.jsp :
Student Record ID: First Name: Last Name:
Dan, tentu saja, JSP adalah pandangan aplikasi; ia menerima semua maklumat yang diperlukannya dari Pengawal, ia tidak perlu berinteraksi dengan lapisan perniagaan secara langsung.
4. Kesimpulan
Dalam tutorial ini, kami telah belajar mengenai MVC iaitu seni bina Model View Controller, dan kami memfokuskan pada bagaimana menerapkan contoh sederhana.
Seperti biasa, kod yang disajikan di sini boleh didapati di GitHub.