Spring MVC的使用-2

1、SpringMVC的返回JSON数据

​ 到目前为止我们编写的所有Controller的方法的返回值都是String类型-但是大家应该都知道-我们有时候数据传递特别是在ajax中-我们返回的数据经常需要使用json-那么如何来保证返回的数据的是json格式呢?使用@ResponseBody注解

pom.xml

``xml 4.0.0 com.oi springmv_ajax 1.0-SNAPSHOT org.springframework spring-context 5.2.3.RELEASE org.springframework spring-web 5.2.3.RELEASE org.springframework spring-webmvc 5.2.3.RELEASE javax.servlet servlet-api 2.5 provided javax.servlet jsp-api 2.0 provided com.fasterxml.jackson.core jackson-core 2.10.3 com.fasterxml.jackson.core jackson-databind 2.10.3 com.fasterxml.jackson.core jackson-annotations 2.10.3 `

springmvc.xml

JsonController.java

`java package com.oi.controller;import com.oi.bean.User;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import java.util.ArrayList;import java.util.Date;import java.util.List;@Controllerpublic class JsonController { @ResponseBody @RequestMapping("/json") public List json(){ List list = new ArrayList(); list.add(new User(1,"zhangsan",12,"男",new Date(),"1234@qq.com")); list.add(new User(2,"zhangsan2",12,"男",new Date(),"1234@qq.com")); list.add(new User(3,"zhangsan3",12,"男",new Date(),"1234@qq.com")); return list; }} `

User.java

`java package com.oi.bean;import com.fasterxml.jackson.annotation.JsonFormat;import com.fasterxml.jackson.annotation.JsonIgnore;import java.util.Date;public class User { private Integer id; private String name; private Integer age; private String gender; @JsonFormat( pattern = "yyyy-MM-dd") private Date birth; @JsonIgnore private String email; public User() { } public User(Integer id, String name, Integer age, String gender, Date birth, String email) { this.id = id; this.name = name; this.age = age; this.gender = gender; this.birth = birth; this.email = email; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + ''' + ", age=" + age + ", gender='" + gender + ''' + ", birth=" + birth + ", email='" + email + ''' + '}'; }} `

同时@ResponseBody可以直接将返回的字符串数据作为响应内容

`java package com.oi.controller;import com.oi.bean.User;import org.springframework.http.HttpEntity;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.ResponseBody;@Controllerpublic class OtherController { @ResponseBody @RequestMapping("/testResponseBody") public String testResponseBody(){ return "success"; }} `

2、发送ajax请求获取json数据

ajax.jsp

` <%@ page import="java.util.Date" %><%@ page contentType="text/html;charset=UTF-8" language="java" %> Title <% pageContext.setAttribute("ctp",request.getContextPath());%><%=new Date()%>获取用户信息 $("a:first").click(function () { $.ajax({ url:"${ctp}/json", type:"GET", success:function (data) { console.log(data) $.each(data,function() { var user = this.id+"--"+this.name+"--"+this.age+"--"+this.gender+"--"+this.birth+"--"+this.email; $("div").append(user+'
'); }) } }); return false; });
`

3、使用@RequestBody获取请求体信息