2015 最简单的 Spring MVC 入门教程
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
Simplest Spring MVC Hello World Example / Tutorial – Spring Model – View – Controller Tips
SHORT LINK:
Last Updated on October 22nd, 2015 by Crunchify 179 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. I’m using below tools which you may need to download if you don’t have already.
- Tomcat 7.0.65 – Download link.
- Eclipse IDE for
Java EE
Developers (Mars v4.5.1) – Download link. - Spring 4.2.2 (No download required) – we will use Maven dependency.
- JDK 1.8 – Download link.
Main goal for this tutorial to create Spring MVC Application in the simplest way
. This is how ourapplication result will look like. This is a final result once you complete all below steps.
Welcome page ==> index.jsp
Result returns from Controller Class
Now Let’s get started
Step-1
Open Eclipse and Create Dynamic Web Project CrunchifySpringMVCTutorial
.
Step-2
Make sure you use Target Runtime
as Apache Tomcat 7.0
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.
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
<
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
>
<
packaging
>
war
<
/
packaging
>
<
dependencies
>
<
dependency
>
<
groupId
>
org
.
springframework
<
/
groupId
>
<
artifactId
>
spring
-
context
<
/
artifactId
>
<
version
>
4.1.1.RELEASE
<
/
version
>
<
/
dependency
>
<
dependency
>
<
groupId
>
org
.
springframework
<
/
groupId
>
<
artifactId
>
spring
-
aop
<
/
artifactId
>
<
version
>
4.1.1.RELEASE
<
/
version
>
<
/
dependency
>
<
dependency
>
<
groupId
>
org
.
springframework
<
/
groupId
>
<
artifactId
>
spring
-
webmvc
<
/
artifactId
>
<
version
>
4.1.1.RELEASE
<
/
version
>
<
/
dependency
>
<
dependency
>
<
groupId
>
org
.
springframework
<
/
groupId
>
<
artifactId
>
spring
-
web
<
/
artifactId
>
<
version
>
4.1.1.RELEASE
<
/
version
>
<
/
dependency
>
<
dependency
>
<
groupId
>
javax
.
servlet
<
/
groupId
>
<
artifactId
>
jstl
<
/
artifactId
>
<
version
>
1.2
<
/
version
>
<
/
dependency
>
<
dependency
>
<
groupId
>
commons
-
logging
<
/
groupId
>
<
artifactId
>
commons
-
logging
<
/
artifactId
>
<
version
>
1.1.3
<
/
version
>
<
/
dependency
>
<
/
dependencies
>
<
build
>
<
sourceDirectory
>
src
<
/
sourceDirectory
>
<
plugins
>
<
plugin
>
<
artifactId
>
maven
-
compiler
-
plugin
<
/
artifactId
>
<
version
>
3.1
<
/
version
>
<
configuration
>
<
source
>
1.7
<
/
source
>
<
target
>
1.7
<
/
target
>
<
/
configuration
>
<
/
plugin
>
<
plugin
>
<
artifactId
>
maven
-
war
-
plugin
<
/
artifactId
>
<
version
>
2.4
<
/
version
>
<
configuration
>
<
warSourceDirectory
>
WebContent
<
/
warSourceDirectory
>
<
failOnMissingWebXml
>
false
<
/
failOnMissingWebXml
>
<
/
configuration
>
<
/
plugin
>
<
/
plugins
>
<
/
build
>
<
/
project
>
|
Step-5
Create Spring Configuration Bean
file. /WebContent/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
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.
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.
- Package: com.crunchify.controller
- Filename: CrunchifyHelloWorld.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 /WebContent/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 /WebContent/WEB-INF/jsp/welcome.jsp
file.
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
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.
Hurrey.. 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?
Triaging step-1
Make sure you add Apache Tomcat Server to Targeted Runtime
. Which you may have selected in Step-1
. Tomcat 7 or 8 any – server should work.
Triaging Step-2
Make sure to update all maven dependencies.
SHARE ON
Some more articles you might also be interested in …
- Spring MVC: How to Declare a Bean in Spring Application?
- Spring MVC Tutorial: How to Upload Multiple Files to Specific Location
- How to use AJAX, jQuery in Spring Web MVC (.jsp) – Example
- Spring MVC: Introduction to Spring 3 MVC Framework – Spring 4
- Spring MVC 4.2.2 – Best way to Add/Integrate JS, CSS and images into JSP file using ‘mvc:resources mapping’
- Working on Spring MVC Project? How to Report List of All Loaded Spring Beans during Startup?
- Servlet Tutorial: Getting Starting with JSP – Servlet Example
- How to import all Spring MVC Dependencies to your Maven Project?
- How to Update Sparkline Graph Every 3 Seconds in Spring MVC (Realtime Update)
- Spring MVC: How to Access ModelMap Values in a JSP?
Enjoyed this post?
Be sure to subscribe to the Crunchify newsletter and get regular updates about awesome posts just like this one and more! Join more than 13000 subscribers!
About Crunchify
Hello & Good Day from greater New York. Crunchify is founded by App Shah. He is a professional blogger & loves Web development hence Crunchify.com is his publication with more than 10 millions pageviews per month, that covers all aspects and tactics on Java, WordPress, J2EE (Enterprise Java), Spring MVC, Github, etc Technologies.