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,如果不需要那么多种语言的,可 ...
随机推荐
- metasploit framework(八):snmp扫描,暴力破解
snmp扫描linux 设置相关参数,这里使用的默认字典,你可以自己制定字典. run 然后使用枚举模块 设置相关参数 run,详细的信息就枚举出来了 snmp扫描windows 先枚举用户 设置目标 ...
- angularjs 粘贴事件
参考 http://www.jb51.net/article/89708.htm ng-paste 需要setTimeout,否则无法获取到数据
- Android Studio生成签名安装包(Generate Signed APK)
一 打开构建对话框. 二 创建新的密钥库(key store) 可以选择已创建的密钥库,也可以选择创建新的密钥库. 创建完成后,自动导入. 三 选择签名类型. 如果不选,会提示错误. 这里将新旧两种签 ...
- UVa 548 Tree(二叉树最短路径)
You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...
- [leetcode]791. Custom Sort String自定义排序字符串
S and T are strings composed of lowercase letters. In S, no letter occurs more than once. S was sort ...
- 设置导航栏和TabBar标题的文字格式
//TabBar样式 [navi.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSiz ...
- saltstack 迭代项目到客户端并结合jenkins自动发布多台服务器
前面已经讲解了Webhook实现Push代码后的jenkins自动构建,接下来通过结合slatstack 实现多台机器的项目代码发布. 利用saltstack中file.recurse方法,运用该模块 ...
- __block的初步用法
再block中使用 self 时,要在前面加上__block. 防止在block中用到self时把self对象retain, 造成内存泄露. __block UIViewController *saf ...
- go语言log包的学习(log,Logger)
package main; import ( "log" "os" "time" "fmt" ) func main() ...
- go语言中结构struct
package main; import "fmt" //结构struct //定义Person结构 type Person struct { name string; age i ...