SpringMVC的定义:Spring Web MVC is the original web framework built on the Servlet API and included in the Spring Framework from the very beginning.

在Spring中使用SpringMVC需要进行一系列的配置,如果用SpringBoot可以省去这些配置,本文主要总结SpringMVC中常用注解

必要注解

首先是@Controller,此注解加在类名上面,表示此类是一个有Spring管理的bean,同是也是springmvc中处理用户请求的组件之一。注解@RestController除了有@Controller的作用,还可以将此类下所有的成员方法的返回值的结果转换成json格式

注解@RequestMapping用来处理请求地址映射,其中的value值对应用户请求的地址,method值对应请求的方式(GET POST PUT DELETE. ...)

注解@GetMapping和@PostMapping分别对应处理get请求和post请求,算是@RequestMapping的增强简化版

  1. package com.company.jelly.controller;
  2.  
  3. import org.springframework.http.ResponseEntity;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.PostMapping;
  7.  
  8. @Controller
  9. public class ProductController {
  10.  
  11. @GetMapping("/index")
  12. public String add() {
  13. return "/product/form";
  14. }
  15.  
  16. @PostMapping("/save")
  17. public ResponseEntity<?> save() {
  18. // do some
  19. return ResponseEntity.ok("success");
  20. }

与请求相关的注解

在发送请求时一般会传递数据,get请求和post请求接收参数的方式不同

GET请求:

  接收拼接在url后面的参数用@RequestParam,一般url格式是 http:www.hello.com/form?id=12,这其中的id就是参数

  接收镶嵌在url中的参数用@PathVariable,一般url格式是 http:www.hello.com/form/12,其中的12是参数

  1. @GetMapping("/form")
  2. public String add(@RequestParam Integer id) {
  3. return "/product/form";
  4. }
  5.  
  6. @GetMapping("/form/{id}")
  7. public String keep(@PathVariable Integer id) {
  8. return "/product/form";
  9. }

POST请求:

  post请求提交数据的方式有很多种(准确来说是几种格式,四种),可参考这篇博客(https://imququ.com/post/four-ways-to-post-data-in-http.html),最常见的是:浏览器原生form表单提交 和 json格式提交

  原生form表单提交,只需要在对应的方法参数中与接收到的数据(key-value格式)对应好key值就可以

  json格式提交,需要在方法参数中加上注解@RequestBody

  1. @PostMapping("/keep")
  2. public ResponseEntity<?> keep(Product product){
  3. // do some
  4. return ResponseEntity.ok("success");
  5. }
  6.  
  7. @PostMapping("/save")
  8. public ResponseEntity<?> save(@RequestBody Product product) {
  9. // do some
  10. return ResponseEntity.ok("success");
  11. }

如果数据格式层次较为复杂,上面两种方式都可以满足需求,可以查看我的这篇博客https://www.cnblogs.com/colin220/p/9532004.html。图片上传也另外写文章说明。一般来说,图片或者文件上传都是通过ajax异步上传到对应的文件服务器,然后返回图片或者文件的url,最后表单提交的不是图片本身而是图片的url

与响应相关的注解

SpringMVC默认返回视图(view),此时controller类中方法返回字符串,此字符串会被解析为对应路径下的视图文件,以前常用jsp,后面常用的模版引擎有FreeMarker(模版文件后缀为ftl)Thymeleaf(模版文件后缀为html)

后来流行前后端分离,后端只需要返回json数据,如果需要返回json数据,可以在controller中的方法上面加上@ResponseBody 或者 返回值为ResponseEntity

SpringMVC如果要 请求转发  重定向,只需要在controller的方法返回值的加上 forward(请求转发)  redirect(重定向)

  1. @GetMapping("/form")
  2. public String add(@RequestParam Integer id) {
  3. return "/product/form";
  4. }
  5.  
  6. @PostMapping("/keep")
  7. @ResponseBody
  8. public String keep(Product product) {
  9. // do some
  10. return "success";
  11. }
  12.  
  13. @PostMapping("/save")
  14. public ResponseEntity<?> save(@RequestBody Product product) {
  15. // do some
  16. return ResponseEntity.ok("success");
  17. }

以上是SpringMVC基础用法,还有拦截器、过滤器等后面写文章补充

SpringMVC学习笔记:数据的接收与返回的更多相关文章

  1. springmvc学习笔记(18)-json数据交互

    springmvc学习笔记(18)-json数据交互 标签: springmvc springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 加入json转换的依赖 ...

  2. 史上最全的SpringMVC学习笔记

    SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...

  3. springmvc学习笔记(简介及使用)

    springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...

  4. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  5. springMVC 学习笔记(一):springMVC 入门

    springMVC 学习笔记(一):spring 入门 什么是 springMVC springMVC 是 spring 框架的一个模块,springMVC 和 spring 无需通过中间整合层进行整 ...

  6. SpringMVC:学习笔记(8)——文件上传

    SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...

  7. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

  8. springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...

  9. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  10. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

随机推荐

  1. 第二章 向量(d5)有序向量:插值查找

  2. 二维背包 hdu2159

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 题目里面有两个限制条件,忍耐度和杀怪数量,所以可以用一个二维数组dp[i][j]来表示在消耗忍耐 ...

  3. python读写文件中read()、readline()和readlines()的用法

    python中有三种读取文件的函数: read() readline() readlines() 然而它们的区别是什么呢,在平时用到时总会遇到,今天总结一下. 0. 前期工作 首先新建一个文件read ...

  4. Karma - MVC Framework for Unity3D

    Karma is an MVC framework for Unity3D. Because of how Unity is structured, it actually turns out to ...

  5. vue的双向数据绑定实现原理

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希望 ...

  6. Xcode9 打包ipa(导出ipa测试包)时总是意外退出

    今天用xcode9,打包ipa总是意外退出. 正处在测试阶段,所以打的也是测试包 ,路径是:Product -> Archive -> Export -> Save for Ad H ...

  7. 浅谈Session与Cookie的区别与联系

    一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...

  8. tar.gz和.rpm包的区别与使用(转)

    一.Linux软件的二进制分发 Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容易,缺点则是缺乏灵活性,如果该软件包是为特定的硬件/操作系统平台编译的,那它 ...

  9. 关于MYSQL字符集问题(二)

    1.查看默认字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1) 通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令: mysql> SHOW VARIABLE ...

  10. 通过docker-compose构建ghost博客(二)

    上一篇通过yml文件构建 ghost博客,这次通过构建nginx服务,并添加反向代理来运行搭建的ghost博客. 目录结构 ghost.conf 就是 定义的nginx 加载的配置文件 server ...