什么是Spring MVC?
Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称( spring-webmvc ),但它通常被称为“Spring MVC”。
手写Spring MVC(一)
创建项目
创建父工程 [ 选择9号模板 :site-simple],命名为shop(以商城为例子)
创建子工程 [ 选择10号模板:webapp],命名为shop-web
创建子工程 [ 选择7号模板:quickstart],命名为shop-mvc
依赖准备
servlet-api
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
编译插件
<build>
<finalName>shop_web</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (maybe moved to parent pom) -->
<plugins>
<!--这个插件就是java类生成class的编译插件-->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<!--编译参数-->
<compilerArgument>-parameters</compilerArgument>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
创建文件
-
在shop-web工程下创建以下目录
-
在mvc工程下创建以下目录
文件详解
mvc工程
-
cn.cnmd.shop.mvc.annotation:主要是注解,包括控制器、路由映射、配置
- cn.cnmd.shop.mvc.annotation.Controller
package cn.cnmd.shop.mvc.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface Controller { }
- cn.cnmd.shop.mvc.annotation.RequestMapping
package cn.cnmd.shop.mvc.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface RequestMapping { String value(); }
- cn.cnmd.shop.mvc.annotation.Configuration
package cn.cnmd.shop.mvc.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Configuration { String value(); }
-
cn.cnmd.shop.mvc.canstant:包含了常见的错误码和错误信息
-
cn.cnmd.shop.mvc.canstant.ResponseCodeInterface
package cn.cnmd.shop.mvc.constant; public interface ResponseCodeInterface { int getCode(); String getMessage(); void setCode(int code); void setMessage(String message); }
-
cn.cnmd.shop.mvc.canstant.ResponseCode
package cn.cnmd.shop.mvc.constant; public enum
-