`
郑云飞
  • 浏览: 813596 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

springmvc ajax json的使用

 
阅读更多
spring mvc 3开始,提供了对json的直接支持。这部分的支持功能包括把返回信息转化成json和将request body内容转换成json。
spring 给出了一个svn,里面的一个ajax例子,写的功能挺多的。
https://src.springframework.org/svn/spring-samples/mvc-ajax/trunk/
可以从上面的地址下载下来运行。这是个maven应用。
就以这个事例做讲解。
spring mvc 3.0不需要任何其他配置,添加一个jackson的架包
,既可以支持的。

org.codehaus.jacksonjackson-mapper-asl1.6.4
@RequestMapping(method = RequestMethod.GET)
public String getCreateForm(Model model) {
model.addAttribute(new Account());
return "account/createForm";
}
这个方法,当默认访问/account的时候会进入,它会返回account/createForm,这个逻辑视图是一个叫createForm的页面,会生成表单。
$(document).ready(function() {
 // check name availability on focus lost
 $('#name').blur(function() {
 checkAvailability();
 });
});
这个页面中有这段内容。是在name字段丢失焦点,触发检查。
function checkAvailability() {
 $.getJSON("account/availability", { name: $('#name').val() }, function(availability) {
 if (availability.available) {
 fieldValidated("name", { valid : true });
 } else {
 fieldValidated("name", { valid : false,
 message : $('#name').val() + " is not available, try " + availability.suggestions });
 }
 });
}
$.getJSON("account/availability", { name: $('#name').val() }, 这里调用的getJSON比较重要,因为它将请求的头信息写入 accpet : application/json, text/javascript, */*,
accpet : application/json这句是重点。如果没有这句,浏览器解析到的response的ContentType 和 head accpet 都是 ,application/json(因为ResponseBody注解,return 的非String 非ModelAndView类型的时候默认设置为json,它会设置content-type为Content-Type:application/json;charset=UTF-8),而request的头信息的accpet不是application/json,那么浏览器发现application开头的contxt-type就会提醒你是否保存,而对于ajax调用,这个是否保存的按钮不会出现(涉及到安全问题)那么你的这个ajax是无法收到返回的内容的(google chrome浏览器除外)。
如图,非ajax访问,就会出现这个。
[img]http://dl.iteye.com/upload/attachment/501599/07420b54-74c9-37f2-9025-e167d995fb5d.jpg" alt="[/img]
对于以上的js不做详细解释。

@RequestMapping(value = "/availability", method = RequestMethod.GET)
public @ResponseBody
AvailabilityStatus getAvailability(@RequestParam String name) {
for (Account a : accounts.values()) {
if (a.getName().equals(name)) {
return AvailabilityStatus.notAvailable(name);
}
}
return AvailabilityStatus.available();
}
这个叫getAvailability的方法。这个方法的请求参数解析和json没关系,因此请求参数 name没有写@RequestBody。
只看方法的定义之前有一个 @ResponseBody。关于这个注解查看我的的 sping mvc连载文章。
AvailabilityStatus是返回类型。这种返回类型由于有@ResponseBody,那么spring将查找相应的HttpMessageConverter类处理,3.0默认的当然是json转换器了。
post提交json格式数据到服务器
[code="javascript"]
$("#account").submit(function() {
var account = $(this).serializeObject();
$.postJSON("account/create", account, function(data) {
alert(data);
$("#assignedId").val(data.id);
showPopup();
});
return false;
});

var account = $(this).serializeObject();这行代码我不给出了,这个是将form表单的字段序列化成json格式。
$.postJSON("account/create", account, function(data)
是json.min.js提供的方法。是以post方式提交的。
[code="java"]
@RequestMapping(value = "/create", method = RequestMethod.POST)
public @ResponseBody
Map create(@RequestBody Account account,
HttpServletResponse response) {
Set> failures = validator
.validate(account);
if (!failures.isEmpty()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return validationMessages(failures);
} else {
accounts.put(account.assignId(), account);
return Collections.singletonMap("id", account.getId());
}
}

首先返回值是Map
json怎么处理Map的不解释。
@ResponseBody还是一样
@RequestBody Account account,这里的@RequestBody,关于这个注解的其他信息查看我的spring mvc 第一篇。
这个@RequestBody也会调用HttpMessageConverter来解析成对象。因为我们的postJSON方法会发送Content-type是application/json,所以还是使用的json转换器了, 
  

  



 


http://shop.paipai.com/799078779

 

  


http://shop.paipai.com/799078779


http://shop.paipai.com/799078779
http://shop.paipai.com/799078779


http://shop.paipai.com/799078779 
http://shop.paipai.com/799078779

 

 

分享到:
评论

相关推荐

    springMVC+ajax+json

    Spring MVC、Ajax 和 JSON 是现代Web开发中的关键技术,它们共同构建了高效、动态的用户界面。下面将详细解释这三个技术及其在实际应用中的结合。 **Spring MVC** Spring MVC 是 Spring 框架的一部分,用于构建基于...

    SpringMVC利用Ajax,JQuery交互Json

    本教程将深入讲解如何在SpringMVC中利用Ajax和JQuery来交互Json数据。 首先,让我们理解什么是Json。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成...

    ajax+springmvc+json

    2. **创建Controller**:定义一个SpringMVC的控制器类,包含一个处理Ajax请求的方法,该方法使用`@RequestMapping`注解来匹配URL,`@ResponseBody`注解将返回值转化为JSON。 3. **Ajax请求**:在前端JavaScript代码...

    springMVC+json.zip_JSON_myeclipse_springmvc_数据传递

    4. **SpringMVC与JSON的结合**:在SpringMVC中,使用JSON进行数据传递,主要涉及到两个关键类:`HttpMessageConverter` 和 `Jackson` 库。`HttpMessageConverter` 负责将Java对象转换成JSON字符串,或将JSON字符串反...

    springmvc ajax 文件上传

    - **前端**:使用JavaScript库如jQuery的`$.ajax`或`$.formData`来构造一个FormData对象,将文件添加到其中,然后通过XMLHttpRequest发送请求。例如: ```javascript var formData = new FormData(); formData....

    SpringMVC 使用JSON、XML视图

    本文将详细介绍如何在SpringMVC中集成并使用JSON和XML视图,以及相关的库如json-lib、Jackson、xStream、Jibx和Jaxb2。 首先,让我们理解JSON和XML的作用。JSON(JavaScript Object Notation)是一种轻量级的数据...

    springmvc spring hibernate ajax json

    在这个"springmvc spring hibernate ajax json"的简单完整DEMO中,我们可以预期以下几个方面的集成和使用: 1. **Spring MVC** 作为前端控制器,负责接收HTTP请求,调度到相应的Controller处理。 2. **Spring** 通过...

    ajax向springmvc传递json

    总结来说,Ajax向Spring MVC传递JSON涉及的主要步骤包括前端的数据序列化、Ajax请求的发起、服务器端的参数绑定、业务处理及响应的JSON化。理解并熟练掌握这一流程对于进行高效的前后端数据交互至关重要。在实际项目...

    springMVC json格式转换demo

    在前端,通常使用JavaScript的`fetch` API或jQuery的`ajax`方法发送JSON请求。以下是一个简单的JavaScript示例: ```javascript let user = { name: '张三', age: 30 }; fetch('/saveUser', { method: 'POST', ...

    SpringMVC中后台转换json格式

    然而,当我们在使用SpringMVC和Ajax进行数据交互时,可能会遇到406错误,这意味着服务器不能提供客户端所接受的任何形式的内容。本文将详细介绍如何在SpringMVC中后台转换JSON格式,以解决406错误问题。 406错误...

    springMVC使用Ajax请求数据

    结合使用SpringMVC和Ajax,可以实现异步数据交互,提高用户体验。 在SpringMVC中,Ajax请求通常涉及到以下几个关键步骤: 1. **前端准备**: - 首先,你需要在HTML页面中引入jQuery库,因为它是广泛使用的...

    SpringMVC+JSON+mybatis+jQuery+Ajax+Maven做的无刷新登录,注册,修改密码以及校验并且赋有详细注释,以及增删改查功能

    注:此项目是用IntelliJ IDEA 13.1.3此软件编写而成,不过和myeclipse都差不多,本项目包含SpringMVC+JSON+mybatis+jQuery+Ajax+Maven做的无刷新登录,注册,修改密码,拦截器,如果用户没有登录则不能进行相应操作...

    springMVC对ajax支持jar包

    例如,以下是一个简单的SpringMVC控制器方法,它使用Ajax请求返回一个JSON对象: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation....

    spring_mvc_ajax.zip_SpringMVC ajax_SpringMVC+ajax_spring ajax_sp

    3. **数据交换格式**:Ajax请求通常返回JSON或XML数据,因为它们易于解析且轻量。SpringMVC可以通过`@ResponseBody`注解将方法的返回值直接转换为HTTP响应体,或者使用`@RestController`注解标记整个Controller为...

    springmvc-ajax-json

    在这个主题"springmvc-ajax-json"中,我们将深入探讨如何在Spring MVC中整合jQuery和Jackson库,实现前端与后端的数据交互,特别是在使用Ajax进行异步请求时。 首先,Spring MVC 提供了Controller接口和@...

    springmvc接收ajax请求注意事项

    SpringMVC 接收 Ajax 请求注意事项 SpringMVC 框架在处理 Ajax 请求时需要注意一些重要的配置和设置,以确保请求的正确处理和数据的正确传输。下面我们将介绍在 SpringMVC 中接收 Ajax 请求的注意事项。 基本数据...

    springmvc的ajax配置,实现

    Ajax技术结合JSON(JavaScript Object Notation)数据格式,可以高效地传输数据,简化Web应用的复杂性。以下将详细介绍如何在Spring MVC中配置Ajax并实现相关功能。 1. **引入依赖**: 在项目中,我们需要添加对...

    springMVC整合json

    你可以使用Postman、curl或其他HTTP客户端工具,或者在前端使用Ajax来调用这些接口。 **7. 注意事项** - 确保你的Java对象(如`User`类)有合适的getter和setter方法,以便Jackson能够正确序列化和反序列化。 - ...

    SpringMVC+Ajax异步文件上传

    在本教程中,我们将探讨如何结合`SpringMVC`和`Ajax`来实现异步文件上传,并讨论短视频背景以及`a`标签绑定文件域的相关知识。 1. **SpringMVC中的文件上传** - **MultipartFile接口**:`SpringMVC`提供了一个名为...

    springmvc + jquery + ajax + json 异步传递数据

    在SpringMVC中,可以使用`@ResponseBody`注解将方法返回的对象直接转换为JSON字符串,然后通过Ajax返回给客户端。 实现SpringMVC、jQuery、Ajax和JSON的异步传递数据,首先需要配置SpringMVC的DispatcherServlet和...

Global site tag (gtag.js) - Google Analytics