implest Spring MVC Hello World Example / Tutorial – Spring Model – View – Controller Tips
Last Updated on 9 September, 2016 by App Shah 285 Comments
Do you have any one of below question?
- Developing a Spring Framework MVC 4 application step-by-step..
- java – Spring MVC tutorial from the scratch
- Spring MVC Fast Tutorial
- Spring MVC Framework Tutorial
- First Spring MVC application tutorial
- Spring 4 MVC Tutorials, AJAX Demo, jQuery Demo, JavaScript Demo, Tips & Tricks Spring 4 MVC
Then you are at right place. Here I’ll demonstrate simple Spring MVC framework
for building web applications.
First thing first – Let’s Setup Environment
I’m using below tools which you may need to download if you don’t have already.
- Tomcat 8.0.37 – Download latest Apache Tomcat from this link.
- Make sure you download Eclipse IDE for
Java EE
Developers (Neon v4.6
) – Download link. (diagram below) - Spring 4.3.1 (No download required) – we will use Maven dependency.
- JDK 1.8 – Download link.
Make sure you download Java EE
:
Main goal for this tutorial to create Spring MVC Application in the simplest way
. This is how our application result
will look like. This is a final result once you complete all below steps.
Here is a final result: Welcome page ==> index.jsp
Result returns from Controller Class ??
Now Let’s get started on Tutorial
Step-1
- Open Eclipse
- Create
New Eclipse Workspace
– This ismust
to avoid any existing workspace config issue.
Step-2
- Click on
File
- Click on
New
- Choose
Dynamic Web Project
- One popup window, Provide Project Name:
CrunchifySpringMVCTutorial
- Make sure you use
Target Runtime
asApache Tomcat 8.0
. If you don’t see Target Runtime then follow these steps.
Step-3
Convert Project to Maven Project to add all required Spring MVC dependencies to project.
Steps:
- Right click on project
- Configure
- Convert to
Maven
project
Step-4
Open pom.xml
file and add below jar dependencies
to project.
Here is my pom.xml
file. Make sure you update Java version to 1.7
if you haven’t yet moved to JDK 1.8
.
pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>CrunchifySpringMVCTutorial</groupId> <artifactId>CrunchifySpringMVCTutorial</artifactId> <version>0.0.1-SNAPSHOT</version> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.3.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.1.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> </project> |
Step-5
Create new Spring Configuration Bean
file: /WebContent/WEB-INF/crunchify-servlet.xml
/WEB-INF/crunchify-servlet.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" 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.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.crunchify.controller" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans> |
In the above crunchify-servlet.xml
configuration file, we have defined a tag <context:component-scan>
. This will allow Spring to load all the components from package com.crunchify.controller
and all its child packages.
This will load our CrunchifyHelloWorld.class
. Also we have defined a bean viewResolver
. This bean will resolve the view and add prefix string /WEB-INF/jsp/
and suffix .jsp
to the view in ModelAndView. Note that in our CrunchifyHelloWorld
class, we have return a ModelAndView object with view name welcome. This will be resolved to path /WEB-INF/jsp/welcome.jsp
.
Step-6
Create new file web.xml
. Map Spring MVC in /WebContent/WEB-INF/web.xml
file.
NOTE:
if you don’t see web.xml file in your “dynamic web project
” then follow these steps.
/WEB-INF/web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>CrunchifySpringMVCTutorial</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>crunchify</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>crunchify</servlet-name> <url-pattern>/welcome.jsp</url-pattern> <url-pattern>/welcome.html</url-pattern> <url-pattern>*.html</url-pattern> </servlet-mapping> </web-app> |
The above code in web.xml
will map DispatcherServlet with url pattern /welcome.jsp
. Also note that we have define index.jsp
as welcome file.
One thing to note here is the name of servlet in <servlet-name>
tag in web.xml
. Once the DispatcherServlet is initialized, it will looks for a file name [servlet-name]-servlet.xml
in WEB-INF folder of web application. In this example, the framework will look for file called crunchify-servlet.xml
.
Step-7
Create Controller Class.
- Right click on
Java Resources
->src
- Click
New
->Class
- Package:
com.crunchify.controller
- Filename:
CrunchifyHelloWorld.java
com.crunchify.controller.CrunchifyHelloWorld.java
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package com.crunchify.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; /* * author: Crunchify.com * */ @Controller public class CrunchifyHelloWorld { @RequestMapping("/welcome") public ModelAndView helloWorld() { String message = "<br><div style=‘text-align:center;‘>" + "<h3>********** Hello World, Spring MVC Tutorial</h3>This message is coming from CrunchifyHelloWorld.java **********</div><br><br>"; return new ModelAndView("welcome", "message", message); } } |
Note that we have annotated the CrunchifyHelloWorld
class with @Controller
and @RequestMapping("/welcome")
. When Spring scans our package, it will recognize this bean as being a Controller bean for processing requests. The @RequestMapping
annotation tells Spring that this Controller should process all requests beginning with /welcome in the URL path. That includes /welcome/*
and /welcome.html
.
The helloWorld() method returns ModelAndView
object. The ModelAndView object tries to resolve to a view named “welcome” and the data model is being passed back to the browser so we can access the data within the JSP. The logical view name will resolve to /WEB-INF/jsp/welcome.jsp
. Logical name “welcome” which is return in ModelAndView object is mapped to path /WEB-INF/jsp/welcome.jsp.
The ModelAndView object also contains a message with key “message” and Detailed value. This is the data that we are passing to our view. Normally this will be a value object in form of java bean that will contain the data to be displayed on our view. Here we are simply passing a string.
Step-8
The View – Create new file /WebContent/index.jsp
.
index.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<html> <head> <title>Spring MVC Tutorial Series by Crunchify.com</title> <style type="text/css"> body { background-image: url(‘http://crunchify.com/bg.png‘); } </style> </head> <body> <br> <div style="text-align:center"> <h2> Hey You..!! This is your 1st Spring MCV Tutorial..<br> <br> </h2> <h3> <a href="welcome.html">Click here to See Welcome Message... </a>(to check Spring MVC Controller... @RequestMapping("/welcome")) </h3> </div> </body> </html> |
Create another file /WebContent/WEB-INF/jsp/welcome.jsp
.
NOTE:
Don’t forget to create jsp
folder and put welcome.jsp
inside that ??
welcome.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<html> <head> <title>Spring MVC Tutorial by Crunchify - Hello World Spring MVC Example</title> <style type="text/css"> body { background-image: url(‘http://crunchify.com/bg.png‘); } </style> </head> <body>${message} <br> <br> <div style="font-family: verdana; padding: 10px; border-radius: 10px; font-size: 12px; text-align:center;"> Spring MCV Tutorial by <a href="http://crunchify.com">Crunchify</a>. Click <a href="http://crunchify.com/category/java-web-development-tutorial/" target="_blank">here</a> for all Java and <a href=‘http://crunchify.com/category/spring-mvc/‘ target=‘_blank‘>here</a> for all Spring MVC, Web Development examples.<br> </div> </body> </html> |
After everything this is how your workspace should look like.
Step-9
Right Click on Project -> Run As -> Maven Build...
Add Goals
: clean install
. Click Apply
and Run
.
You should see build success message
:
Where are all of my .jar files?
You will see all .jar files under /target
folder. Screenshot.
Step-10
- If you
don‘t see
Tomcat Server inServers
tab then follow steps to add Apache Tomcat to Eclipse. - Deploy project to
Apache Tomcat
and start tomcat.
Make sure you see below logs. That means your application is successfully deployed on Tomcat Web Server.
Step-11
Visit: http://localhost:8080/CrunchifySpringMVCTutorial/ and you should be all set.
Hurray.. Now you know Hello World Spring MVC 4 Example
. Let me know if you encounter any exception while running this. There are lot more example you can find here.
Do you want to include JS, CSS and images into JSP file?
Follow this tutorial: Best way to Add/Integrate JS, CSS and images into JSP file using ‘mvc:resources mapping’.
Having trouble? Any issue?