Spring 3 REST hello world example

In Spring 3, old RequestMapping class is enhanced to support RESTful features, which makes Spring developers easier to develop REST services in Spring MVC.

In this tutorial, we show you how to use Spring 3 MVC annotations to develop a RESTful style web application.

1. Project Directory

Review the project folder structure.

2. Project Dependency

To develop REST in Spring MVC, just include the core Spring and Spring MVC dependencies.

pom.xml

	<properties>
		<spring.version>3.0.5.RELEASE</spring.version>
	</properties>

	<dependencies>

		<!-- Spring 3 dependencies -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>

	</dependencies>

</project>

3. REST Controller

For Spring RESTful, you need PathVariable, RequestMapping and RequestMethod. Following code should be self-explanatory.

MovieController.java

package com.mkyong.common.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/movie")
public class MovieController {

	@RequestMapping(value = "/{name}", method = RequestMethod.GET)
	public String getMovie(@PathVariable String name, ModelMap model) {

		model.addAttribute("movie", name);
		return "list";

	}

	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String getDefaultMovie(ModelMap model) {

		model.addAttribute("movie", "this is default movie");
		return "list";

	}

}

4. JSP Views

A JSP page to display the value.

list.jsp

<html>
<body>
	<h1>Spring 3 MVC REST web service</h1>
	
	<h2>Movie Name : ${movie}</h2>	
</body>
</html>

5. Demo

See REST URLs demonstration.

URL : http://localhost:8080/SpringMVC/movie/ironMan

Spring MVC REST demo

URL : http://localhost:8080/SpringMVC/movie/SpiderMan4

spring mvc rest demo

Download Source Code

References

  1. http://en.wikipedia.org/wiki/Representational_State_Transfer
  2. http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

Leave a Reply

avatar
newest oldest most voted
Nirajan
Guest
Nirajan

I don’t think it is a REST. The response of a RESTful web service is either in JSON or XML. The response should not be in jsp like you presented. And specially, this is just an Spring MVC Hello World.

Ahmed Harchaoui
Guest
Ahmed Harchaoui

i agree with you !

Deepak ss
Guest
Deepak ss

you r correct :)

Puja Bhatt
Guest
Puja Bhatt

This tutorial is very helpful. I learn alot from this. Thanks to author

NSLabs
Guest
NSLabs

Mr.Nirajan is right

NSLabs
Guest
NSLabs

Yes, Worked Fine

Pavani
Guest
Pavani

I have imported the same downloaded project into eclipse,while running,it is showing the error as “java Exception has occurred”classnotfoundException
someone help me plz,I am new to this concept.

zak
Guest
zak

This is how to generate documentation using Swagger, after creating the Rest API:
http://opentechcode.blogspot.com/2015/09/generating-rest-services-documentation.html

Abhishek Upadhyaya
Guest
Abhishek Upadhyaya
ishan bakshi
Guest
ishan bakshi

Just been looking at the hello world tutorial as well at : http://www.mkyong.com/spring3/spring-3-mvc-hello-world-example/

I could not find any difference other than in this tutorial a value called {name} is being passed. Can anyone tell me… is the normal hello world program also a REST request?

kiki
Guest
kiki

How to compile this project?

Victor
Guest
Victor

SpringMVC:> mvn clean install

Ajit Kumar
Guest
Ajit Kumar

Hello sir;

I am new to Spring with REST call.

so try to learn this from your above example but am facing Requested HTTP URI not found issue,

means when am trying provide a external resource link for My CSS and JQuery file it not able to load these files to my jsp. but if change the :from

dispatch
/

—-To—–

dispatch
*.html

then my CSS and JQuery files are working but rest Call is not working

please any one help me out………………………

akshay jain
Guest
akshay jain

By downloading and importing project into eclipse it works fine. But how to create the project with same directory structure ? We created new-> dynamic web project. But it has different directory structure.

hilda
Guest
hilda

Need Help! I did everything mentioned here and the url says noHandler found! Any thoughts.

razesh
Guest
razesh

you are awesome, your examples are startup for me thanks again

Rahman
Guest
Rahman

i did everything ..it worked for the first time but it stopped working …so sometimes even you follow the instructions but you should clean the tomcat or whatever server used. After which, it worked fine…thanks

NJM
Guest
NJM

It worked fine for me. Thanks

trackback
Spring 3 MVC Hello World | Casa Do Desenvolvedor

