Spring mvc UsingModels

Now we are going to send data to views from controller using models, The model is not available in the session it exists in the request scope.

If we use session object the data is available in session object. If we use ModelandView the data is available in request object.

web.xml

<pre><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <display-name>spring-tutorial-50</display-name>
 <welcome-file-list>
 <welcome-file>index.html</welcome-file>
 <welcome-file>index.htm</welcome-file>
 <welcome-file>index.jsp</welcome-file>
 <welcome-file>default.html</welcome-file>
 <welcome-file>default.htm</welcome-file>
 <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
 <servlet>
 <description></description>
 <display-name>offers</display-name>
 <servlet-name>offers</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>offers</servlet-name>
 <url-pattern>/</url-pattern>
 </servlet-mapping>
</web-app></pre>

OffersController.java


package com.sourceforopensource.spring.web.controllers;

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class OffersController {
 
 
 @RequestMapping("/")
 public ModelAndView showHome() {
 
 ModelAndView mv = new ModelAndView("home");

//we are mapping here our data as key value pairs. we then access our data with key
 
 Map<String, Object> model = mv.getModel();
 
 model.put("name", "<b>River</b>");

//here we are returning the ModelAndView Object.
 
 return mv;
 }

//we can add data to Model Object
  /*@RequestMapping("/")
 public String showHome(Model model) {
 
 model.addAttribute("name", "Tiffany");
 
 return "home";
 }*/
 

}

offers-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:mvc="http://www.springframework.org/schema/mvc"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
 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-3.2.xsd">


 <context:component-scan base-package="com.sourceforopensource.spring.web.controllers">
 </context:component-scan>
 <mvc:annotation-driven></mvc:annotation-driven>

 <bean id="jspViewResolver"
 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <property name="prefix" value="/WEB-INF/jsps/"></property>
 <property name="suffix" value=".jsp"></property>
 </bean>
</beans>

home.jsp


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Hi there!

//here we are accessing our ModelAndView data from request object.
Request: <%= request.getAttribute("name") %> <p/>

//here we are accessing data from Model object using expression language.
<%-- Request (using EL): ${name} <p/> --%>
</body>
</html>

output:

Insert title hereHi there! Request: Tiffany


Balakrishna Pendyala

Author: Balakrishna Pendyala

Balakrishna is a Software Engineer working in Media Streaming Domain, and also worked on Banking and Health Care domains. His areas of interest include Object Oriented Design, SOLID Design principles, Restful Web Services and Open Source softwares including Spring, Spring Boot, and Hibernate.

If you found an error, highlight it and press Shift + Enter or click here to inform us.

Leave a Reply

Your email address will not be published. Required fields are marked *