SpringMVC实现AJax以及RestFull分格

1、需要在web.xml中开启put,和delete的支持

  <!-- 浏览器不支持put,delete等method,由该filter将/xxx?_method=delete转换为标准的http delete方法 -->
      <filter>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

  2、务必导入jackson的jar包

3、jqery发送AJax到springmvc,需要的是json标准格式的字符串,而非json对象,所以得先转成字符串,涉及的发送AJax的几处坑如下:


SpringMVC发送ajax

一般采用$.ajax()方法进行数据发送,主要是因为$.post()方法发送数据的形式得是json对象格式,而$.ajax()方法可以发送字符串形式json,,另外使用springmvc的ajax功能千万记得导入jackson的2.4版本以上的包,不然报406的错误,采用$.ajax()方法需要注意的几个坑是:


$.ajax({

url: "${pageContext.request.contextPath}/test.action",

data:  JSON.stringify(obj), //这也是一处坑,SpringMVC要求为严格形式的json字符串,必须保证json串不能出现畸形

contentType : ‘application/json;charset=utf-8‘,//这也是一处坑,这里指定发送到服务器端的报文内容形式,默认的urlencoder的,无法传送json,所以传json时必须指定contentType

type:"post",

dataType:"json",  //这里是一处坑,dataType为指定响应回来的数据类型,必须是xml,json,text,html中的一种,不能写错,写错后会造成jqery框架把返回数据转为指定格式失败,而从导致success函数无法调用,但是服务端能接收到数据,也能正常返回,而js端解析数据出错而造成卡死了,但是并没有错误显示

success:function(data)

{

}

});


服务端把json数据装配成pojo对象,是通过@RequestBody注解来实现的,而把pojo对象返回成json对象是通过注解@ResponseBody来实现的,都得一一写上,就算返回的是字符串@ResponseBody也不能漏掉

@RequestMapping("/test.action")

public @ResponseBody User func1(@RequestBody User u)

{

return User;

}

其中,发送AJax的contentType 为发送过去的格式,dataType为接收时让jqery转换的格式,一定得指定让其可以正常转换的格式才行,不然不会报错,但是也没有成功的回调响应

4、代码实现:

①、服务端,默认可以不写produces={"application/json;charset=utf-8"},produces是指定响应回客户端的json格式编码,除非返回格式解析乱码:

    @RequestMapping(value="/submit",method=RequestMethod.DELETE,produces={"application/json;charset=utf-8"})
    public @ResponseBody User submit1(@RequestBody User u)
    {
        System.out.println(u);
        return new User("004","jerry");
    }

    @RequestMapping(value="/submit",method=RequestMethod.POST)
    public @ResponseBody User submit2( @RequestBody User u)
    {
        System.out.println(u);
        return new User("003","jerry");
    }

②、客户端:

<script type="text/javascript">
	$(function() {
		$("#btn1").click(function() {
			var obj = {
				uid : 1,
				name : ‘jerry1‘
			};
			$.ajax({
				url : ‘${pageContext.request.contextPath}/submit?_method=delete‘,
				type : ‘post‘,
				data : JSON.stringify(obj),
				contentType : ‘application/json;charset=utf-8‘,
				dataType : ‘json‘,
				success : function(data) {
					alert(data.uid);
				}
			});
		});

		$("#btn2").click(function() {
			var obj = {
				uid : 2,
				name : ‘jerry2‘
			};
			$.ajax({
				url : ‘${pageContext.request.contextPath}/submit‘,
				type : ‘post‘,
				data : JSON.stringify(obj),
				contentType : ‘application/json;charset=utf-8‘,
				dataType : ‘json‘,
				success : function(data) {
					alert(data.uid);
				}
			});
		});
	});
</script>

  客户端通过url参数区分RestFull方法,服务端通过RequestMethod来进行限制

时间: 2024-12-29 09:43:21

