diff --git a/pom.xml b/pom.xml
index 15a9170672..fc1418b984 100644
--- a/pom.xml
+++ b/pom.xml
@@ -640,7 +640,6 @@
spring-data-rest-querydsl
spring-di
spring-di-2
- spring-dispatcher-servlet
spring-drools
spring-ejb
@@ -1128,7 +1127,6 @@
spring-data-rest
spring-data-rest-querydsl
spring-di
- spring-dispatcher-servlet
spring-drools
spring-ejb
diff --git a/spring-dispatcher-servlet/README.md b/spring-dispatcher-servlet/README.md
deleted file mode 100644
index 3027546152..0000000000
--- a/spring-dispatcher-servlet/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## Spring DispatcherServlet
-
-This module contains articles about Spring DispatcherServlet
-
-## Relevant articles:
-
-- [An Intro to the Spring DispatcherServlet](https://www.baeldung.com/spring-dispatcherservlet)
diff --git a/spring-dispatcher-servlet/pom.xml b/spring-dispatcher-servlet/pom.xml
deleted file mode 100644
index 21324e6757..0000000000
--- a/spring-dispatcher-servlet/pom.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
- 4.0.0
- spring-dispatcher-servlet
- 1.0.0
- spring-dispatcher-servlet
- war
-
-
- com.baeldung
- parent-spring-5
- 0.0.1-SNAPSHOT
- ../parent-spring-5
-
-
-
-
- org.springframework
- spring-web
- ${spring.version}
-
-
- org.springframework
- spring-webmvc
- ${spring.version}
-
-
- javax.servlet
- javax.servlet-api
- ${javax.servlet-api.version}
-
-
- javax.servlet.jsp.jstl
- jstl-api
- ${jstl-api.version}
-
-
- javax.servlet.jsp
- javax.servlet.jsp-api
- ${javax.servlet.jsp-api.version}
-
-
- javax.servlet
- jstl
- ${jstl.version}
-
-
- com.fasterxml.jackson.core
- jackson-databind
- ${jackson.version}
-
-
- commons-fileupload
- commons-fileupload
- ${commons-fileupload.version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- ${spring-boot-starter-test.version}
- test
-
-
-
-
- spring-dispatcher-servlet
-
-
-
- org.apache.tomcat.maven
- tomcat8-maven-plugin
- ${tomcat8-maven-plugin.version}
-
- /springdispatcherservlet
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- ${maven-war-plugin.version}
-
- src/main/webapp
- false
-
-
-
-
-
-
-
- 3.0-r1655215
-
-
-
\ No newline at end of file
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/configuration/AppConfig.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/configuration/AppConfig.java
deleted file mode 100644
index c8a6cf06a6..0000000000
--- a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/configuration/AppConfig.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.baeldung.springdispatcherservlet.configuration;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.ui.context.support.ResourceBundleThemeSource;
-import org.springframework.web.multipart.commons.CommonsMultipartResolver;
-import org.springframework.web.servlet.config.annotation.*;
-import org.springframework.web.servlet.resource.PathResourceResolver;
-import org.springframework.web.servlet.theme.CookieThemeResolver;
-import org.springframework.web.servlet.theme.ThemeChangeInterceptor;
-import org.springframework.web.servlet.view.JstlView;
-import org.springframework.web.servlet.view.UrlBasedViewResolver;
-
-import java.io.IOException;
-
-@Configuration
-@EnableWebMvc
-@ComponentScan("com.baeldung.springdispatcherservlet")
-public class AppConfig implements WebMvcConfigurer {
-
- public void addViewControllers(ViewControllerRegistry registry) {
- registry.addViewController("/").setViewName("index");
- }
-
- /** Multipart file uploading configuratioin */
- @Bean
- public CommonsMultipartResolver multipartResolver() throws IOException {
- CommonsMultipartResolver resolver = new CommonsMultipartResolver();
- resolver.setMaxUploadSize(10000000);
- return resolver;
- }
-
- /** View resolver for JSP */
- @Bean
- public UrlBasedViewResolver viewResolver() {
- UrlBasedViewResolver resolver = new UrlBasedViewResolver();
- resolver.setPrefix("/WEB-INF/jsp/");
- resolver.setSuffix(".jsp");
- resolver.setViewClass(JstlView.class);
- return resolver;
- }
-
- /** Static resource locations including themes*/
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/resources/**/*")
- .addResourceLocations("/", "/resources/")
- .setCachePeriod(3600)
- .resourceChain(true)
- .addResolver(new PathResourceResolver());
- }
-
- /** BEGIN theme configuration */
- @Bean
- public ResourceBundleThemeSource themeSource(){
- ResourceBundleThemeSource themeSource = new ResourceBundleThemeSource();
- themeSource.setDefaultEncoding("UTF-8");
- themeSource.setBasenamePrefix("themes.");
- return themeSource;
- }
-
- @Bean
- public CookieThemeResolver themeResolver(){
- CookieThemeResolver resolver = new CookieThemeResolver();
- resolver.setDefaultThemeName("default");
- resolver.setCookieName("example-theme-cookie");
- return resolver;
- }
-
- @Bean
- public ThemeChangeInterceptor themeChangeInterceptor(){
- ThemeChangeInterceptor interceptor = new ThemeChangeInterceptor();
- interceptor.setParamName("theme");
- return interceptor;
- }
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(themeChangeInterceptor());
- }
- /** END theme configuration */
-}
\ No newline at end of file
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/configuration/WebAppInitializer.java b/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/configuration/WebAppInitializer.java
deleted file mode 100644
index 0c6c7141a7..0000000000
--- a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/configuration/WebAppInitializer.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.baeldung.springdispatcherservlet.configuration;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-
-import org.springframework.web.WebApplicationInitializer;
-import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
-import org.springframework.web.servlet.DispatcherServlet;
-
-public class WebAppInitializer implements WebApplicationInitializer {
-
- @Override
- public void onStartup(ServletContext container) throws ServletException {
- AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
- context.register(AppConfig.class);
- context.setServletContext(container);
-
- ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(context));
- servlet.setLoadOnStartup(1);
- servlet.addMapping("/");
- }
-}
diff --git a/spring-dispatcher-servlet/src/main/resources/logback.xml b/spring-dispatcher-servlet/src/main/resources/logback.xml
deleted file mode 100644
index 7d900d8ea8..0000000000
--- a/spring-dispatcher-servlet/src/main/resources/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-dispatcher-servlet/src/main/webapp/WEB-INF/jsp/index.jsp
deleted file mode 100644
index c482eac361..0000000000
--- a/spring-dispatcher-servlet/src/main/webapp/WEB-INF/jsp/index.jsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
-<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
-
-
-
-
-
-
- Spring Dispatcher
-
-
-
- Hello World!
-
- Switch Theme!
- Switch Theme!
-
-
-
-
-
-
- ${message}
-
-
diff --git a/spring-dispatcher-servlet/src/main/webapp/resources/css/default.css b/spring-dispatcher-servlet/src/main/webapp/resources/css/default.css
deleted file mode 100644
index 7f20f36d96..0000000000
--- a/spring-dispatcher-servlet/src/main/webapp/resources/css/default.css
+++ /dev/null
@@ -1,4 +0,0 @@
-h2 {
- color: green;
- font-weight: 400;
-}
\ No newline at end of file
diff --git a/spring-dispatcher-servlet/src/main/webapp/resources/css/example.css b/spring-dispatcher-servlet/src/main/webapp/resources/css/example.css
deleted file mode 100644
index fe31b0396a..0000000000
--- a/spring-dispatcher-servlet/src/main/webapp/resources/css/example.css
+++ /dev/null
@@ -1,4 +0,0 @@
-h2 {
- color: red;
- font-weight: 700;
-}
\ No newline at end of file
diff --git a/spring-dispatcher-servlet/src/test/java/com/baeldung/SpringContextTest.java b/spring-dispatcher-servlet/src/test/java/com/baeldung/SpringContextTest.java
deleted file mode 100644
index ba8040f81d..0000000000
--- a/spring-dispatcher-servlet/src/test/java/com/baeldung/SpringContextTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.baeldung;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-import com.baeldung.springdispatcherservlet.configuration.AppConfig;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = AppConfig.class)
-@WebAppConfiguration
-public class SpringContextTest {
-
- @Test
- public void whenSpringContextIsBootstrapped_thenNoExceptions() {
- }
-}
diff --git a/spring-mvc-basics/README.md b/spring-mvc-basics/README.md
index cd36ffd94a..c1f8bbda70 100644
--- a/spring-mvc-basics/README.md
+++ b/spring-mvc-basics/README.md
@@ -8,6 +8,7 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring
### Relevant Articles:
- [Spring MVC Tutorial](https://www.baeldung.com/spring-mvc-tutorial)
+- [An Intro to the Spring DispatcherServlet] (https://www.baeldung.com/spring-dispatcherservlet)
- [The Spring @Controller and @RestController Annotations](https://www.baeldung.com/spring-controller-vs-restcontroller)
- [A Guide to the ViewResolver in Spring MVC](https://www.baeldung.com/spring-mvc-view-resolver-tutorial)
- [Guide to Spring Handler Mappings](https://www.baeldung.com/spring-handler-mappings)
diff --git a/spring-mvc-basics/pom.xml b/spring-mvc-basics/pom.xml
index d212bc425a..cd486cb1d3 100644
--- a/spring-mvc-basics/pom.xml
+++ b/spring-mvc-basics/pom.xml
@@ -24,6 +24,11 @@
org.springframework.boot
spring-boot-starter-validation
+
+ commons-fileupload
+ commons-fileupload
+ ${commons-fileupload.version}
+
org.apache.tomcat.embed
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/domain/User.java b/spring-mvc-basics/src/main/java/com/baeldung/model/User.java
similarity index 93%
rename from spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/domain/User.java
rename to spring-mvc-basics/src/main/java/com/baeldung/model/User.java
index 6e8cde50db..3265bcc93a 100644
--- a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/domain/User.java
+++ b/spring-mvc-basics/src/main/java/com/baeldung/model/User.java
@@ -1,4 +1,4 @@
-package com.baeldung.springdispatcherservlet.domain;
+package com.baeldung.model;
public class User {
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/services/UserService.java b/spring-mvc-basics/src/main/java/com/baeldung/services/UserService.java
similarity index 72%
rename from spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/services/UserService.java
rename to spring-mvc-basics/src/main/java/com/baeldung/services/UserService.java
index 1b9bdd4a71..4a70701903 100644
--- a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/services/UserService.java
+++ b/spring-mvc-basics/src/main/java/com/baeldung/services/UserService.java
@@ -1,8 +1,8 @@
-package com.baeldung.springdispatcherservlet.services;
+package com.baeldung.services;
import org.springframework.stereotype.Service;
-import com.baeldung.springdispatcherservlet.domain.User;
+import com.baeldung.model.User;
@Service
public class UserService {
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 9a321f65a2..ac917018b0 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
@@ -1,13 +1,22 @@
package com.baeldung.spring.web.config;
+import java.io.IOException;
+
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.MediaType;
+import org.springframework.ui.context.support.ResourceBundleThemeSource;
+import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.resource.PathResourceResolver;
+import org.springframework.web.servlet.theme.CookieThemeResolver;
+import org.springframework.web.servlet.theme.ThemeChangeInterceptor;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.ResourceBundleViewResolver;
@@ -24,6 +33,14 @@ public class WebConfig implements WebMvcConfigurer {
.setViewName("index");
}
+ /** Multipart file uploading configuratioin */
+ @Bean
+ public CommonsMultipartResolver multipartResolver() throws IOException {
+ CommonsMultipartResolver resolver = new CommonsMultipartResolver();
+ resolver.setMaxUploadSize(10000000);
+ return resolver;
+ }
+
@Bean
public ViewResolver viewResolver() {
final InternalResourceViewResolver bean = new InternalResourceViewResolver();
@@ -34,6 +51,47 @@ public class WebConfig implements WebMvcConfigurer {
return bean;
}
+ /** Static resource locations including themes*/
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/resources/**/*")
+ .addResourceLocations("/", "/resources/")
+ .setCachePeriod(3600)
+ .resourceChain(true)
+ .addResolver(new PathResourceResolver());
+ }
+
+ /** BEGIN theme configuration */
+ @Bean
+ public ResourceBundleThemeSource themeSource() {
+ ResourceBundleThemeSource themeSource = new ResourceBundleThemeSource();
+ themeSource.setDefaultEncoding("UTF-8");
+ themeSource.setBasenamePrefix("themes.");
+ return themeSource;
+ }
+
+ @Bean
+ public CookieThemeResolver themeResolver() {
+ CookieThemeResolver resolver = new CookieThemeResolver();
+ resolver.setDefaultThemeName("default");
+ resolver.setCookieName("example-theme-cookie");
+ return resolver;
+ }
+
+ @Bean
+ public ThemeChangeInterceptor themeChangeInterceptor() {
+ ThemeChangeInterceptor interceptor = new ThemeChangeInterceptor();
+ interceptor.setParamName("theme");
+ return interceptor;
+ }
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(themeChangeInterceptor());
+ }
+
+ /** END theme configuration */
+
@Bean
public ViewResolver resourceBundleViewResolver() {
final ResourceBundleViewResolver bean = new ResourceBundleViewResolver();
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/MultipartController.java b/spring-mvc-basics/src/main/java/com/baeldung/web/controller/MultipartController.java
similarity index 96%
rename from spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/MultipartController.java
rename to spring-mvc-basics/src/main/java/com/baeldung/web/controller/MultipartController.java
index a693bf039f..2255ba780c 100644
--- a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/MultipartController.java
+++ b/spring-mvc-basics/src/main/java/com/baeldung/web/controller/MultipartController.java
@@ -1,4 +1,4 @@
-package com.baeldung.springdispatcherservlet.controller;
+package com.baeldung.web.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/UserController.java b/spring-mvc-basics/src/main/java/com/baeldung/web/controller/UserController.java
similarity index 83%
rename from spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/UserController.java
rename to spring-mvc-basics/src/main/java/com/baeldung/web/controller/UserController.java
index 16e6f293ec..9e39c961a1 100644
--- a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/UserController.java
+++ b/spring-mvc-basics/src/main/java/com/baeldung/web/controller/UserController.java
@@ -1,7 +1,8 @@
-package com.baeldung.springdispatcherservlet.controller;
+package com.baeldung.web.controller;
+
+import com.baeldung.model.User;
+import com.baeldung.services.UserService;
-import com.baeldung.springdispatcherservlet.domain.User;
-import com.baeldung.springdispatcherservlet.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/UserRestController.java b/spring-mvc-basics/src/main/java/com/baeldung/web/controller/UserRestController.java
similarity index 82%
rename from spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/UserRestController.java
rename to spring-mvc-basics/src/main/java/com/baeldung/web/controller/UserRestController.java
index 9052662f17..7d13c53ba1 100644
--- a/spring-dispatcher-servlet/src/main/java/com/baeldung/springdispatcherservlet/controller/UserRestController.java
+++ b/spring-mvc-basics/src/main/java/com/baeldung/web/controller/UserRestController.java
@@ -1,7 +1,8 @@
-package com.baeldung.springdispatcherservlet.controller;
+package com.baeldung.web.controller;
+
+import com.baeldung.model.User;
+import com.baeldung.services.UserService;
-import com.baeldung.springdispatcherservlet.domain.User;
-import com.baeldung.springdispatcherservlet.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
diff --git a/spring-dispatcher-servlet/src/main/resources/themes/default.properties b/spring-mvc-basics/src/main/resources/themes/default.properties
similarity index 100%
rename from spring-dispatcher-servlet/src/main/resources/themes/default.properties
rename to spring-mvc-basics/src/main/resources/themes/default.properties
diff --git a/spring-dispatcher-servlet/src/main/resources/themes/example.properties b/spring-mvc-basics/src/main/resources/themes/example.properties
similarity index 100%
rename from spring-dispatcher-servlet/src/main/resources/themes/example.properties
rename to spring-mvc-basics/src/main/resources/themes/example.properties