从零开始搭建springMVC项目3.5——Ajax返回json格式数据

3里面讲了提交ajax请求,这篇稍微深化。

3里面我直接从后台返回个字符串,不过项目稍微复杂些返回单个数据就明显不够用,主流的解决方案的是采用json格式从后台返回多种数据。


首先导入转换成json格式所需要的依赖,在pom.xml添加以下dependency

<!-- 后台数据转换成json用 -->
	<dependency>
		<groupId>org.codehaus.jackson</groupId>
		<artifactId>jackson-mapper-asl</artifactId>
		<version>1.9.13</version>
	</dependency>
	<dependency>
	    <groupId>com.fasterxml.jackson.core</groupId>
	    <artifactId>jackson-core</artifactId>
	    <version>2.4.1</version>
	</dependency>
	<dependency>
	    <groupId>com.fasterxml.jackson.core</groupId>
	    <artifactId>jackson-databind</artifactId>
	    <version>2.4.1.1</version>
	</dependency></span>
然后建立一个返回用的类吧,首先开一个test.spring.entity包,这里就用来存实体类。

接着新建HelloWorldResponse类,在里面定义几个private变量,然后让eclipse生成Getter,Setter很方便。

生成Getter,Setter在打开着这个response类的时候选择顶部工具栏的Source -> Generate Getters and Setters...
完成后如下

package test.spring.entity;

public class HelloWorldResponse {
	
	private Boolean error;
	
	private String str1;

	private String str2;

	public Boolean getError() {
		return error;
	}

	public void setError(Boolean error) {
		this.error = error;
	}
	
	public String getStr1() {
		return str1;
	}

	public void setStr1(String str1) {
		this.str1 = str1;
	}

	public String getStr2() {
		return str2;
	}

	public void setStr2(String str2) {
		this.str2 = str2;
	}

}
</span>
error判断数据获取有无出错,剩下两个就是显示用的变量了

更改一下之前的getString,让他返回HelloWorldResponse,让response里的两个字符串变量的值分别等于Dao里取出来的和前台传过来的

	@RequestMapping("/getString")
	@ResponseBody
	public HelloWorldResponse getString(@RequestParam(value = "str2", required = false, defaultValue = "Yeah!") String str2) {
		HelloWorldResponse resp = new HelloWorldResponse();
		resp.setStr2(str2);
		resp.setStr1(helloWorldService.getStrFromService());
		if(resp.getStr1() == null) {
			resp.setError(true);
		} else {
			resp.setError(false);
		}
		return resp;
	}</span>

另外获取前台数据使用HttpServletRequest也是很好用的,用getParameter()函数获取值,没有的话会是null

	@RequestMapping("/getString")
	@ResponseBody
	public HelloWorldResponse getString(HttpServletRequest req) {
		HelloWorldResponse resp = new HelloWorldResponse();
		resp.setStr2(req.getParameter("str2"));
		resp.setStr1(helloWorldService.getStrFromService());
		if(resp.getStr1() == null) {
			resp.setError(true);
		} else {
			resp.setError(false);
		}
		return resp;
	}</span>

然后前台提交请求的也改一下,function稍微变一变

function getStr() {
		$.ajax({
			type:"GET",
			url:"getString",
			dataType:"json",
			data:{str2:"Yes!"},
			success:function(result){
				if (!result.error) {
					$("#lab").text(result.str1 + result.str2);
			 	}
			}
		});
	}</span>
多了一个dataType表示后台返回数据的格式,选择json,还有data是表示传到后台的参数,记得data里面不要乱加空格,我因为这个被坑了一上午....

运行一下,很好很强大!

从零开始搭建springMVC项目3.5——Ajax返回json格式数据_第1张图片



你可能感兴趣的:(eclipse,spring,spring,mvc,项目创建)