SpringMVC实现AJax以及RestFull分格的相关文章

spring+springmvc+hibernate架构、maven分模块开发例子小项目案例

maven分模块开发例子小项目案例 spring+springmvc+hibernate架构 以用户管理做测试,分dao,sevices,web层,分模块开发测试!因时间关系,只测查询成功,其他的准备在ext上做个完整的案例来的,可惜最近时间很紧, 高级部分也没做测试,比如建私服,其他常用插件测试之类的,等用时间了我做个完整ext前端和maven 完整的例子出来,在分享吧! 不过目前这些撑握了,在项目中做开发是没有问题的,其他高级部分是架构师所做的. 之前我有的资源都加上了积分,有些博友向我要,

SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】

注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系[email protected],敬请朋友们斧正,谢谢. 这一部分主要讲解SpringMVC如何处理Ajax请求,是首先要讲解一下jackson类库,可以帮助我们在java对象和json.xml数据之间的互相转换.他可以将控制器返回的对象直接转换成json数据,供客户端使用,客户端也可以传送json数据到服务

springmvc与ajax交互

Jsp页面: 需要引入jquery-1.10.2.min.js.json2.js.jquery.json-2.3.js三个文件 <%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/co

springmvc实现ajax的问题

使用springmvc实现ajax,遇到很多问题,记录几个比较常见的: 1:没有在Controller类中,对应的ajax方法上添加@ResponseBody,这个必须添加,否则返回值到不了页面上,js获取一直为null: 2:Controller类中,返回的值,不能是JSONObject,这个我网上看资料,好像是springmvc不支持的原因,用struts2是可以的,为了保险,返回json格式的String即可: 3:关于页面获取到ajax返回值之后,处理方式可以如下: $.post(url

SpringMVC的AJAX请求报406错误

SpringMVC的AJAX请求报406错误原因有两种:1.jackson包没有引入 2.如果已经引入jackson包了还报406的错误,那么就有可能是请求的url路径是.html结尾,但是返回的数据是一个对象,这时浏览器就不知道怎么响应了,因为一般请求.html后缀的页面,返回的一般是个字符串或者页面内容,此时可以在web.xml中再配置一个拦截后缀,如*.action,web.xml可以有多个拦截后缀,请求.action的后缀,浏览器就没有这个限制了

SpringMVC—对Ajax的处理(含 JSON 类型)(3)

五.服务器端的 SpringMVC 如何返回 JSON 类型的字符串. 请求: $("#testJson8").click(function () {    $.ajax({        url: "testReturnJsonValue",        type: "post",        success: function (result) {            console.log(result);        }    }

springMVC+jsp+ajax上传文件

工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method="post" > 登录名<input type="text" name="loginName" /> <br> 上传录音<input type="file" name="record

SpringMVC——对Ajax的处理(包含 JSON 类型)

一.首先要搞明白的一些事情. 1.从客户端来看,需要搞明白: (1)要发送什么样格式的 JSON 数据才能被服务器端的 SpringMVC 很便捷的处理,怎么才能让我们写更少的代码,如何做好 JSON 数据和实体之间的对应. (2)如何组织这些发送的数据. 2.从服务器端来看,需要搞明白: (1)SpringMVC 如何返回 JSON 数据. (2)SpringMVC 如何处理请求的复杂数据. 3.$.ajax 的几个参数: (1)contentType: contentType: 'appli

本文使用springMVC和ajax,实现将JSON对象返回到页面

一.引言 本文使用springMVC和ajax做的一个小小的demo,实现将JSON对象返回到页面,没有什么技术含量,纯粹是因为最近项目中引入了springMVC框架. 二.入门例子 ①. 建立工程,并导入相应spring jar包和解析json的包fastjson. ②. 在web.xml文件中配置Spring的核心类DispatcherServlet ③. 配置Spring的核心配置文件spring-servlet.xml ④. 编写实体类Person public class Person