Spring MVC Tutorial

Spring 4 MVC Hello World Example For Beginners

Spring 4 MVC Hello World Example:

This Spring 4 example follows spring java based configuration to build a simple spring mvc hello world example.

If you are looking for spring mvc xml based tutorial then checkout my example spring mvc xml configuration.

Spring Java Configuration

Lets see the java spring configuration code and compare to its older xml configuration way.

Older web xml for spring configuration

The below web xml spring configuration is now replaced with java based configuration.

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

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

Java based spring web xml configuration

New Servlet 3.0 + support – code-based web.xml configuration for spring 4

The below code is equivalent of the above web.xml example.

package com.candidjava.spring.configuration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import com.candidjava.spring.configuration.SpringConfiguration;
public class SpringWebIntializer implements WebApplicationInitializer {
  public void onStartup(ServletContext container) throws ServletException {
    // TODO Auto-generated method stub
    AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
    context.register(SpringConfiguration.class);
    context.setServletContext(container);
    container.addListener(new ContextLoaderListener(context));
    ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(context));
    servlet.setLoadOnStartup(1);
    servlet.addMapping("/");
  }
}

Older spring mvc xml configuration

The below code shows the xml based spring mvc configuration.

<?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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    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">

    <context:component-scan base-package="com.candidjava.spring.controller"/>

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

</beans>

Java based Spring annotation configuration

package com.candidjava.spring.configuration;
import java.io.IOException;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.candidjava.spring.controller")
public class SpringConfiguration extends WebMvcConfigurerAdapter {
  @Bean(name = "jspViewResolver")
  public ViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    viewResolver.setViewClass(JstlView.class);
    return viewResolver;
  }
}

HelloWorldController

package com.candidjava.spring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController {
  @RequestMapping("index")
  public ModelAndView sayHello() {
    ModelAndView model = new ModelAndView("hello");
    model.addObject("msg", "say hello from controller");
    return model;
  }
}

View

index.jsp

<% response.sendRedirect("index"); %>

hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%@ page isELIgnored="false"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
  ${msg}
  <br>
  <b>Thanks for Visting Candid Java (candidjava.com)</b>
</body>
</html>

Download

Spring 4 mvc example war

Spring 4 mvc example maven