banner



How To Create Spring Mvc Maven Project In Eclipse

Spring MVC tutorial - Crunchify Tutorial

Model-View-Controller (MVC) architecture provides the simplest way to develop flexible and loosely coupled web applications.

In this tutorial we will go over on how to create your 1st Spring MVC application with very detailed steps.

Do you have any of below questions?

  • Fundamentals of Spring MVC 5.2.3
  • Developing a Spring Framework MVC 5 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 5.x MVC Tutorials, AJAX Demo, jQuery Demo, JavaScript Demo, Tips & Tricks Spring 5 MVC

Then you are at right place. Here I'll demonstrate simpleSpring MVC framework for building web applications.

First thing first – Let's Setup Environment

Tutorial last updated and verified: September 2020 with below Tool versions.

I'm using below tools which you may need to download if you don't have already.

  1. Tomcat 9.0.38 – Download latest Apache Tomcat from this link.
  2. Make sure you download Eclipse IDE forJava EE Developers (2020‑09 R) – Download link. (diagram below)
  3. Spring 5.2.9.RELEASE (No download required) – we will use Maven dependency.
  4. JDK 15 – Download link.
Simplest Spring MVC tutorial by Crunchify.com

Make sure you download latest Java EE Developer Kit:

Eclipse Photon IDE 4.8.0

Main Goal

Main goal for this tutorial to create Spring MVC Application in the simplest way.


Before we get started let's see what we will see at the end of this tutorial 🙂

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

CrunchifySpringMVCTutorial index.jsp page

Result returns from Controller Class 🙂

Message Coming from Controller

Now Let's get started on Tutorial

Step-1

  • Open Eclipse
  • Create New Eclipse Workspace – This is must to avoid any existing workspace config issue.
Create New Eclipse Workspace - Crunchify Tips

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 as Apache Tomcat 9.0
    • If you don't see Target Runtime then follow these steps
  • Choose Configuration as Default Configuration
Create Crunchify Spring MVC Dynamic Web Project

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
Convert Dynamic Web Project to Maven Project
Convert CrunchifySpringMVCTutorial to Maven project

Step-4

Open pom.xml file and add below jar dependencies to project.

Crunchify Spring MVC pom.xml Dependencies

NOTE: Here is my pom.xml file. Make sure you update Java version to 13 if you haven't yet moved to JDK 13. We will keep updating this tutorial to latest Spring MVC version.

So below pom.xml file may have different (latest) version of Spring MVC dependencies than above image 🙂

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

< 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 >

< build >

< sourceDirectory > src </sourceDirectory >

< plugins >

< plugin >

< artifactId > maven-compiler-plugin </artifactId >

< version > 3.8.0 </version >

< configuration >

< release > 13 </release >

</configuration >

</plugin >

< plugin >

< artifactId > maven-war-plugin </artifactId >

< version > 3.2.1 </version >

< configuration >

< warSourceDirectory > WebContent </warSourceDirectory >

</configuration >

</plugin >

</plugins >

</build >

< dependencies >

< dependency >

< groupId > org . springframework </groupId >

< artifactId > spring-core </artifactId >

< version > 5.2.3.RELEASE </version >

</dependency >

< dependency >

< groupId > org . springframework </groupId >

< artifactId > spring-context </artifactId >

< version > 5.2.3.RELEASE </version >

</dependency >

< dependency >

< groupId > org . springframework </groupId >

< artifactId > spring-aop </artifactId >

< version > 5.2.3.RELEASE </version >

</dependency >

< dependency >

< groupId > org . springframework </groupId >

< artifactId > spring-webmvc </artifactId >

< version > 5.2.3.RELEASE </version >

</dependency >

< dependency >

< groupId > org . springframework </groupId >

< artifactId > spring-web </artifactId >

< version > 5.2.3.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

Create crunchify-servlet.xml file - Spring MVC project

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

23

24

25

26

27

<? xml version="1.0" encoding="UTF-8" ?>

< 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" >

< mvc : annotation-driven />

< context : component-scan

base-package="com.crunchify.controller" />

< mvc : default-servlet-handler />

< 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.xmlconfiguration file, we have defined a tag <context:component-scan> . This will allow Spring to load all the components from packagecom.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 if it's already not there.  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.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

<? xml version="1.0" encoding="UTF-8" ?>

< web-app xmlns : xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi : schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0" >

< display-name > CrunchifySpringMVCTutorial </display-name >

< welcome-file-list >

< welcome-file > index . html </welcome-file >

< welcome-file > index . htm </welcome-file >

< welcome-file > index . jsp </welcome-file >

< welcome-file > default . html </welcome-file >

< welcome-file > default . htm </welcome-file >

