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