【framework】spring3-mvc实例-信息转换
前言
这次主要讲讲 消息转换:一次请求,从请求页面--后台数据处理--返回响应内容.
主要涉及以下几个部分
请求Content-Type:
1. text/plain 2. application/json 3. application/xml 4. application/x-www-form-urlencoded |
请求正文:(都可以理解为string)
1. 普通string 2. json格式 3. xml格式 |
Controller接收
1. String 2. Bean |
响应Content-Type:
1. text/plain 2. application/x-www-form-urlencoded 3. application/application+xml |
相关流程和转换原理,单独开一篇博文写.
具体实例
我们讲解的项目是spring-mvc-showcase,如果你有疑问可以参考spring3-mvc的开篇。
该java文件
在包(pkg): org.springframework.samples.mvc.messageconverters
类名为: MessageConvertersController
我抽取部分代码进行讲解
1. 最简单的string请求和响应
第一部分:java代码
- @RequestMapping(value="/string", method=RequestMethod.POST)
- public @ResponseBody String readString(@RequestBody String string) {
- return "Read string '" + string + "'";
- }
这个方法需要注意的展开讲一下,其他大同小异
第二部分:jsp页面
html
- <form id="readString" class="textForm" action="<c:url value="/messageconverters/string" />" method="post">
- <input id="readStringSubmit" type="submit" value="Read a String" />
- </form>
js(在js中,对submit时间做了重写)
- $("form.textForm").submit(function(event) {
- var form = $(this);
- var button = form.children(":first");
- $.ajax({ type: "POST", url: form.attr("action"), data: "foo", contentType: "text/plain", dataType: "text", success: function(text) { MvcUtil.showSucce***esponse(text, button); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, button); }});
- return false;
- });
- 注意:js用到了jquery,所以语法,并且在jsp中做了一定的封装如MvcUtil。
第三部分: 通过jsp发起请求,查看请求信息
请求正文:
由于注解@RequestBody 存在,String直接被获取,返回值应为Read string 'foo'(上一篇文章我们讲过@ResponseBody )
第四部分: 效果图
2. 从请求中数据,转换成bean,作为参数传入,再以bean作为返回值
- @RequestMapping(value="/form", method=RequestMethod.POST)
- public @ResponseBody String readForm(@ModelAttribute JavaBean bean) {
- return "Read x-www-form-urlencoded: " + bean;
- }
3. map作为返回值
- @RequestMapping(value="/form", method=RequestMethod.GET)
- public @ResponseBody MultiValueMap<String, String> writeForm() {
- MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
- map.add("foo", "bar");
- map.add("fruit", "apple");
- return map;
- }
- //注意:返回类型MultiValueMap
4. 响应一个bean
- @RequestMapping(value="/xml", method=RequestMethod.GET)
- public @ResponseBody JavaBean writeXml() {
- return new JavaBean("bar", "fruit");
- }
- //注意:返回类型JavaBean
几个注解
1. @RequestBody
表示method的参数能够从HTTP请求的body中取得值
2. @ModelAttribute
(我给这个注解加了个红色,就是说,这个注解有点复杂,但别有压力)
@ModelAttribute可以用于方法或者方法参数
2.1 @ModelAttribute用于方法(method)
一个@ModelAttribute用于方法之上表示这个方法增加一个或者多个model属性,这些方法支持同样的参数类型,但不能直接映射到请求上。所有的@ModelAttribute方法在@RequestMapping的方法之前被调用
2.2 @ModelAttribute用于method参数
表示这个参数能够从model中检索出来,如果不存在与model里,这个参数首次实例化并且加入到model中。一旦存在于model中,这个参数字段会被填充,名字与绑定的请求参数中对应。例如本例中可能Bean有字段foo,则能够填充model
3. @Valid
@Valid注解不是spring的注解,所以需要加入如下配置:
- <mvc:annotation-driven/>
@Valid要求 必须符合输入要求,否则就提示400错误
小结
这次简单的阐述了一下请求格式与响应格式。包括string,bean,map.json,xml等多种方式,同时对一些注解做了简单介绍,但基本对理解本文核心内容能有一定帮助。
具体参考spring官方文档,或者关注本博客后面内容。
转载于:https://blog.51cto.com/yjplxq/978957
【framework】spring3-mvc实例-信息转换相关推荐
- spring3-mvc实例-信息转换
http://yjplxq.blog.51cto.com/4081353/978957 转载于:https://www.cnblogs.com/passer1991/p/3282837.html
- Spring3 MVC
一.前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了.Spring3 MVC结构简单,应了那句话简单就是美,而 ...
- Spring MVC(10):REST 支持 Ajax+Spring MVC 实例
Spring 对于 REST 的支持 REST REST(Respresentational State Transfer) 是一种面向资源,强调描述应用程序远程调用的开发方式,并不特指某种技术和框架 ...
- Spring3 MVC+Spring+Spring Jdbc实现的权限管理系统,可以控制到增删改查
前端框架: Jquery1.6+easyui1.3.1+zTree3.4 后端Java框架:Spring3 MVC+Spring+Spring Jdbc三层架构,大量采用注解 Dao层:通过对Spri ...
- Struts2和Spring3 MVC的区别说明
项目刚刚换了web层框架,放弃了struts2改用spring3mvc 当初还框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢 不用不知道 一用就发现 ...
- 通过shell脚本抽取MySQL实例信息
这是学习笔记的第 1727 篇文章 先来为自己吹的牛来打脸,昨天计划今天要做15件看起来复杂的事情, 不过值得一提的是,加上今天临时加的蛮有意义的事情,勉强还可以添上2~3件,这样差不多是有9~10件 ...
- 信息转换原理: 信息、知识、智能的一体化理论
来源:人机与认知实验室 [数据.信息.知识.智能除了转换外,是否还有变异.弥聚等?能否把这些变化看成是态.势.感.知结构扭曲而产生的必然现象?] 摘要 如何把信息转换为解决问题所需要的智能,是信息科学 ...
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...
- Spring3 MVC Login Interceptor(Spring 拦截器)
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
最新文章
- 全面理解Javascript闭包和闭包的几种写法及用途--转载自https://www.cnblogs.com/yunfeifei/p/4019504.html...
- Containerpilot 配置文件reload
- eclipse查看git地址_Git大文件管理:函数计算和OSS支持的Git LFS服务器
- java svnkit_java svnkit实现svn提交,更新等操作
- how is Java Bean object created
- 前端学习(1987)vue之电商管理系统电商系统之通过路由加载商品列表
- 机器学习笔记十一之降维
- 跨浏览器共享数据_可以让跨域要数据的模式:jsonp
- 【Vue】—插槽的基本语法
- 《信号与系统学习笔记》—信号与系统的时域和频域特性(二)
- 模拟电路——晶体管基础
- 僵尸粉检测 php,微信新功能,一键检测你的手机卡不卡,还能查僵尸粉
- android9应用icon尺寸,APP-icon尺寸
- 办公室计算机收不到主机打印机,图文详解电脑怎么连接办公室打印机 一招教你搞定!...
- python 文件另存为快捷键_pycharm快捷键
- python去除图片背景(透明色)
- 【课程设计|C++】设计一个哈夫曼编码器/译码器设计
- MapReduce入门(一)—— MapReduce概述 + WordCount案例实操
- FI---SAP汇率损益处理方法
- 【软考网络管理员】2023年软考网管初级常见知识考点(1)- 计算机硬件基础
热门文章
- XE3随笔6:SuperObject 的 JSON 对象中还可以包含 方法
- CKfinder2.0.2版本破解
- c#_StringBuilder的用法总结
- linux查看cpu个数命令,Linux怎么查看物理CPU个数
- python抓取简单网页_【Python3 爬虫】01_简单页面抓取
- 计算机仿真和vr的区别,AR对比VR有何不同?你能分清楚他们的区别么
- 阻止路由跳转得方式_vue路由拦截及页面跳转的设置方法
- c语言对10求余不为7,【PTA | 基础编程题目集】7-12 两个数的简单计算器 (10分)
- html中open打开新网页,JavaScript-打开新窗口(window.open)
- java 数组 反射_java数组的反射