SpringMVC学习笔记:数据的接收与返回
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学习笔记:数据的接收与返回的更多相关文章
- springmvc学习笔记(18)-json数据交互
		
springmvc学习笔记(18)-json数据交互 标签: springmvc springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 加入json转换的依赖 ...
 - 史上最全的SpringMVC学习笔记
		
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
 - springmvc学习笔记(简介及使用)
		
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
 - SpringMVC学习笔记之二(SpringMVC高级参数绑定)
		
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
 - springMVC 学习笔记(一):springMVC 入门
		
springMVC 学习笔记(一):spring 入门 什么是 springMVC springMVC 是 spring 框架的一个模块,springMVC 和 spring 无需通过中间整合层进行整 ...
 - SpringMVC:学习笔记(8)——文件上传
		
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
 - springmvc学习笔记(常用注解)
		
springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...
 - springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
		
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
 - springmvc学习笔记(19)-RESTful支持
		
springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...
 - SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传
		
SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...
 
随机推荐
- jpa orderby
			
return criteriaQuery.where(in).orderBy(new OrderImpl(root.get("field1"))).getRestriction() ...
 - IDEA中配置JUnit单元测试
			
参考安装教程:https://www.jianshu.com/p/c37753b6dbd6 如果想用junit4的话,需要在pom.xml中配置. 需要安装JUnitGenerator V2.0插件, ...
 - 七 shelve模块
			
shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型 import shelve f=shelve.o ...
 - 树形DP(记忆化搜索) HYSBZ - 1509
			
题目链接:https://vjudge.net/problem/HYSBZ-1509 我参考的证明的论文:8.陈瑜希<多角度思考 创造性思维>_百度文库 https://wenku.ba ...
 - POJ-2251.DungeonMaster(三维BFS)
			
做题时需要注意,爬楼有向上和向下爬之分... 本题大意:输入 l, r, c, 分别代表地牢的楼层数和每层地牢的长和宽,地牢由rock and point and source and key组成,你 ...
 - Lua面试题目
			
1.Lua的特性 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里. 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提 ...
 - Mobile Game Development with Unity Build Once, Deploy Anywhere
			
本书从自上而下的角度介绍了Unity游戏引擎的功能,并提供了具体的.面向项目的指导,说明了如何在真实的游戏场景中使用这些功能,以及如何从头开始构建让玩家爱不释手的2D和3D游戏.主要内容有:探索Uni ...
 - java链接JDBC中的?问题
			
String sql = "select * from student where name= ?"; PreparedStatement pst = conn.prepareSt ...
 - mysql之 安装(Mac)
			
1.官网下载安装包:https://dev.mysql.com/downloads/mysql/ 2.设置环境变量:(1)首先mysql的安装位置为:/usr/local/mysql/bin (2)在 ...
 - hadoop fs 命令使用
			
参考:https://segmentfault.com/a/1190000002672666 命令基本格式: hadoop fs -cmd < args > 1.ls hadoop fs ...