SpringMVC AJAX支持

假装没事ソ 提交于 2019-12-09 02:50:50

网站或者BS系统使用ajax技术是再常见不过的了。SpringMVC本身对ajax有很好的支持,前后端使用json作为数据传输格式实现起来很方便。下面我们看个具体的例子。

如何搭建一个最基础的springMVC项目,请参看:

http://blog.csdn.net/clj198606061111/article/details/20492887


一、引入jar包

我们需要引入下面jar包,以提供java对象转为json支持。

1)  jackson-core-asl-1.9.11.jar

2)  jackson-mapper-asl-1.9.11.jar

maven配置:

<dependency>
		<groupId>org.codehaus.jackson</groupId>
		<artifactId>jackson-mapper-asl</artifactId>
		<version>1.9.11</version>
</dependency>
二、测试代码

1、UserAction.java

Ajax方法中加上@ResponseBody注解,返回的java对象会被自动转为json。

package com.clj.test.user.action;

import java.util.HashMap;
import java.util.Map;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@Scope("prototype") 
@RequestMapping("/user")
public class UserAction
{
    @RequestMapping("/ajaxTest")
    @ResponseBody
    public Map<String,Object> ajaxTest(String name,String password)
    {
        System.out.println("name:"+name+",password:"+password);
        
        Map<String,Object> map=new HashMap<String,Object>();
        map.put("msg", "我接到ajax请求了!!!");
        
        return map;
    }
}

2、ajaxTest.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ajaxTestPage</title>
<script type="text/javascript" src="./js/jquery-1.11.0.min.js" ></script>
<script type="text/javascript">
function testAjax()
{
	var rep=$.ajax({
		type: "POST",
		url: "./user/ajaxTest",
		data: { name: "王五", password: "Boston" }
		});
	
	rep.done(function( data ){
		alert( "Data Saved: " + data.msg );
		});
	
	rep.fail(function( jqXHR, textStatus ) {
		alert( "Request failed: " + textStatus );
	});
}
</script>
</head>
<body>
<h3>AJAX Test</h3>
<input type="button" value="testAjax" οnclick="testAjax()"/>
</body>
</html>

上面的测试页面中,我们引用的js的实际位置是:/WEB-INF/js/jquery-1.11.0.min.js但是页面上我们使用的地址却是:./js/jquery-1.11.0.min.js为什么我们能访问到这个文件能,因为这个js文件是一个静态文件,告诉springMVC这个是静态资源,你要作为静态资源来处理,在springMVC配置文件中加如下配置:

<mvc:resources mapping="/js/**" location="/WEB-INF/js/" cache-period="31556926"/>

这样/WEB-INF/js/下的所有文件我们都可以通过js/这个路径来引用了。

三、测试

浏览器中直接输入:http://localhost:8080/springMVC/ajaxTest.html

便可进入测试页面,如果进不了这个测试页面,看看web.xml中是否加了如下配置

<servlet-mapping>        
	    <servlet-name>default</servlet-name>       
	    <url-pattern>*.html</url-pattern>      
	</servlet-mapping> 

我们的springMVC配置的是REST风格的地址请求方式,如果不加上面的配置,html文件也会被springMVC的拦截器拦截,但是又没有具体的处理器来处理,就会出现找不到文件的情况。

 

点击测试页的testAjax按钮,会弹出如下对话框,说明ajax请求已经成功,后台的信息“我接到ajax请求了!!!”已经传到了页面。



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!