spring mvc 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访问,就会出现这个。
对于以上的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://liyixing1.iteye.com/blog/1098743
分享到:
相关推荐
**Spring3 MVC与Ajax结合使用JSON** 在现代Web开发中,Spring框架的MVC模块与Ajax和JSON的集成是创建动态、响应式用户界面的关键技术。这个"Spring3 MVC Ajax with JSON"项目提供了一个Eclipse工程,包含了实现这一...
4. **JSON与Ajax**:Spring MVC 3与jQuery或其他JavaScript库配合,可以方便地实现Ajax请求和响应,以JSON形式进行数据交换。 **二、常见错误解决** 1. **406 Not Acceptable**:这个错误通常是因为客户端没有在...
将Spring MVC与Ajax结合使用,可以实现页面的异步更新,提升用户体验,同时保持服务器负载均衡。 首先,我们需要理解Spring MVC的基本工作流程。当用户发起请求时,Spring MVC的DispatcherServlet会拦截这个请求,...
1. **创建Controller**:定义Spring MVC的控制器类,使用`@RequestMapping`注解映射URL,并使用`@ResponseBody`返回JSON数据。 2. **配置Jackson**:在Spring配置文件中启用Jackson并配置其属性,如日期格式化。 3. ...
本篇文章将通过解析“spring-mvc-jsonview”源代码,深入探讨Spring MVC如何支持AJAX请求,并提供一个实际的使用教程。 一、JSON视图解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
Spring MVC、Ajax 和 JSON 是现代Web开发中的关键技术,它们共同构建了高效、动态的用户界面。下面将详细解释这三个技术及其在实际应用中的结合。 **Spring MVC** Spring MVC 是 Spring 框架的一部分,用于构建基于...
这个项目可能是为了演示如何在一个简单的添加删除操作中使用这些技术,通过整合Spring、Hibernate、Spring MVC和Ajax,实现一个高效、用户友好的后台管理系统。开发者可以通过学习这个示例,掌握如何在实际项目中...
在这个"springmvc spring hibernate ajax json"的简单完整DEMO中,我们可以预期以下几个方面的集成和使用: 1. **Spring MVC** 作为前端控制器,负责接收HTTP请求,调度到相应的Controller处理。 2. **Spring** 通过...
在Spring MVC中,JSON数据通常用于客户端与服务器之间的数据传输,比如AJAX请求。为了将Java对象转换为JSON,我们需要引入Jackson库,这是一个流行的JSON处理库。在项目中添加Jackson依赖后,Spring MVC会自动配置并...
3. **数据绑定**:Spring MVC支持JSON或XML格式的数据交换,jQuery可以通过Ajax请求发送和接收这些格式的数据。使用`@RequestBody`和`@ResponseBody`注解,Spring MVC可以将JSON数据自动映射到Java对象。 4. **表单...
- **Spring MVC的Ajax响应**:返回的数据通常用@ResponseBody注解包裹,以便Spring MVC可以将其转换为JSON或其他格式,供前端JavaScript处理。 2. **文件上传**: - **MultipartFile接口**:Spring MVC提供...
例如,当用户在前端进行某些操作,如提交表单,我们可以使用Ajax发送POST请求到Spring MVC的Controller,Controller处理业务逻辑后,将结果以JSON或其他格式返回。JavaScript接收到响应后,可以在前端动态更新页面,...
在现代Web开发中,Spring MVC框架与JSON的结合使用是相当常见的。Spring MVC是一个强大的MVC(模型-视图-控制器)框架,用于构建可维护、高性能的Java Web应用程序。而JSON(JavaScript Object Notation)是一种轻量...
在IT领域,尤其是在Web开发中,`bootstrap`、`ajax`、`json`、`spring mvc`、`spring`和`hibernate`是六个非常重要的技术组件,它们共同构建了一个高效、交互性强的Web应用程序。下面我们将逐一探讨这些技术的核心...
本示例探讨的是如何利用Spring MVC后端框架与前端的Ajax技术来实现高效的文件上传,相较于传统的表单提交方式,这种方法具有无刷新、用户体验更佳的优势。以下是关于这个主题的详细讲解。 首先,我们需要理解Spring...
集成JSON-RPC和Spring MVC,可以让JSON-RPC作为Spring MVC的一个服务端点,允许客户端通过JSON-RPC协议调用服务器上的方法。这样做有以下优势: 1. **简洁的接口定义**:JSON-RPC的调用方式简洁,只需要指定方法名...
在Spring MVC中,使用jQuery向Controller传递JSON数据是一种常见的数据交互方式。然而,这个过程可能会遇到一些问题,本文将详细探讨这些难题以及解决方案。 1. **JSON数据格式化** JSON(JavaScript Object ...
总结,Spring MVC和Ajax的结合使用,为Web开发带来了高效的数据交互和良好的用户体验。通过理解和实践这个小项目,开发者能够深入理解这两种技术的协同工作方式,为后续的Web开发打下坚实的基础。
SpringMVC是Spring框架的一部分,是一个强大的MVC(Model-View-Controller)架构,用于构建企业级的Web应用。它提供了一个灵活的模型绑定,数据验证,以及异常处理机制,使得开发者可以更专注于业务逻辑,而不是底层...
接下来是Spring MVC,它是Spring框架的一个模块,专为构建Web应用程序而设计。Spring MVC提供了模型-视图-控制器架构模式,解耦了业务逻辑、数据和用户界面。它支持RESTful服务,可以方便地集成其他Spring组件,如...