diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml
index 694a21d5d2..d1e24a4d3d 100644
--- a/spring-mvc-java/pom.xml
+++ b/spring-mvc-java/pom.xml
@@ -99,6 +99,19 @@
thymeleaf
${thymeleaf.version}
+
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ 2.1.2
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.1.2
+
+
diff --git a/spring-mvc-java/src/main/java/org/baeldung/model/Employee.java b/spring-mvc-java/src/main/java/org/baeldung/model/Employee.java
new file mode 100644
index 0000000000..5365068a89
--- /dev/null
+++ b/spring-mvc-java/src/main/java/org/baeldung/model/Employee.java
@@ -0,0 +1,51 @@
+package org.baeldung.model;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class Employee {
+
+ private long id;
+ private String name;
+ private String contactNumber;
+
+ public Employee() {
+ super();
+ }
+
+ public Employee(final long id, final String name, final String contactNumber) {
+ this.id = id;
+ this.name = name;
+ this.contactNumber = contactNumber;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(final long id) {
+ this.id = id;
+ }
+
+ public String getContactNumber() {
+ return contactNumber;
+ }
+
+ public void setContactNumber(final String contactNumber) {
+ this.contactNumber = contactNumber;
+ }
+
+ @Override
+ public String toString() {
+ return "Employee [id=" + id + ", name=" + name + ", contactNumber=" + contactNumber + "]";
+ }
+
+}
diff --git a/spring-mvc-java/src/main/java/org/baeldung/spring/web/config/ContentManagementWebConfig.java b/spring-mvc-java/src/main/java/org/baeldung/spring/web/config/ContentManagementWebConfig.java
new file mode 100644
index 0000000000..6fd68394ea
--- /dev/null
+++ b/spring-mvc-java/src/main/java/org/baeldung/spring/web/config/ContentManagementWebConfig.java
@@ -0,0 +1,53 @@
+package org.baeldung.spring.web.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.web.servlet.ViewResolver;
+import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import org.springframework.web.servlet.view.InternalResourceViewResolver;
+import org.springframework.web.servlet.view.JstlView;
+
+@EnableWebMvc
+@Configuration
+public class ContentManagementWebConfig extends WebMvcConfigurerAdapter {
+
+ public ContentManagementWebConfig() {
+ super();
+ }
+
+ // API
+
+ @Override
+ public void configureContentNegotiation(final ContentNegotiationConfigurer configurer) {
+ configurer.favorPathExtension(true).
+ favorParameter(false).
+ parameterName("mediaType").
+ ignoreAcceptHeader(true).
+ useJaf(false).
+ defaultContentType(MediaType.TEXT_HTML).
+ mediaType("xml", MediaType.APPLICATION_XML).
+ mediaType("html", MediaType.TEXT_HTML).
+ mediaType("json", MediaType.APPLICATION_JSON);
+ }
+
+ @Override
+ public void addViewControllers(final ViewControllerRegistry registry) {
+ super.addViewControllers(registry);
+ registry.addViewController("/sample.html");
+ }
+
+ @Bean
+ public ViewResolver viewResolver() {
+ final InternalResourceViewResolver bean = new InternalResourceViewResolver();
+ bean.setViewClass(JstlView.class);
+ bean.setPrefix("/WEB-INF/view/");
+ bean.setSuffix(".jsp");
+ bean.setOrder(0);
+ return bean;
+ }
+
+}
diff --git a/spring-mvc-java/src/main/java/org/baeldung/web/controller/EmployeeController.java b/spring-mvc-java/src/main/java/org/baeldung/web/controller/EmployeeController.java
new file mode 100644
index 0000000000..8a41718b8c
--- /dev/null
+++ b/spring-mvc-java/src/main/java/org/baeldung/web/controller/EmployeeController.java
@@ -0,0 +1,55 @@
+package org.baeldung.web.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.baeldung.model.Employee;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+@Controller
+public class EmployeeController {
+
+ Map employeeMap = new HashMap<>();
+
+ @RequestMapping(value = "/employee", method = RequestMethod.GET)
+ public ModelAndView showForm() {
+ return new ModelAndView("employeeHome", "employee", new Employee());
+ }
+
+ @RequestMapping(value = "/employee/{Id}", produces = { "application/json", "application/xml" }, method = RequestMethod.GET)
+ public @ResponseBody Employee getEmployeeById(@PathVariable final long Id) {
+ return employeeMap.get(Id);
+ }
+
+ @RequestMapping(value = "/employee/{Id}", method = RequestMethod.GET)
+ public String getEmployeeByIdHtmlView(@PathVariable final long Id, final ModelMap model) {
+ model.addAttribute("name", employeeMap.get(Id).getName());
+ model.addAttribute("contactNumber", employeeMap.get(Id).getContactNumber());
+ model.addAttribute("id", employeeMap.get(Id).getId());
+
+ return "employeeView";
+ }
+
+ @RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
+ public String submit(@ModelAttribute("employee") final Employee employee, final BindingResult result, final ModelMap model) {
+ if (result.hasErrors()) {
+ return "error";
+ }
+ model.addAttribute("name", employee.getName());
+ model.addAttribute("contactNumber", employee.getContactNumber());
+ model.addAttribute("id", employee.getId());
+
+ employeeMap.put(employee.getId(), employee);
+
+ return "employeeView";
+ }
+
+}
diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeHome.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeHome.jsp
new file mode 100644
index 0000000000..c000bea39f
--- /dev/null
+++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeHome.jsp
@@ -0,0 +1,33 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
+
+
+
+Form Example - Register an Employee
+
+
+ Welcome, Enter The Employee Details
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp
new file mode 100644
index 0000000000..1457bc5fc8
--- /dev/null
+++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp
@@ -0,0 +1,24 @@
+<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+
+
+Spring MVC Form Handling
+
+
+
+ Submitted Employee Information
+
+
+ Name : |
+ ${name} |
+
+
+ ID : |
+ ${id} |
+
+
+ Contact Number : |
+ ${contactNumber} |
+
+
+
+
\ No newline at end of file