【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代码

 
 
  1. @RequestMapping(value="/string"method=RequestMethod.POST)   
  2.     public @ResponseBody String readString(@RequestBody String string) {   
  3.         return "Read string '" + string + "'";   
  4.     }  

这个方法需要注意的展开讲一下,其他大同小异

第二部分:jsp页面

html

 
 
  1. <form id="readString" class="textForm" action="<c:url value="/messageconverters/string" />method="post">   
  2.       <input id="readStringSubmit" type="submit" value="Read a String" />   
  3. </form> 

js(在js中,对submit时间做了重写)

 
 
  1. $("form.textForm").submit(function(event) {   
  2.         var form = $(this);   
  3.         var button = form.children(":first");   
  4.         $.ajax({ type: "POST", url: form.attr("action"), data: "foo", contentType: "text/plain", dataType: "text", success: function(text) { MvcUtil.showSuccessResponse(text, button); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, button); }});   
  5.         return false;   
  6.     });  
  7. 注意:js用到了jquery,所以语法,并且在jsp中做了一定的封装如MvcUtil。

第三部分: 通过jsp发起请求,查看请求信息

Magical Snap - 2012.08.31 23.09 - 001

请求正文:

Magical Snap - 2012.08.31 23.14 - 004

由于注解@RequestBody 存在,String直接被获取,返回值应为Read string 'foo'(上一篇文章我们讲过@ResponseBody )

第四部分: 效果图

Magical Snap - 2012.08.31 23.13 - 003

 2. 从请求中数据,转换成bean,作为参数传入,再以bean作为返回值

 
 
  1. @RequestMapping(value="/form"method=RequestMethod.POST)   
  2.     public @ResponseBody String readForm(@ModelAttribute JavaBean bean) {   
  3.         return "Read x-www-form-urlencoded: " + bean;   
  4.     } 

3. map作为返回值

 
 
  1. @RequestMapping(value="/form"method=RequestMethod.GET)   
  2.     public @ResponseBody MultiValueMap<String, String> writeForm() {   
  3.         MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();   
  4.         map.add("foo", "bar");   
  5.         map.add("fruit", "apple");   
  6.         return map;   
  7.     }  
  8.  
  9. //注意:返回类型MultiValueMap  

4. 响应一个bean

 
 
  1. @RequestMapping(value="/xml"method=RequestMethod.GET)   
  2.     public @ResponseBody JavaBean writeXml() {   
  3.         return new JavaBean("bar", "fruit");   
  4.     }  
  5.  
  6. //注意:返回类型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的注解,所以需要加入如下配置:

 
 
  1. <mvc:annotation-driven/> 

@Valid要求 必须符合输入要求,否则就提示400错误

 

小结

这次简单的阐述了一下请求格式与响应格式。包括string,bean,map.json,xml等多种方式,同时对一些注解做了简单介绍,但基本对理解本文核心内容能有一定帮助。

具体参考spring官方文档,或者关注本博客后面内容。










本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/yjplxq/978957,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
监控 Java 数据处理
【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解
【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解
|
3月前
|
人工智能 监控 安全
spring cloud智慧工地信息平台管理系统源码
智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合,为工程项目管理提供先进技术手段,构建工地现场智能监控和控制体系,弥补传统方法在监管中的缺陷,最终实现项目对人、机、料、法、环的全方位实时监控。智慧工地平台支持项目级、公司级、集团级多级权限划分,可根据企业的组织架构进行项目权限、功能权限、数据权限设定。
27 1
|
3月前
|
消息中间件 Java Spring
RabbitMQ各种模式的含义与Spring Boot实例详解
RabbitMQ各种模式的含义与Spring Boot实例详解
36 0
|
4月前
|
消息中间件 Java Spring
Spring Boot中异步消息JMS的讲解与通信实例
Spring Boot中异步消息JMS的讲解与通信实例
43 1
|
4月前
|
XML Java 数据格式
spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解
spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解
32 0
|
4月前
|
SQL Java Spring
Spring Data JPA之JpaSpecificationExecutor复杂动态查询实例
Spring Data JPA之JpaSpecificationExecutor复杂动态查询实例
32 0
|
4月前
|
XML Java 数据库连接
Hibernate与Spring整合实践实例
Hibernate与Spring整合实践实例
40 0
|
4月前
|
监控 安全 Java
【Java】Spring Cloud 智慧工地信息云平台源码(PC端+APP端)项目平台、监管平台、大数据平台
【Java】Spring Cloud 智慧工地信息云平台源码(PC端+APP端)项目平台、监管平台、大数据平台
80 0
|
4月前
|
XML 前端开发 Java
Spring MVC - context:component-scan实现原理与实例
Spring MVC - context:component-scan实现原理与实例
24 0
|
5月前
|
设计模式 Java API
使用Spring框架创建一个RESTful API,实现学生信息的管理,包括资源的创建、读取、更新和删除。
在当今的Web应用程序开发中,RESTful API(Representational State Transferful Application Programming Interface)变得越来越重要。Spring框架提供了强大的工具和功能,以便轻松创建、读取、更新和删除(CRUD)资源。在这篇文章中,我们将深入探讨如何使用Spring框架创建一个RESTful API,并通过一个完整的示例演示。