Saturday 10 November 2018

Spring Web MVC: ModelAndView tutorial

ModelAndView class used to hold both the data (Model) and view in MVC framework.

@Controller
@RequestMapping("/hello")
public class HelloWorldController {

         @RequestMapping(method = RequestMethod.GET)
         public ModelAndView printHello() {
                  ModelAndView modelAndView = new ModelAndView("hello");
                 
                  modelAndView.addObject("message", "Welcome to Spring MVC framework");
                  return modelAndView;
         }

}

For example, as you see above snippet, ‘printHello’ method return a ModelAndView instance and it holds the view ‘hello’ and a message "Welcome to Spring MVC framework". The value returned by ‘printHello’ method is resolved by DispatcherServlet.

ModelAndView class provides below constructors


public ModelAndView()
public ModelAndView(String viewName)
public ModelAndView(View view)
public ModelAndView(String viewName, @Nullable Map<String, ?> model)
public ModelAndView(View view, @Nullable Map<String, ?> model)
public ModelAndView(String viewName, HttpStatus status)
public ModelAndView(@Nullable String viewName, @Nullable Map<String, ?> model, @Nullable HttpStatus status)
public ModelAndView(String viewName, String modelName, Object modelObject)
public ModelAndView(View view, String modelName, Object modelObject)

Find the below working application.

HelloWorldController.java
package com.sample.myApp.controllers;

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

@Controller
@RequestMapping("/hello")
public class HelloWorldController {

 @RequestMapping(method = RequestMethod.GET)
 public ModelAndView printHello() {
  ModelAndView modelAndView = new ModelAndView("hello");
  
  modelAndView.addObject("message", "Welcome to Spring MVC framework");
  return modelAndView;
 }

}


index.jsp
<html>
<body>
 <h2>Hello World!</h2>
</body>
</html>


Create web.xml, HelloWorld-servlet.xml files under WEB-INF directory.

web.xml
<web-app id="WebApp_ID" version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 <display-name>Spring MVC Hello WorldApplication</display-name>

 <servlet>
  <servlet-name>HelloWorld</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>HelloWorld</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>

</web-app>


HelloWorld-servlet.xml
<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.sample.myApp" />

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

</beans>

Create hello.jsp under WEB-INF/jsp folder.

hello.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>Hello World Spring Web MVC</title>
</head>
<body>
 <h2>${message}</h2>
</body>
</html>


Project structure looks like below.


Run the application springdemo and hit the url  ‘http://localhost:8080/springdemo/hello’, you can able to see the message ‘Welcome to Spring MVC framework’.





Previous                                                 Next                                                 Home

No comments:

Post a Comment