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,如果不需要那么多种语言的,可 ...
随机推荐
- 【Scheme】树结构
将表作为序列的表示方式,可以推广到元素本身也是序列的序列.例如,我们可以认为对象((1 2) 3 4)是通过(cons (list 1 2) (list 3 4))构造出来的. 这个表包含三个项,其中 ...
- oracle存储过程与存储函数的区别和联系
相同点:1.创建语法结构相似,都可以携带多个传入参数和传出参数. 2.都是一次编译,多次执行. 不同点:1.存储过程定义关键字用procedure,函数定义用function. 2.存储过程 ...
- MVC中html编码与否
MVCHtmlString可以不进行编码. 例子:string s=‘<a style="color:red">链接</a>’: 1.@s,直接输出< ...
- 二叉搜索树的后序遍历序列(python)
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. # -*- coding:utf-8 -*- cl ...
- 枚举+最短路 poj1062
这里有个非常坑的地方,还有比酋长地位还更高的人,我也是看了论坛才知道... 在这里我把编号1看成终点,优惠价格看成相应的替代品编号到可替代品编号的权值,比如说有了2再加8000就到了1,那么2到1的弧 ...
- css设置input不显示光标
把光标颜色设置为透明色和父类一样就看不出来了,就好像取消了 caret-color: transparent; 设置了这个属性后,无论如何点击都好像没有光标似的
- 100-days: Five
Title: Feel better now ? The rise and rise of the anxiety economy(焦虑经济) rise and rise 一直上升 anxiety n ...
- nodejs异步读数据库
以下代码不完美,但讲明了使用方法. 回调: function selectUser(callback) { var sql = "SELECT * FROM user"; conn ...
- Json、JavaBean、String等互转
Json.JavaBean.String等互转 本文介绍简单的Json.JavaBean.String互换(下文JavaBean简称Object对象,这里不是很严谨) 转换关系如下: 其中String ...
- 项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框
JSP mysql SpringMvc下中国省市县三级联动下拉框 关键词 JSP mysql数据库 SpringMvc ajax Controller层 Service层 中国地区 省 ...