四时宝库

程序员的知识宝库

springMVC入门(六)------json交互与RESTFul风格支持

SSM框架是java开发最常用的框架组合,作为视图层的框架SPring MVC框架有着极其广泛的应用,很多的小可爱在Java学习的框架阶段存在着诸多的迷茫,今天小编将手把手的带领大家进行三大框架之一的Spring MVC框架的学习,本学习课程分为七个阶段,让大家学习不在迷茫今天主要进行Spring MVC 框架的基本讲解.

简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。由于其简单易用,目前常用来通过AJAX与后台进行交互。springMVC对于接收、发送JSON数据也提供了支持,并能方便的将JSON数据与对象进行相互转换。

环境准备

由于springMVC对JSON的支持是基于jackson的,因此需引入jar包

配置pom.xml

 <!-- Jackson -->
 <dependency>
 <groupId>org.codehaus.jackson</groupId>
 <artifactId>jackson-mapper-asl</artifactId>
 <version>1.9.4</version>
 </dependency>

对springMVC的处理器适配器注入JSON转换器

<!-- 处理器适配器配置 -->
 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
 <property name="messageConverters">
 <list>
 <!-- 配置jackson转换器 -->
 <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
 </list>
 </property>
 </bean>

若使用的是MVC注解驱动,则无需再单独配置

<mvc:annotation-driven></mvc:annotation-driven>

测试代码

@RequestBody注解可将请求的JSON数据自动转换为Controller方法的形参

@ResponseBody注解可将返回的对象转换成JSON数据输出

 @RequestMapping("/queryAccount.action")
 @ResponseBody
 //@RequestBody 前提:请求ContentType必须是application/json,不能是application/x-www-form-urlencoded或其它
 public Account queryAccount(@RequestBody User user) throws Exception {
 System.out.println(user.getUsername());
 System.out.println(user.getPassword());
 Account account = new Account();
 account.setId("123");
 account.setName("nlskyfree");
 account.setMoney("3423.43");
 return account;
 }

JSP页面,使用原生AJAX发出请求

需引入json2.js进行js上的JSON数据与对象的转换

<html>
<script type="text/javascript" src="/springMVC/json2.js"></script>
<script type="text/javascript">
var xmlHttp;
function updateData() {
 //4:响应已完成;您可以获取并使用服务器的响应了。
 if(xmlHttp.readyState == 4) {
 var response = xmlHttp.responseText;
 alert(response);
 var obj = JSON.parse(response);
 
 document.getElementById(3).value = obj.id;
 document.getElementById(4).value = obj.name;
 document.getElementById(5).value = obj.money;
 }
}
//AJAX提交数据
function submit() {
 //获得提交数据
 var username = document.getElementById(1).value;
 var password = document.getElementById(2).value;
 //发出AJAX请求
 xmlHttp = getXMLHttpRequest();
 var url = "/springMVC/queryAccount.action";
 //开启连接
 xmlHttp.open("POST", url, true);
 //返回函数
 xmlHttp.onreadystatechange = updateData;
 //设置数据为JSON格式
 xmlHttp.setRequestHeader("Content-Type", "application/json");
 var data = {"username": username, "password" : password};
 //发送请求
 xmlHttp.send(JSON.stringify(data));
}
//兼容各浏览器获取XMLHttpRequest
function getXMLHttpRequest() {
 var xmlHttp = false;
 try {
 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
 try {
 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (e2) {
 xmlHttp = false;
 }
 }
 if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
 xmlHttp = new XMLHttpRequest();
 }
 return xmlHttp;
}
</script>
<body>
<h2>Hello World!</h2>
用户名:<input id="1" name="username" type="text"/>
密码:<input id="2" name="password" type="password"/><br/>
<br/>
<input type="button" value="查 询" onclick="submit();"/><br/>
<br/>
账户编号<input id="3" type="text"/><br/>
账户名称<input id="4" type="text"/><br/>
账户金额<input id="5" type="text"/>
</body>
</html>

上一篇:springMVC入门(五)------统一异常处理

欢迎关注小编,小编将搜集最新的Java开发技术和资源与大家分享,欢迎大家与小编进行技术交流

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接