Spring MVC Ajax 请求

代码示例

  网页端代码:

<body>
	<input name="user" type="text"/>
	<button onclick="test1()">ajax测试</button>
	<div id="ttt">Java 端返回的数据将在这里显示	</div>
	<script type="text/javascript">
		function test1(){
     
     
			$.ajax({
     
     
				type:"post",
				data:"user="+$("input[name='user']").val(),
				url:"${pageContext.request.contextPath}/ajax/ajax1.do",
				dataType:"text",
				success:function (data){
     
     
					console.log(data);
					$("#ttt").html(data);
				}
			});
		}
	</script>
</body>

  Java 端代码:

@Controller
@RequestMapping("/ajax")
public class AjaxController {
    
    
	@RequestMapping(value = "/ajax1", method = RequestMethod.POST)
	@ResponseBody
	public String ajax1(@RequestParam(value = "user") String name) {
    
    
		System.out.println(name);
		return "aaaa";
	}
}

  在 @RequestMapping 注解中的 method = RequestMethod.POST,表示请求的方式要求是 post 方式。

  @ResponseBody 注 解的作用是将 controller 的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到 response 对象的 body 区,通常用来返回 JSON 数据。
  注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过 response 对象输出指定格式的数据,也就是下面代码所示形式。

@RequestMapping("/ajax2")
public void ajax2(String code, HttpServletResponse response) {
    
    
	System.out.println(code);
	try {
    
    
		response.getWriter().append("bbbb");
	} catch (IOException e) {
    
    
		e.printStackTrace();
	}
}

  如果向 Ajax 请求返回的是 JSON 格式的对象,并且包含中文,那么需要在@RequestMapping("/ajax2") 的地方加上 produces 参数,不然中文无法正确传输。

@RequestMapping(value = "/ajax1", method = RequestMethod.POST, 
					produces = "application/json;charset=utf-8")

  如果向 Ajax 请求返回的是文本,并且包含中文

@RequestMapping(value = "/ajax1", method = RequestMethod.POST, 
					produces = "text/html;charset=utf-8")

自动将对象转换成 JSON 格式数据

  Spring MVC 可以使用上面所说的,用 JSON 的 jar 包,将 Java 对象或者集合转换成 JSON 格式的数据,然后在转换成 String 类型的数据进行输出。
  不过 Spring MVC 还有一种更简单的方式实现。

准备工作

  在 pom.xml 文件中,引入 jackson-databind 的依赖。

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.9.6</version>
</dependency>

使用

@RequestMapping(value = "/ajax1", method = RequestMethod.POST,
					produces = "application/json;charset=utf-8")
@ResponseBody
public PersonModel ajax2(@RequestParam(value = "user") String name) {
    
    
	PersonModel pm = new PersonModel();
	pm.setName(name);
	return pm;
}

  Spring MVC 会根据我们刚才引入的依赖自动 Java 对象转换成 JSON 格式。

猜你喜欢

转载自blog.csdn.net/qq_40395874/article/details/114467121