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的增强简化版

package com.company.jelly.controller;

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; @Controller
public class ProductController { @GetMapping("/index")
public String add() {
return "/product/form";
} @PostMapping("/save")
public ResponseEntity<?> save() {
// do some
return ResponseEntity.ok("success");
}

与请求相关的注解

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

GET请求:

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

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

    @GetMapping("/form")
public String add(@RequestParam Integer id) {
return "/product/form";
} @GetMapping("/form/{id}")
public String keep(@PathVariable Integer id) {
return "/product/form";
}

POST请求:

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

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

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

    @PostMapping("/keep")
public ResponseEntity<?> keep(Product product){
// do some
return ResponseEntity.ok("success");
} @PostMapping("/save")
public ResponseEntity<?> save(@RequestBody Product product) {
// do some
return ResponseEntity.ok("success");
}

如果数据格式层次较为复杂,上面两种方式都可以满足需求,可以查看我的这篇博客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(重定向)

    @GetMapping("/form")
public String add(@RequestParam Integer id) {
return "/product/form";
} @PostMapping("/keep")
@ResponseBody
public String keep(Product product) {
// do some
return "success";
} @PostMapping("/save")
public ResponseEntity<?> save(@RequestBody Product product) {
// do some
return ResponseEntity.ok("success");
}

以上是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. jpa orderby

    return criteriaQuery.where(in).orderBy(new OrderImpl(root.get("field1"))).getRestriction() ...

  2. IDEA中配置JUnit单元测试

    参考安装教程:https://www.jianshu.com/p/c37753b6dbd6 如果想用junit4的话,需要在pom.xml中配置. 需要安装JUnitGenerator V2.0插件, ...

  3. 七 shelve模块

    shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型 import shelve f=shelve.o ...

  4. 树形DP(记忆化搜索) HYSBZ - 1509

    题目链接:https://vjudge.net/problem/HYSBZ-1509 我参考的证明的论文:8.陈瑜希<多角度思考 创造性思维>_百度文库  https://wenku.ba ...

  5. POJ-2251.DungeonMaster(三维BFS)

    做题时需要注意,爬楼有向上和向下爬之分... 本题大意:输入 l, r, c, 分别代表地牢的楼层数和每层地牢的长和宽,地牢由rock and point and source and key组成,你 ...

  6. Lua面试题目

    1.Lua的特性 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里. 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提 ...

  7. Mobile Game Development with Unity Build Once, Deploy Anywhere

    本书从自上而下的角度介绍了Unity游戏引擎的功能,并提供了具体的.面向项目的指导,说明了如何在真实的游戏场景中使用这些功能,以及如何从头开始构建让玩家爱不释手的2D和3D游戏.主要内容有:探索Uni ...

  8. java链接JDBC中的?问题

    String sql = "select * from student where name= ?"; PreparedStatement pst = conn.prepareSt ...

  9. mysql之 安装(Mac)

    1.官网下载安装包:https://dev.mysql.com/downloads/mysql/ 2.设置环境变量:(1)首先mysql的安装位置为:/usr/local/mysql/bin (2)在 ...

  10. hadoop fs 命令使用

    参考:https://segmentfault.com/a/1190000002672666 命令基本格式: hadoop fs -cmd < args > 1.ls hadoop fs ...