Spring MVC Form İşlemleri ModelAttribute Kullanımı
Spring MVC Dersleri‘ne devam ediyoruz.
Spring MVC ile yapacağımız web uygulamalarında bolca kullanacağımız form işlemlerini yakından inceleyeceğiz. Spring MVC ile Form İşlemleri kullanarak dinamik web sayfaları ile etkileşime geçebilmekteyiz.
ModelAttribute anotasyonu kullanarak web sayfamız ile backend arasında veriler arasında iletişimi sağlamaktadır. Controller kullanarak verileri almaktayız. Şimdi bir örnek ile açıklayalım. Bu örneğimizde basit bir veri girişi olan form oluşturup verilerimizi backend tarafına ModelAttribute kullanarak alacağız.
Örneğimiz bir üye kayıt formu yapmak olacak.
public class Customer { private Integer age; private String name; public void setAge(Integer age) { this.age = age; } public Integer getAge() { return age; } public void setName(String name) { this.name = name; } public String getName() { return name; } }
Modelimizi oluşturduk.
@Controller public class CustomerController { @ModelAttribute("customer") public Customer setup() { return new Customer(); } @RequestMapping(value = "/customer", method = RequestMethod.GET) public ModelAndView customer() { return new ModelAndView("customer", "command", new Customer()); } @RequestMapping(value = "/addCustomer", method = RequestMethod.POST) public String addCustomer(@ModelAttribute("Customer")Customer customer, ModelMap model) { model.addAttribute("name", customer.getName()); model.addAttribute("age", customer.getAge()); return "result"; } }
Controllerimizi ekledik ve ModelAttribute anotasyonu ile kontrol edebileceğimiz Customer beanimizi tanımladık. ModelAttribute new Customer diyerek boş bir Customer oluşturuyoruz bu nesne sayesinde jsp sayfamızdan controllere aktarabilmekte ve yönetilebilmekteyiz.
<beans xmlns = "http://www.springframework.org/schema/beans" xmlns:context = "http://www.springframework.org/schema/context" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package = "com.burakkutbay" /> <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value = "/WEB-INF/jsp/" /> <property name = "suffix" value = ".jsp" /> </bean> </beans>
Servletimizi oluşturduk. Şimdi web sayfamızı oluşturalım.
<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%> <html> <head> <title>Burak KUTBAY</title> </head> <body> <form:form method = "POST" action = "/Customer/addCustomer"> <table> <tr> <td><form:label path = "name">Name</form:label></td> <td><form:input path = "name" /></td> </tr> <tr> <td><form:label path = "age">Age</form:label></td> <td><form:input path = "age" /></td> </tr> <tr> <td colspan = "2"> <input type = "submit" value = "Submit"/> </td> </tr> </table> </form:form> </body> </html>
Jsp sayfamızı oluşturduk. Form tagı ile oluşturduğumuz formdaki verinin nasıl gönderileceğini ve hangi yolu kullanarak hangi url’ye gideceğini action ile belirttik.
Şimdi kaydedilen bilgiler sonrasında oluşturulan müşteri bilgisini gösteren sayfamızı oluşturalım.
<%@page contentType = "text/html;charset = UTF-8" language = "java" %> <%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%> <html> <head> <title>Burak KUTBAY Blog</title> </head> <body> <table> <tr> <td>Name</td> <td>${name}</td> </tr> <tr> <td>Age</td> <td>${age}</td> </tr> </table> </body> </html>
Model Attribute anotasyonu kullanarak ön sayfamızdan verileri alıp yönetebilmekteyiz.
Önceki Ders: @PathVariable Kullanımı | Spring MVC Dersleri | Sonraki Ders: Form Validation @InitBinder Kullanımı |
Merhaba yaptığınız örnekte @ModelAttribute annotation’u kullanmadan çalıştırdığımda da sonuç normal bir şekilde çalışıyor.Bu annotation tam olarak neden kullanılıyor acaba?