1

导读:

在上篇文章中对Spring 核心容器等做了一个简单的介绍,希望可以帮助你对Spring 有一个简单的理解,这篇文章主要围绕Spring MVC 展开,在最短的时间内帮助你对Spring MVC有个简单的印象,在结尾附有学习资料。

Spring MVC:

什么是MVC?

MVC

MVC(Model,View,Controller)是一种设计思想,可以帮助我们更好的组织软件的结构。
这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。

  • 最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。

  • 最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。

  • 中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。
引之 阮一峰的《谈谈MVC模式》

了解更多(阅读其他):
MVC - 维基百科
如何理解Web应用程序的MVC模型? - 知乎
MVC,MVP 和 MVVM 的图示 - 阮一峰

它有哪些优点?

  • 提高我们的开发效率

  • Spring MVC作为Spring 自家的项目可以与Spring无缝结合

  • 相比于Struts2更加安全

  • 注解式声明,做到所见即所得

了解更多(阅读其他):
Spring mvc和SSH如何取舍?

快速上手:

以一个简单的UserController 为例演示对用户的CRUD操作:

@RestController
@RequestMapping("api/user")
public class UserController {

    @RequestMapping(method = RequestMethod.POST)
    public HttpResponse<String> save(User user) {
        return HttpResponse.OK;
    }

    @RequestMapping(value = "/{userId}", method = RequestMethod.DELETE)
    public HttpResponse<String> delete(@PathVariable Long userId) {
        return HttpResponse.OK;
    }

    @RequestMapping(value = "/userId", method = RequestMethod.PUT)
    public HttpResponse<String> update(@PathVariable("userId") User user, @RequestBody User news) {
        return HttpResponse.OK;
    }

    @RequestMapping(value = "/userId", method = RequestMethod.GET)
    public HttpResponse<User> get(@PathVariable("userId") User user) {
        return new HttpResponse<>(user);
    }

}

注解说明:

  • @RestController :它继承自@Controller注解。4.0之前的版本,Spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet,相比于 @Controller 一般常用于开发REST服务,用于返回json数据。

  • @RequestMapping :@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

    RequestMapping注解有六个属性,下面我们把她分成三类进行说明。
    1、 value, method;
    value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
    method:  指定请求的method类型, GET、POST、PUT、DELETE等;
    
    2、 consumes,produces;
    consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
    produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
    
    3、 params,headers;
    params: 指定request中必须包含某些参数值是,才让该方法处理。
    headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
  • @PathVariable :将路径值绑定在对象上 ,即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

  • @RequestBody 接收 浏览器传来的json对象转化为实体对象

学习资料收集:

官方资料:
Web MVC framework 4.2.4.RELEASE
Github上的翻译:
Spring MVC官方4.2.4.RELEASE版本的文档
国内博客:
史上最全最强SpringMVC详细示例实战教程
跟开涛学SpringMVC笔记
视频资料:
尚硅谷佟刚SpringMVC 4.X视频教程

结尾:

学习任何东西都是循循渐进的,这篇文章只是对Spring MVC 一些常用注解的使用,建议还是多看一些官方资料,或关注大牛的博客,从而帮助对它有更深的理解。

参考资料:

@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
@RequestMapping 用法详解之地址映射
Spring4.0系列3-@RestController


yangrd
1.3k 声望225 粉丝

代码改变世界,知行合一。