diff --git a/spring-mvc-basics/README.md b/spring-mvc-basics/README.md
index c8a0ac6508..15b19cc1d0 100644
--- a/spring-mvc-basics/README.md
+++ b/spring-mvc-basics/README.md
@@ -8,4 +8,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
### Relevant Articles:
- [Spring MVC Tutorial](https://www.baeldung.com/spring-mvc-tutorial)
- [The Spring @Controller and @RestController Annotations](http://www.baeldung.com/spring-controller-vs-restcontroller)
-- [Using Spring ResponseEntity to Manipulate the HTTP Response](http://www.baeldung.com/spring-response-entity)
\ No newline at end of file
+- [Using Spring ResponseEntity to Manipulate the HTTP Response](http://www.baeldung.com/spring-response-entity)
+- [A Guide to the ViewResolver in Spring MVC](http://www.baeldung.com/spring-mvc-view-resolver-tutorial)
\ No newline at end of file
diff --git a/spring-mvc-basics/pom.xml b/spring-mvc-basics/pom.xml
index cb9f1be9eb..3bcf5bc4ca 100644
--- a/spring-mvc-basics/pom.xml
+++ b/spring-mvc-basics/pom.xml
@@ -36,12 +36,12 @@
jstl
${jstl.version}
-
+
com.fasterxml.jackson.core
jackson-databind
- ${jackson.version}
+ ${jackson.version}
@@ -56,6 +56,18 @@
test
${jayway.json-path.version}
+
+ io.rest-assured
+ rest-assured
+ ${rest-assured.version}
+ test
+
+
+ org.hamcrest
+ hamcrest-all
+ ${hamcrest.version}
+ test
+
@@ -72,6 +84,8 @@
4.0.1
2.3.3
2.4.0
+ 4.0.0
+ 1.3
diff --git a/spring-mvc-basics/src/main/java/com/baeldung/spring/web/config/WebConfig.java b/spring-mvc-basics/src/main/java/com/baeldung/spring/web/config/WebConfig.java
index 6ee20d7a6b..9fa9bd58db 100644
--- a/spring-mvc-basics/src/main/java/com/baeldung/spring/web/config/WebConfig.java
+++ b/spring-mvc-basics/src/main/java/com/baeldung/spring/web/config/WebConfig.java
@@ -3,12 +3,15 @@ package com.baeldung.spring.web.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
+import org.springframework.web.servlet.view.ResourceBundleViewResolver;
+import org.springframework.web.servlet.view.XmlViewResolver;
@EnableWebMvc
@Configuration
@@ -27,7 +30,23 @@ public class WebConfig implements WebMvcConfigurer {
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/view/");
bean.setSuffix(".jsp");
+ bean.setOrder(2);
+ return bean;
+ }
+
+ @Bean
+ public ViewResolver resourceBundleViewResolver() {
+ final ResourceBundleViewResolver bean = new ResourceBundleViewResolver();
+ bean.setBasename("views");
bean.setOrder(0);
return bean;
}
+
+ @Bean
+ public ViewResolver xmlViewResolver() {
+ final XmlViewResolver bean = new XmlViewResolver();
+ bean.setLocation(new ClassPathResource("views.xml"));
+ bean.setOrder(1);
+ return bean;
+ }
}
\ No newline at end of file
diff --git a/spring-mvc-basics/src/main/java/com/baeldung/web/controller/SampleController.java b/spring-mvc-basics/src/main/java/com/baeldung/web/controller/SampleController.java
index c13986e005..ce89669fde 100644
--- a/spring-mvc-basics/src/main/java/com/baeldung/web/controller/SampleController.java
+++ b/spring-mvc-basics/src/main/java/com/baeldung/web/controller/SampleController.java
@@ -5,9 +5,20 @@ import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class SampleController {
- @GetMapping("/sample")
+
+ @GetMapping("/sample")
public String showForm() {
return "sample";
}
+
+ @GetMapping("/sample2")
+ public String showForm2() {
+ return "sample2";
+ }
+
+ @GetMapping("/sample3")
+ public String showForm3() {
+ return "sample3";
+ }
}
diff --git a/spring-mvc-basics/src/main/resources/views.properties b/spring-mvc-basics/src/main/resources/views.properties
new file mode 100644
index 0000000000..06d042b446
--- /dev/null
+++ b/spring-mvc-basics/src/main/resources/views.properties
@@ -0,0 +1,3 @@
+sample2.(class)=org.springframework.web.servlet.view.JstlView
+sample2.url=/WEB-INF/view2/sample2.jsp
+
diff --git a/spring-mvc-java/src/main/resources/views.xml b/spring-mvc-basics/src/main/resources/views.xml
similarity index 65%
rename from spring-mvc-java/src/main/resources/views.xml
rename to spring-mvc-basics/src/main/resources/views.xml
index 83bca5293d..a44d3deae4 100644
--- a/spring-mvc-java/src/main/resources/views.xml
+++ b/spring-mvc-basics/src/main/resources/views.xml
@@ -1,10 +1,10 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-mvc-basics/src/main/webapp/WEB-INF/view2/sample2.jsp b/spring-mvc-basics/src/main/webapp/WEB-INF/view2/sample2.jsp
new file mode 100644
index 0000000000..c826700a75
--- /dev/null
+++ b/spring-mvc-basics/src/main/webapp/WEB-INF/view2/sample2.jsp
@@ -0,0 +1,7 @@
+
+
+
+
+ This is the body of the sample2 view
+
+
\ No newline at end of file
diff --git a/spring-mvc-basics/src/main/webapp/WEB-INF/view3/sample3.jsp b/spring-mvc-basics/src/main/webapp/WEB-INF/view3/sample3.jsp
new file mode 100644
index 0000000000..b58a0973da
--- /dev/null
+++ b/spring-mvc-basics/src/main/webapp/WEB-INF/view3/sample3.jsp
@@ -0,0 +1,7 @@
+
+
+
+
+ This is the body of the sample3 view
+
+
\ No newline at end of file
diff --git a/spring-mvc-basics/src/test/java/com/baeldung/web/controller/SampleControllerLiveTest.java b/spring-mvc-basics/src/test/java/com/baeldung/web/controller/SampleControllerLiveTest.java
new file mode 100644
index 0000000000..bd24bb6ff9
--- /dev/null
+++ b/spring-mvc-basics/src/test/java/com/baeldung/web/controller/SampleControllerLiveTest.java
@@ -0,0 +1,33 @@
+package com.baeldung.web.controller;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.http.HttpStatus;
+
+import io.restassured.RestAssured;
+
+public class SampleControllerLiveTest {
+
+ private static final String SERVICE_BASE_URL = "/spring-mvc-basics";
+
+ @Test
+ public void whenSampleEndpointCalled_thenOkResponseObtained() throws Exception {
+ RestAssured.get(SERVICE_BASE_URL + "/sample")
+ .then()
+ .statusCode(HttpStatus.OK.value());
+ }
+
+ @Test
+ public void whenSample2EndpointCalled_thenOkResponseObtained() throws Exception {
+ RestAssured.get(SERVICE_BASE_URL + "/sample2")
+ .then()
+ .statusCode(HttpStatus.OK.value());
+ }
+
+ @Test
+ public void whenSample3EndpointCalled_thenOkResponseObtained() throws Exception {
+ RestAssured.get(SERVICE_BASE_URL + "/sample3")
+ .then()
+ .statusCode(HttpStatus.OK.value());
+ }
+
+}
diff --git a/spring-mvc-java/README.md b/spring-mvc-java/README.md
index 4d1a7c172c..c670b153cf 100644
--- a/spring-mvc-java/README.md
+++ b/spring-mvc-java/README.md
@@ -9,7 +9,6 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
- [Spring Bean Annotations](http://www.baeldung.com/spring-bean-annotations)
- [Introduction to Pointcut Expressions in Spring](http://www.baeldung.com/spring-aop-pointcut-tutorial)
- [Introduction to Advice Types in Spring](http://www.baeldung.com/spring-aop-advice-tutorial)
-- [A Guide to the ViewResolver in Spring MVC](http://www.baeldung.com/spring-mvc-view-resolver-tutorial)
- [Integration Testing in Spring](http://www.baeldung.com/integration-testing-in-spring)
- [A Quick Guide to Spring MVC Matrix Variables](http://www.baeldung.com/spring-mvc-matrix-variables)
- [Intro to WebSockets with Spring](http://www.baeldung.com/websockets-spring)
diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java
index 191d721dfb..96b50f2c37 100644
--- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java
+++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java
@@ -12,7 +12,6 @@ import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Description;
import org.springframework.context.support.ResourceBundleMessageSource;
-import org.springframework.core.io.ClassPathResource;
import org.springframework.http.MediaType;
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
@@ -26,8 +25,6 @@ import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
-import org.springframework.web.servlet.view.ResourceBundleViewResolver;
-import org.springframework.web.servlet.view.XmlViewResolver;
import org.springframework.web.util.UrlPathHelper;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
@@ -110,22 +107,6 @@ public class WebConfig implements WebMvcConfigurer {
return multipartResolver;
}
-
- @Bean
- public ViewResolver xmlViewResolver() {
- final XmlViewResolver bean = new XmlViewResolver();
- bean.setLocation(new ClassPathResource("views.xml"));
- bean.setOrder(1);
- return bean;
- }
-
- @Bean
- public ViewResolver resourceBundleViewResolver() {
- final ResourceBundleViewResolver bean = new ResourceBundleViewResolver();
- bean.setBasename("views");
- bean.setOrder(0);
- return bean;
- }
@Override
public void extendMessageConverters(final List> converters) {
diff --git a/spring-mvc-java/src/main/resources/views.properties b/spring-mvc-java/src/main/resources/views.properties
deleted file mode 100644
index 95687cb62a..0000000000
--- a/spring-mvc-java/src/main/resources/views.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-sample.(class)=org.springframework.web.servlet.view.JstlView
-sample.url=/WEB-INF/view/sample.jsp
-