此篇文章的讲解是基于前几篇文章的内容,如果大家有看不懂的地方可以看前几篇的内容.
spring mvc返回json数据可方法常用的有
- 直接PrintWriter 输出
- 使用Spring内置的支持
下面我分别对上面的两种方法进行讲解:注意这篇文章的讲解使用的是spring3.2版本,此版本与spring 3.0的配置有少许不同,希望大家注意,同时我使用的是jquery做演示.
?
首先讲解直接PrintWriter 输出,这个是最简单的,但是不可以使用java的复杂对象.
没有什么需要配置的,直接请求我们的ajax请求页面json.jsp.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="script/jquery-1.8.3.js"></script> <title>添加用户</title> <script type="text/javascript"> $(function(){ $("form :button").click(function(){ var name = $("#name").val(); var age = $("#age").val(); $.ajax({ type: "POST", url: "user/addUser", data: {name:name , age:age}, success:function(data){ alert("名字:" + data.name + "年龄:" + data.age); } }); }); }); </script> </head> <body> <form action="user/addUser" method="post"> 用户名:<input type="text" id="name" name="name" /><br/> 年龄:<input type="text" id="age" name="age" /> <input type="button" value="提交" /> </form> </body> </html>
?
?
?
给提示按钮添加点击事件,当提交表单时获取用户名name,和年龄age,以post的方式提交表user/addUser,并把服务器返回的数据显示出来,这里要注意JSP页面头上最好加上
<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">
?使用绝对路径,一切从根目录开始找起,要不然会因为路径问题,而且很烦,js也要声明为spring mvc不要拦截,这里之前文章有说过
?
Controller:
package gd.hz.springmvc.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import gd.hz.springmvc.model.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller("userController") @RequestMapping("user") public class UserController { // ajax请求一 @RequestMapping("addUser") public void addUser(User user, HttpServletRequest request, HttpServletResponse response) { // 这里不能用单引号,无效,死的心都有 System.out.println("过来了"); String result = "{\"name\":\"" + user.getName() + "\"}"; PrintWriter out = null; System.out.println(result); response.setContentType("application/json"); try { out = response.getWriter(); out.write(result); } catch (IOException e) { e.printStackTrace(); } } }
?这里我们用User这个实体接收ajax传过来的参数,当然也可以这样写:
public void addUser(String name , int age , HttpServletRequest request,HttpServletResponse response)
?注意名字要与from表单传过来的参数名称一样,当然也可以不一样,不一样时的用法可以看我之前的文章.
?
User类:
package gd.hz.springmvc.model; public class User { private String name ; private int age ; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
?
?
St