Membangun Project Pertama Menggunakan Spring Web MVC (Bagian 2)
Sebelumnya, pada bagian pertama tulisan ini – subrutin telah menunjukan bagaimana membuat project pertama “kosongan” yang siap diisi program menggunakan framework spring web mvc. Pada bagian kedua, programmer akan membuat sebuah program sederhana sekaligus merepresentasikan pattern mvc yang telah dibahas pada artikel yang berjudul Belajar Spring Web MVC : “Web Framework” Untuk Aplikasi Web
Misalkan, akan dibangun sebuah aplikasi berbasis web sederhana yang menampilkan sejumlah data karyawan di sebuah perusahaan. Untuk tujuan itu, diperlukan sebuah model bernama Employee
yang merepresentasikan entitas dari karyawan. Class Employee
terdiri dari properti sebagai berikut
id
fullName
address
package com.subrutin.springmvc.domain; public class Employee { private String id; private String name; private String address; public Employee(String id, String name, String address) { super(); this.id = id; this.name = name; this.address = address; } //getter setter diabaikan }
Berikutnya buat class controller, bernama EmployeeController
. Class ini harus berlokasi pada package com.subrutin.springmvc.controller
. Lokasi ini berdasarkan konfigurasi yang dibuat pada main-servlet.xml
yang telah dibuat pada bagian 1 tulisan ini.
package com.subrutin.springmvc.controller; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.subrutin.springmvc.domain.Employee; @Controller public class EmployeeController { private List<Employee> employee = new ArrayList<Employee>(); public EmployeeController() { employee.add(new Employee("1","Tedy Tri Saputro","Indonesia")); employee.add(new Employee("2","Elon Musk","USA")); employee.add(new Employee("3","Larry Page","USA")); } @RequestMapping("employee") public ModelAndView list(Model model) { ModelAndView mav = new ModelAndView("list"); model.addAttribute(employee); return mav; } }
Perhatikan, pada baris 14 anotasi @Controller
digunakan untuk memberitahu spring bahwa class tersebut merupakan controller. Pada baris 19-23, data list members
dibuat hardcoded, hanyalah untuk keperluan pembelajaran dan simplifikasi. Pada project yang sebenarnya, data akan diambil oleh sebuah class service.
Anotasi @RequestMapping
pada method list
digunakan untuk memberitahu spring agar request dengan path /employee.html
ditangani method tersebut. Pada baris 27, object ModelAndView
digunakan untuk menentukan nama view mana yang dipanggil. Karena di dalam program dituliskan new ModelAndView(list)
maka file jsp
yang akan dirender adalah WEB-INF/jsp/list.jsp
(perhatikan konfigurasi main-servlet.xml
yang telah dibuat pada bagian 1)
Selanjutnya, buat program jsp pada WEB-INF/jsp/list.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <title>Employee</title> </head> <body> <h1>Employee</h1> <c:forEach var="employee" items="${employeeList}"> <li> <c:out value="${employee.name}"></c:out> </li> </c:forEach> </body> </html>
pada layer view yang diwakili oleh teknologi jsp, digunakan jstl yang digunakan untuk menampilkan daftar Employee
yang telah dimuat di EmployeeController
. tag c:forEach
bertugas melakukan iterasi sejumlah elemen di dalam list, sedangkan c:out
merendernya ke dalam bentuk html.
Ketika program tersebut dideploy dan dijalankan menggunakan Apache Tomcat 9.0. Berikut adalah hasil yang ditampilkan