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 项目,结构如下 + +![1](springhw1.png) + +## 创建 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 + +``` +此时项目目录结构为 +![2](/springhw2.png) + +启动项目 +```bash +$ mvn tomcat7:run +``` +此时访问地址 `http://localhost:8080/hello` 出现如下效果即为成功 +![3](/springhw3.png) +![4](/springhw4.png) + +更多文章: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!

+ +