diff --git a/java/SpringMVC-HelloWorld/.gitignore b/java/SpringMVC-HelloWorld/.gitignore
new file mode 100644
index 0000000..e80f008
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/.gitignore
@@ -0,0 +1,24 @@
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+*.swp
+*.swo
diff --git a/java/SpringMVC-HelloWorld/LICENSE b/java/SpringMVC-HelloWorld/LICENSE
new file mode 100644
index 0000000..8c3c631
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 wxnacy
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/java/SpringMVC-HelloWorld/README.md b/java/SpringMVC-HelloWorld/README.md
new file mode 100644
index 0000000..3642d46
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/README.md
@@ -0,0 +1,187 @@
+# 使用 Maven 构建 SpringMVC :Hello World
+
+本文简单介绍如何使用 Maven 框架搭建并配置 StringMVC,完成输入 Hello World 的功能。
+
+看本文前最好了解 Maven 和 Spring 基本知识
+## Maven 创建 Web 项目
+```bash
+mvn archetype:generate -DgroupId=com.wxnacy.spring -DartifactId=SpringMVC-HelloWorld -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
+```
+首先使用上述命令创建一个空的 Web 项目,结构如下
+
+
+
+## 创建 Controller 和 View
+首先修改 `pom.xml` 文件,添加 SpringMVC 的依赖以及 Tomcat7 的插件
+```xml
+
+ 4.0.0
+ com.wxnacy.spring
+ SpringMVC-HelloWorld
+ war
+ 1.0-SNAPSHOT
+ SpringMVC-HelloWorld Maven Webapp
+ http://maven.apache.org
+
+ 4.0.1.RELEASE
+
+
+
+
+
+ org.springframework
+ spring-core
+ ${spring.version}
+
+
+
+ org.springframework
+ spring-web
+ ${spring.version}
+
+
+
+ org.springframework
+ spring-webmvc
+ ${spring.version}
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+ SpringMVC-HelloWorld
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+ 8080
+ /
+ UTF-8
+
+ tomcat7
+
+
+
+
+
+
+```
+接下来创建 Controller
+```bash
+$ mkdir -p src/main/java/com/wxnacy/spring/controller
+$ touch src/main/java/com/wxnacy/spring/controller/HelloWorldController.java
+```
+HelloWorldController.java
+```java
+package com.wxnacy.spring.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+
+@Controller
+public class HelloWorldController {
+
+ @RequestMapping("/hello")
+ public ModelAndView helloWorld(
+ @RequestParam(value = "name", required = false, defaultValue = "World") String name
+ ) {
+ ModelAndView mv = new ModelAndView("index");
+ mv.addObject("name", name);
+ return mv;
+ }
+}
+```
+使用注解 `@Controller` 来定义该类为控制器,`@RequestMapping` 映射访问地址 `/hello` 到 `helloWorld` 方法中,该方法接收一个参数,并返回 Model。
+
+最后创建 View
+```bash
+$ mkdir src/main/webapp/WEB-INF/views
+$ touch src/main/webapp/WEB-INF/views/index.jsp
+```
+index.jsp
+```html
+
+
+ Hello ${name}!
+
+
+```
+## 配置 SpringMVC
+原料齐全了,接下来需要将他们关联起来,首先在 xml 文件中配置项目启动时扫描的 Controller 和 View 的目录
+```bash
+$ touch src/main/resources/dispatcher.xml
+```
+dispatcher.xml
+```xml
+
+
+
+
+
+
+
+
+ /WEB-INF/views/
+
+
+ .jsp
+
+
+
+```
+然后在 web.xml 中设置 Servlet,用 `/` 地址映射刚才的配置文件。
+```xml
+
+
+
+ dispatcher
+ org.springframework.web.servlet.DispatcherServlet
+
+ contextConfigLocation
+ classpath:dispatcher.xml
+
+ 1
+
+
+ dispatcher
+ /
+
+
+ Archetype Created Web Application
+
+```
+此时项目目录结构为
+
+
+启动项目
+```bash
+$ mvn tomcat7:run
+```
+此时访问地址 `http://localhost:8080/hello` 出现如下效果即为成功
+
+
+
+更多文章:https://wxnacy.com/
diff --git a/java/SpringMVC-HelloWorld/pom.xml b/java/SpringMVC-HelloWorld/pom.xml
new file mode 100644
index 0000000..744c3b1
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/pom.xml
@@ -0,0 +1,59 @@
+
+ 4.0.0
+ com.wxnacy.spring
+ SpringMVC-HelloWorld
+ war
+ 1.0-SNAPSHOT
+ SpringMVC-HelloWorld Maven Webapp
+ http://maven.apache.org
+
+ 4.0.1.RELEASE
+
+
+
+
+
+ org.springframework
+ spring-core
+ ${spring.version}
+
+
+
+ org.springframework
+ spring-web
+ ${spring.version}
+
+
+
+ org.springframework
+ spring-webmvc
+ ${spring.version}
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
+ SpringMVC-HelloWorld
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+ 8080
+ /
+ UTF-8
+
+ tomcat7
+
+
+
+
+
+
diff --git a/java/SpringMVC-HelloWorld/springhw1.png b/java/SpringMVC-HelloWorld/springhw1.png
new file mode 100644
index 0000000..7a5ed33
Binary files /dev/null and b/java/SpringMVC-HelloWorld/springhw1.png differ
diff --git a/java/SpringMVC-HelloWorld/springhw2.png b/java/SpringMVC-HelloWorld/springhw2.png
new file mode 100644
index 0000000..5d86ecf
Binary files /dev/null and b/java/SpringMVC-HelloWorld/springhw2.png differ
diff --git a/java/SpringMVC-HelloWorld/springhw3.png b/java/SpringMVC-HelloWorld/springhw3.png
new file mode 100644
index 0000000..09db3b2
Binary files /dev/null and b/java/SpringMVC-HelloWorld/springhw3.png differ
diff --git a/java/SpringMVC-HelloWorld/springhw4.png b/java/SpringMVC-HelloWorld/springhw4.png
new file mode 100644
index 0000000..ecdbe71
Binary files /dev/null and b/java/SpringMVC-HelloWorld/springhw4.png differ
diff --git a/java/SpringMVC-HelloWorld/src/main/java/com/wxnacy/spring/controller/HelloWorldController.java b/java/SpringMVC-HelloWorld/src/main/java/com/wxnacy/spring/controller/HelloWorldController.java
new file mode 100644
index 0000000..423c8a0
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/src/main/java/com/wxnacy/spring/controller/HelloWorldController.java
@@ -0,0 +1,25 @@
+package com.wxnacy.spring.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Controller
+public class HelloWorldController {
+
+ @RequestMapping("/hello")
+ public ModelAndView showMessage(
+ @RequestParam(value = "name", required = false, defaultValue = "World") String name
+ ) {
+ ModelAndView mv = new ModelAndView("index");
+ mv.addObject("name", name);
+ return mv;
+
+ }
+
+}
diff --git a/java/SpringMVC-HelloWorld/src/main/resources/dispatcher.xml b/java/SpringMVC-HelloWorld/src/main/resources/dispatcher.xml
new file mode 100644
index 0000000..8201817
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/src/main/resources/dispatcher.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+ /WEB-INF/views/
+
+
+ .jsp
+
+
+
diff --git a/java/SpringMVC-HelloWorld/src/main/webapp/WEB-INF/views/index.jsp b/java/SpringMVC-HelloWorld/src/main/webapp/WEB-INF/views/index.jsp
new file mode 100644
index 0000000..607dd54
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/src/main/webapp/WEB-INF/views/index.jsp
@@ -0,0 +1,6 @@
+
+
+ Hello ${name}!
+
+
+
diff --git a/java/SpringMVC-HelloWorld/src/main/webapp/WEB-INF/web.xml b/java/SpringMVC-HelloWorld/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..5f2feb7
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,22 @@
+
+
+
+ dispatcher
+ org.springframework.web.servlet.DispatcherServlet
+
+ contextConfigLocation
+ classpath:dispatcher.xml
+
+ 1
+
+
+ dispatcher
+ /
+
+
+ Archetype Created Web Application
+
diff --git a/java/SpringMVC-HelloWorld/src/main/webapp/index.jsp b/java/SpringMVC-HelloWorld/src/main/webapp/index.jsp
new file mode 100644
index 0000000..c38169b
--- /dev/null
+++ b/java/SpringMVC-HelloWorld/src/main/webapp/index.jsp
@@ -0,0 +1,5 @@
+
+
+Hello World!
+
+