网站或者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; } }
<!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" onclick="testAjax()"/> </body> </html>
<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请求了!!!”已经传到了页面。