< welcome-file > default . 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 >/index . 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
Create Spring Controller Class CrunchifyHelloWorld

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 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 ( 'https://cdn.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 ( 'https://cdn.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="https://crunchify.com" > Crunchify </a > .

Click < a href="https://crunchify.com/category/java-tutorials/"

target="_blank" > here </a > for all Java and < a

href='https://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.

Simplest Spring MVC Tutorial Project Structure - Crunchify

Step-9

Right Click on Project -> Run As -> Maven Build...

Maven Run-as - Maven Build in Eclipse IDE

Add Goals: clean install. Click Apply and Run.

Clean Install maven Spring project

You should see build success message:

Spring MVC Maven Clean Install 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 in Servers tab then follow steps to add Apache Tomcat to Eclipse.
  • Deploy project to Apache Tomcat
    • Right click
    • Add and Remove
    • Add Project to server (right side section).
  • Click on Start.
Start Apache Tomcat in Eclipse - Crunchify Tips

Make sure you see below logs. That means your application is successfully deployed on Tomcat Web Server.

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

Aug 04 , 2018 9 : 08 : 10 PM org . apache . tomcat . util . digester . SetPropertiesRule begin

WARNING : [ SetPropertiesRule ] { Server/Service/Engine/Host/Context } Setting property 'source' to 'org.eclipse.jst.jee.server:CrunchifySpringMVCTutorial' did not find a matching property .

INFO : Server version : Apache Tomcat/9.0.10

INFO : Server built : Jun 20 2018 17 : 32 : 21 UTC

INFO : Server number : 9.0.10.0

INFO : OS Name : Mac OS X

INFO : OS Version : 10.13.6

INFO : Architecture : x86_64

INFO : Java Home : /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home

INFO : JVM Version : 10.0.2+13

INFO : JVM Vendor : "Oracle Corporation"

INFO : CATALINA_BASE : /Users/appshah/Documents/jee-photon/workspace/c/. metadata/. plugins/org . eclipse . wst . server . core/tmp0

INFO : CATALINA_HOME : /Users/appshah/Documents/jee-photon/apache-tomcat-9.0.10

INFO : Command line argument : -Dcatalina . base=/Users/appshah/Documents/jee-photon/workspace/c/. metadata/. plugins/org . eclipse . wst . server . core/tmp0

INFO : Command line argument : -Dcatalina . home=/Users/appshah/Documents/jee-photon/apache-tomcat-9.0.10

INFO : Command line argument : -Dwtp . deploy=/Users/appshah/Documents/jee-photon/workspace/c/. metadata/. plugins/org . eclipse . wst . server . core/tmp0/wtpwebapps

INFO : Command line argument : -Dfile . encoding=UTF-8

INFO : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java . library . path : [/Users/appshah/Library/Java/Extensions :/Library/Java/Extensions :/Network/Library/Java/Extensions :/System/Library/Java/Extensions :/usr/lib/java : . ]

INFO : Initializing ProtocolHandler [ "http-nio-8080" ]

INFO : Using a shared selector for servlet write/read

INFO : Initializing ProtocolHandler [ "ajp-nio-8009" ]

INFO : Using a shared selector for servlet write/read

INFO : Initialization processed in 841 ms

INFO : Starting service [ Catalina ]

INFO : Starting Servlet Engine : Apache Tomcat/9.0.10

INFO : At least one JAR was scanned for TLDs yet contained no TLDs . Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them . Skipping unneeded JARs during scanning can improve startup time and JSP compilation time .

INFO : At least one JAR was scanned for TLDs yet contained no TLDs . Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them . Skipping unneeded JARs during scanning can improve startup time and JSP compilation time .

INFO : No Spring WebApplicationInitializer types detected on classpath

INFO : Initializing Spring FrameworkServlet 'crunchify'

INFO : FrameworkServlet 'crunchify' : initialization started

INFO : Refreshing WebApplicationContext for namespace 'crunchify-servlet' : startup date [ Sat Aug 04 21 : 08 : 13 CDT 2018 ] ; root of context hierarchy

INFO : Loading XML bean definitions from ServletContext resource [/WEB-INF/crunchify-servlet . xml ]

INFO : Mapped "{[/welcome]}" onto public org . springframework . web . servlet . ModelAndView com . crunchify . controller . CrunchifyHelloWorld . helloWorld ( )

INFO : Looking for @ ControllerAdvice : WebApplicationContext for namespace 'crunchify-servlet' : startup date [ Sat Aug 04 21 : 08 : 13 CDT 2018 ] ; root of context hierarchy

INFO : Looking for @ ControllerAdvice : WebApplicationContext for namespace 'crunchify-servlet' : startup date [ Sat Aug 04 21 : 08 : 13 CDT 2018 ] ; root of context hierarchy

INFO : Mapped URL path [/**] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0'

INFO : FrameworkServlet 'crunchify' : initialization completed in 1607 ms

INFO : Starting ProtocolHandler [ "http-nio-8080" ]

INFO : Starting ProtocolHandler [ "ajp-nio-8009" ]

INFO : Server startup in 3579 ms

Step-11. Done.

Visit: http://localhost:8080/CrunchifySpringMVCTutorial/ and you should be all set.

Hurray.. Now you know Hello World Spring MVC 5 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 – Having HTTP Status 404 error?

Make sure welcome.jsp file is inside jsp folder
Also, follow below tutorial:

Triaging step-2 – URL doesn't work? Tomcat error?

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.

Spring MVC tutorial - Eclipse Target Runtime Setting

Triaging Step-3 – maven errors?

Make sure to update all maven dependencies.

Force Update dependencies - Spring MVC tutorial

Feel free to email or comment below if you have any problem running above tutorial.

Share:

How To Create Spring Mvc Maven Project In Eclipse

Source: https://crunchify.com/simplest-spring-mvc-hello-world-example-tutorial-spring-model-view-controller-tips/

Posted by: stewartdand1947.blogspot.com

0 Response to "How To Create Spring Mvc Maven Project In Eclipse"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel