因为有 Spring 的依赖注入,所以实现 SpringMVC 的 Demo 非常简单。
一: 构建
这里使用 Maven 构建,以下是 pom 文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.free.springmvc</groupId>
<artifactId>lesson1</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>lesson1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!-- spring版本号 -->
<spring.version>4.3.9.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring 核心包 -->
<!-- springframe start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- springframe end -->
</dependencies>
<build>
<finalName>lesson1</finalName>
</build>
</project>
二: 配置 SpringMVC
1. web.xml 的配置
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
以上是 web.xml 的最基本配置,只实现了 SpringMVC 的功能。
里面名为springMVC
的 Servlet ,也就是 DispatcherServlet ,它是SpringMVC 的核心,接下来的 <servlet-mapping>
中的 <url-pattern>/</url-pattern>
表示所有的请求都交给 DispatcherServlet 来处理,中间的 <init-param>
标签,表示要装入的 Spring 配置文件。
2. spring-mvc.xml 的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.free.springmvc"/>
<mvc:annotation-driven/>
</beans>
这个 xml 只有两个标签,第一个标签 <context:component-scan base-package="com.free.springmvc"/>
的意思是告诉 Spring 容器需要扫描哪个包下的 bean,以下是我的包结构:
因为这里只讲解 SpringMVC 的知识,所以只建了一个 Controller 包。
第二个标签 <mvc:annotation-driven/>
是告诉 Spring ,需要开启注解,即 @Controller
@RestController
等等。
以上的配置,就完成了 SpringMVC 的最基本配置,接下来就可以编写控制器来测试一下 SpringMVC 的 HelloWorld 。
三: 编写控制器
我们在 controller
包下新建一个 Java 类文件。
这里的 @RestController
以及 @RequestMapping
详细内容将在以后的章节讲述,这里简单说明。
1. @RestController
表示 HelloController 将被注入到 Spring 容器中,并且会将该类中的方法中的返回值以数据的形式(可以是:字符串、 JSON、 XML、 HTML等)返回给客户端。
2. @RequestMapping
SpringMVC 接受到请求之后,会对请求进行解析,然后决定交给哪一个控制器的哪一个方法来处理,@RequestMapping
所标注的方法,就是用来处理对应请求的。也就是,当客户端发送一个名为 hello
的请求,那么 SpringMVC 将会以字符串的形式返回 hello SpringMVC
这样的字符串数据给客户端。
四: 最终效果
源代码已经上传到码云
https://git.oschina.net/aimufree/springmvc_lessons.git
主页
http://git.oschina.net/aimufree/springmvc_lessons