Spring Model Interface
Model Interface
Model is an interface that defines a holder for model attributes. It is also used to transfer data between various parts of the Spring MVC application. The Model interface is available in the org.springframework.ui package.
The Model interface acts as a data container that contains the data of the MVC application. The stored data can of any form such as String, Object, etc.
Following are some methods of the Model interface:
Method | Description |
Model addAllAttributes(Collection<?> attributeValues) | It copies all the attributes in the provided Collection into this Map. |
Model addAllAttributes(Map<String,?> attributes) | It copies all the attributes in the provided Map into this Map. |
Model addAttribute( Object attributevalue) | It adds the given attribute to this Map through a generated name. |
Model addAttribute(String attributeName, Object attributeValue ) | It wraps the given attributes with the given name. |
Map<String, Object> asMap() | It returns a current set of model attributes as a Map. |
Boolean containsAttribute(String attributeName) | It searches whether the model contains the attribute of the given name. |
Model mergeAttributes(Map<String,?> attributes) | It copies all the attributes in the given Map into this Map, with the existing objects of the same name. |
Example of Model interface
Following are the steps to create an example of adding form data to the Model object:
- Create a web request page
In this step, we are going to create a request page named index.jsp, which contains the link to other view pages.
index.jsp
<html> <body> <h2> Spring MVC Web application </h2> <a href = "home_page"> Home page | </a> <a href = "about_us"> About Us | </a> <a href = "general-form"> Query Form </a> </body> </html>
- Create the Controller class
In this step, we are going to create a controller class named MainController.java, which returns the JSP view pages. Here, we are using the HttpServletRequest interface that provides request information for HTTP servlets.
MainController.java
import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class MainController { @RequestMapping("/general-form") public String showForm() { return "genform"; } @RequestMapping("/processform") public String addDataModel(HttpServletRequest request, Model model) { // read form data from the HTML form String name = request.getParameter("StudentName"); // create the message for display String result = "We welcome you.. " + name ; // add mesage to model model.addAttribute("message", result) ; return "formdata" ; } }
- Add the entry of Controller into web.xml
In this step, we are going to add the entry of the Controller into a web.xml file.
web.xml
<?xml version = "1.0" encoding = "UTF-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id = "WebApp_ID" version = "3.1"> <display-name>spring-mvc-demo</display-name> <absolute-ordering /> <!-- Spring MVC Configs --> <!-- Step 1: Configure Spring MVC Dispatcher Servlet --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet --> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
- Define bean into another XML file.
In this step, we are going to declare the bean inside another XML file (spring-servlet.xml).
spring-servlet.xml
<?xml version = "1.0" encoding = "UTF-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:context = "http://www.springframework.org/schema/context" xmlns:mvc = "http://www.springframework.org/schema/mvc" xsi:schemaLocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- Step 3: Add support for component scanning --> <context:component-scan base-package = "com.app.SpringMVC3" /> <!-- Step 4: Add support for conversion, formatting and validation support --> <mvc:annotation-driven/> <!-- Step 5: Define Spring MVC view resolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value = "/WEB-INF/view/" /> <property name = "suffix" value = ".jsp" /> </bean> </beans>
- Create other JSP pages.
In this step, we are going to create the other JSP view pages.
genform.jsp
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Spring MVC Form</title> </head> <body> <form action = "processform" method = "get" > <input type = "text" name = "StudentName" placeholder = "Write your name.." /> <br></br> <input type = "submit" value = "Submit"/> </form> </body> </html>
formdata.jsp
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> <!DOCTYPE html> <html> <head> <meta charset = "ISO-8859-1"> <title>Insert title here</title> </head> <body> <h3>Spring MVC Application</h3> <br></br> STUDENT NAME: ${param.StudentName} <br></br> MESSAGE: ${message} </body> </html>
Output
Following are the outputs of the application: