Ajax与SpringMvc交互

ajax是一种比较常用的页面技术,以其良好的交互效果已经被广泛应用,为了方便的使用ajax,市面上也出现的不少的ajax框架如dwr。为此springmvc借鉴了dwr的思想,可以使用ajax和springmvc交互,同时提供了java对象转换成json的机制。还是先一睹为快吧

1 如果需要springmvc进行java对象和json的转换需要增加如下配置

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="cacheSeconds" value="0" />
		<property name="messageConverters">
			<list>
				<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
			</list>
		</property>
</bean>

如果json数据不需要springmvc进行转换messageConverters的配置可以忽略

2  在控制器中的方法加上注解@ResponseBody,此时该方法就可以通过ajax直接访问了

package com.sxt.action;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.sxt.po.User;

@Controller
@RequestMapping("myajax.do")
public class MyAjaxController {

	@RequestMapping(params="method=test1",method=RequestMethod.GET)
	public @ResponseBody List<User> test1(String uname) throws Exception{
		String uname2 = new String(uname.getBytes("iso8859-1"),"UTF-8");
		System.out.println(uname2);
		System.out.println("MyAjaxController.test1()");
		List<User> list = new ArrayList<User>();
		list.add(new User("潘玮柏","123"));
		list.add(new User("蔡依林","456"));

		return list;
	}

}

3 使用ajax请求springmvc并取得返回值

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<script>
		function createAjaxObj(){
			var req;
			if(window.XMLHttpRequest){
				req = new XMLHttpRequest();
			}else{
				req = new ActiveXObject("Msxml2.XMLHTTP");  //ie
			}
			return req;
		}

		function sendAjaxReq(){
			var req = createAjaxObj();
			req.open("get","myajax.do?method=test1&a="+Math.random());
			req.setRequestHeader("accept","application/json");
			req.onreadystatechange  = function(){
				alert(req.responseText);
				//eval("var result="+req.responseText);
				//document.getElementById("div1").innerHTML=result[0].uname;
			}
			req.send(null);
		}
	</script>
  </head>

  <body>
    <a href="javascript:void(0);" onclick="sendAjaxReq();">测试</a>
    <div id="div1"></div>
  </body>
</html>

最后来看看运行效果:

是不是也特别简单呢,其中最要注意的是使用这种方式需要jackson的支持,因此下面的这两个jar包不能少

这次先到这里,下次分享的是springmvc的拦截器。

时间: 2024-11-10 03:04:47

Ajax与SpringMvc交互的相关文章

Ajax和SpringMVC之间JSON交互

Ajax和SpringMVC之间的json数据传输有两种方式: 1.直接传输Json对象 2.将Json序列化成json字符串 1.直接传输Json对象 前端Ajax $(document).ready(function(){ $("#btn_login").click(function(){ var dataJson = { username:$("#username").val(), password:$("#password").val()

利用ajax与后台交互容易出现的问题及解决办法

Ajax在当今的前后台交互中可以说是很火的.那么在使用ajax与后台交互的过程中我们会遇到哪些小问题呢. 使用get方法的时候: 1.浏览器的缓存问题:当我们多次访问同一个地址的时候,浏览器不会每次都更新地址,而是将第一次访问到的数据缓存起来,后面访问同样地址的时候直接从缓存中获取数据,而不会从服务器中读取数据,因此如果我们改变后台中的数据,我们访问时数据将不会更新,访问到的数据也不会改变.如何解决这个问题呢?这时我们可以在"url?"后面用"&"符号连接一

Spring MVC 通过ajax实现前后台交互

先看前台ajax部分: 1 $('#delMd').click( 2 function(){ 3 if($('#reqState').val() == '2'){ 4 $.Dialog.show("申请单已提交审批,不能再更改"); 5 return false; 6 } 7 if($("#itemNo").val() == '0'){ 8 $.Dialog.show("请选择要删除的主数据"); 9 return false; 10 } 11

7、jQuery的Ajax与Java交互带加载图片

1.jQuery的Ajax与Java交互带加载图片 1.1 html代码 <body> <div id="main"> <button id="myBut">Ajax获取数据</button> <div id="container"> <img src="./img/load.jpg" id="myimg"> </div>

325 AJAX介绍,XMLHttpRequest对象,实现Ajax的异步交互步骤,服务器端通信状态

* Asynchronous JavaScript and Xml \* 直译中文 - javascript和XML的异步 \* (不严格的定义)客户端与服务器端进行交互,而无需刷新当前页面的技术,称之为Ajax. * Ajax实现的是B/S架构下的异步交互 * 实现异步交互的技术: \* <iframe src="">元素 * 同步与异步的区别 * 同步交互 \* 执行速度相对比较慢 \* 响应的是完整的HTML页面 * 异步交互 \* 执行速度相对比较快 \* 响应的是

springmvc使用ajax进行数据交互时,session失效问题(@ResponseBody与session能否同时使用?)

今天做博客demo的时候遇到了这样的问题:当我用ajax进行资源请求时,需要顺便将账户信息存入session.但是后来发现有@Responsebody标签时,直接用HttpSession存数据时,根本没有效果.代码如下: @ResponseBody @RequestMapping("/checkInfo") public Blogger dealWithLogin(@RequestBody Blogger blogger,HttpSession httpSession){ if(blo

通过PHP前端后台交互/通过ajax前端后台交互/php基础传输数据应用/简单的留言版/简单的注册账户/简单的登录页/

  前  言  PHP     通过上一篇博客,注册账号与登录页面--前后台数据交互  跳转转到index主页,接下来进入主页留言板功能,通过ajax向后台传输数据,同时发表留言. 具体的内容分析如下: ① PHP中的数据传输-->>--在主页先添加基础HTML5基本框架,通过form表单提交数据 >>由主页传输给主页后台-->>主页后台经过转码保存实例化的文件 ②主页后台通过判断(是否保存文件)使用输出语句输出true或false,前台通过ajax中的post中的fu

通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用

  前  言  PHP     学习了好久的PHP,今天做一个可以后台交互的登录页和注册页,没做什么判断,简单的了解一下. 具体的内容分析如下: ① PHP中的数据传输-->>由注册页传输给注册页后台-->>注册页后台经过转码保存实例化的文件 ② 在登录页输入账户密码,点击登录时,获得触发函数:获得由后台传输过来的true或者false---转换页面或者弹出输入错误.    登录页后台获取保存账户密码的实例化文件,通过转码,if判断之后传输给前台登录页TURE或者FALSE. 总共

C#用ajax进行前后台交互的几种方法

从实习到转正,再到现在,不知不觉已经8个月了.记得刚实习的时候还只会拖控件,ajax也只会用微软那个傻瓜式的updatepanel.下面总结一下自己在工作和业余时间学到的ajax交互,下面给出链接,里面介绍的都很详细的了 第一种:Ajaxpro. http://www.cnblogs.com/yourancao520/archive/2012/02/21/2360988.html 第二种:jauery的ajax方法 http://blog.csdn.net/iouxyz/article/deta