[…] No Spring 3, anotações são utilizadas em quase todas as configurações. A @RequestMapping está disponível desde a versão 2.5, mas agora com suporte a REST no Spring MVC. […]

trackback
Eclipse Blocks Rest Call (Server returns 403) | BlogoSfera

[…] have a very simple Sring MVC Rest Service running locally on my mac. (See here for example: http://www.mkyong.com/spring-mvc/spring-3-rest-hello-world-example/). I can hit this REST service using Poster or via CURL and everything returns fine. I try to hit it […]

Oswaldo
Guest
Oswaldo
It works as expected, but I`m figuring out that the spring context is loaded several times, you can see on output log. INFO: Initializing Spring root WebApplicationContext Sep 18, 2013 12:59:39 PM org.springframework.web.context.ContextLoader initWebApplicationContext INFO: Root WebApplicationContext: initialization started … INFO: Root WebApplicationContext: initialization completed in 850 ms Sep 18, 2013 12:59:40 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring FrameworkServlet ‘mvc-dispatcher’ Sep 18, 2013 12:59:40 PM org.springframework.web.servlet.FrameworkServlet initServletBean INFO: FrameworkServlet ‘mvc-dispatcher’: initialization started … INFO: FrameworkServlet ‘mvc-dispatcher’: initialization completed in 158 ms Sep 18, 2013 12:59:40 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /Users/oswaldo/opt/Tomcat/webapps/Spring-MVC Sep 18, 2013 12:59:40 PM org.apache.catalina.core.ApplicationContext… Read more »
Jay Vee
Guest
Jay Vee

The downloaded .zip does not work. There needs to be a modification in the mvc-dispatcher-servlet.xml to make this work. the property name=”prefix” should have the value /WEB-INF/ removed or it will not work.

It should look like this:

/jsp/

.jsp

It Jobs
Guest
It Jobs

Thank you and it is excellent Tech Article .. It useful for Spring learner

Saraby
Guest
Saraby

It works perfectly. Thanks!!!

shams
Guest
shams

Thanks for a wonderful post.
This post will be helpful if any one interested to see how the spring framework supports JSON output from the restful web service
http://www.smashplus.info/2013/05/restful-web-service-in-spring-framework.html

Paul
Guest
Paul

Quick and dirty but doesn’t really explain much. As with SpringMVC tutorial some setup instructions would be nice. You might have named the project SpringMVCRest to differentiate it from the SpringMVC project tutorial and avoid namespace conflicts.

Charan D
Guest
Charan D

Can you upload spring + Hibernate+ RestFull implementation please.

sean
Guest
sean

Thanks for the great example!

If I may, I have one observation regarding getDefaultMovie’s @RequestMapping; use an empty string instead of a single forward slash.

 
@RequestMapping(value = "", method = RequestMethod.GET)
	public String getDefaultMovie(ModelMap model) {

The reason is while “localhost:8080/SpringMVC/movie/” displays the default movie message “localhost:8080/SpringMVC/movie” returns 404.

When an empty string is used, both return default movie message.

There are a lot of comments, sorry if this was previously stated.

Jeff
Guest
Jeff

Nice Observation! It worked.. Thanks Sean!

@mykong… thanks for the tutorial, its simple and perfect, worked like a charm. Great work!

jakki
Guest
jakki

java.lang.illegalstateexception no parameter name specified for argument of type java.lang.string i got this exception

When i changed the code from this

@RequestMapping(value = “/{name}”, method = RequestMethod.GET)
public String getMovie(@PathVariable String name, ModelMap model) {

to this its working now have to add (@PathVariable(“name”))

jakki
Guest
jakki

java.lang.illegalstateexception no parameter name specified for argument of type java.lang.string i got this exception

When i changed the code from this

@RequestMapping(value = “/{name}”, method = RequestMethod.GET)
public String getMovie(@PathVariable String name, ModelMap model) {

to this its working now have to add (@PathVariable(“name”))

@RequestMapping(value = “/{name}”, method = RequestMethod.GET)
public String getMovie(@PathVariable(“name”) String name, ModelMap model) {

Anand
Guest
Anand

I have a doubt. The example looks like normal web application but still serves as RESTful service. Here I see there is no reference implementation for JAX-RS is used. So, can I assume that JAX-RS standards are not required or irrelevant with Spring 3.0?

Amar
Guest
Amar

Nice articles…Y dont you make it available on github only…

Nitin Gupta
Guest
Nitin Gupta

I am newbie to Java and Spring, and i love Mkyong for for his wonderful tutorials and examples. It helps me a lot.