`

Jquer与json的结合运用

 
阅读更多
实例解析java + jQuery + json工作过程(登录)
2009年02月24日  |  9:55 下午 分类:Java, ajax, finance, jQuery, json, 教程, 项目  |  标签:ajax、Java、jQuery、json、json-lib、教程  |  4,688 views
本文主要讲解在java环境下使用jQuery进行JSON数据传送的交互过程

参考根据作者的账务管理系统(个人版) 源码下载 讲解


一、相关技术、工具简介

1、简单介绍一下JSON,JSON是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。已键值对形式表示数据,和java中的Map的数据存储形式相似,具体细节请参考http://www.json.org/json-zh.html。

2、对应后台JSON的数据处理工具json-lib,包含各种格式数据的工具类,比如:JavaBean、数组、集合(Collection)等,参考API文档。

3、jQuery框架中的数据表现形式,如果你熟悉jQuery的话就会发现jQuery的使用的数据传输都是JSON格式,比如我们经常使用的$.ajax方法:

$.ajax({
url : url,
data : {
id : chkValue
},
cache : false,
dataType : "json",
success : function(result){
alert(result);
}
);
其中 {…} 表示的就是JSON格式的数据

二、前台工作方式
为了能够容易理解以系统登录讲解,最后会以一个实例的方式讲解
1、登录页面
代码请参见 http://code.google.com/p/finance-p/source/browse/trunk/login.jsp

用户名:
<input id="loginName" name="loginName" size="20" type="text" />

密码:
<input id="password" name="password" size="20" type="password" />
2、登录javascript文件 login.js

/**
* 设置表单验证规则
*/
function regFormValidator() {
$.formValidator.initConfig({formid:"loginForm"});
$("#loginName").formValidator({
onshow : "请输入用户名",
onfocus : "用户名至少2个字,最多4个字"
}).inputValidator({
min : 1,
onerror : "你输入的用户名非法,请确认"
});

$("#password").formValidator({
onshow : "请输入密码"
}).inputValidator({
min : 6,
onerror : "密码在6位以上,请确认"
});
}

$(function() {
// 注册表单验证插件
regFormValidator();

$('#submit').click(function(){
// 验证输入的用户名、密码是否正确
var valid = jQuery.formValidator.pageIsValid('1');
if (valid) {
$(this).attr('value', '正在登录……').attr('disabled', true);
} else {
return;
}

// 发送请求
$.ajax({
url : 'login.do',
data : { loginName:$('#loginName').val(), password: $('#password').val() },
success : function(result){
// 根据result返回信息判断是否登录成功
if(result &amp;&amp; result == 'success') {
window.location.href = 'index.jsp';
} else {
alert('登录失败,用户名或密码错误,请重试!');
}
}
});

});
});
这样当点击“登录”按钮的时候触发ajax请求:

验证表单完整性
发送ajax请求到后台,值通过data键已JSON格式传送至后台
如果后台返回的result为success时表示登录成功,页面跳转至首页index.jsp
三、后台工作方式

后台要比前台操作复杂一些,以为涉及到数据库、编码或者一些业务逻辑

1、获得请求参数

有两种方式:

通过request.getParameter(”key”)的方式
通过json-lib工具包获取
这我们主要讲解怎么通过json-lib获取参数

首先我们来写一个公共的方法,可以返回一个net.sf.json.JSONObject对象,具体代码如下:

/**
* 读取请求参数转换JSONObject对象
*
* @param request HttpServletRequest 对象
* @return json格式的String对象
* @throws Exception
*/
@SuppressWarnings("unchecked")
protected JSONObject readJson(HttpServletRequest request) throws Exception {
JSONObject jsonObject = new JSONObject();
try {
Map parameterMap = request.getParameterMap();
                // 通过循环遍历的方式获得key和value并set到JSONObject中
Iterator paIter = parameterMap.keySet().iterator();
while (paIter.hasNext()) {
String key = paIter.next().toString();
String[] values = (String[])parameterMap.get(key);
jsonObject.accumulate(key, values[0]);
}
log.debug("从客户端获得json=" + jsonObject.toString());
} catch (Exception e) {
log.error("获取json数据出错,错误信息如下:nt" + e.getMessage());
e.printStackTrace();
throw e;
}
return jsonObject;
}
通过这个方法我们可以获得一个JSONObject对象,然后就可以通过key获得对应的value;

2、登录处理Action

public ActionForward login(ActionMapping mapping, ActionForm actionForm,
             HttpServletRequest request,HttpServletResponse response) throws Exception {
JSONObject jsonObject = readJson(request);
String name = jsonObject.getString("loginName");
String pass = jsonObject.getString("password");
try {
int loginFlag = userManager.validLogin(name, pass);
if (loginFlag == UserManager.LOGIN_SUCCESS) {
User user = userManager.getUserByNameAndPass(name, pass);
UserUtil.saveUser2Session(user, request);
log.info("用户&lt;" + user.getUserName()
                              + ",ip=" + request.getRemoteAddr() + "&gt;登录系统");
print(response, RESBONSE_SUCCESS);
} else if (loginFlag == UserManager.LOGIN_FAIL) {
print(response, RESBONSE_ERROR);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
解释:

在34行我们通过刚刚准备好的readJson方法获得一个JSONObject对象,接下来通过key获得用户名和密码,接下来就是业务逻辑的验证工作了,通过后我们向前台返回请求结果。
我们还需要一个小方法向前台写结果,如上面44、46行

protected void print(HttpServletResponse response, String info) throws IOException {
try {
response.getWriter().print(info);
} catch (IOException e) {
e.printStackTrace();
throw e;
}
}
这里有一点要说明,在获得输出流的时候有个小插曲,我在开发的时候使用的tomcat5.5.26版本,
当时的写法为:

response.getOutputStream().print(info);
后来源码开源后一个网友使用的tomcat6版本,说系统不能正常运行,后来他查到了原因,因为获得输出流时出了问题,
改成getWriter就没有问题了,集体也没有搞清除为什么会是这样……

基于java开发时会使用struts,struts需要返回一个ActionMapping对象,但是在ajax请求不需要返回特定页面,因为根本没有跳转页面的动作,解决办法很简单,直接return null就可以了

输出结果后jQuery的ajax的success方法就接收到了请求结果,然后就可以根据结果处理业务逻辑了

最近在修改一个项目 用到了JSON+JQUERY 小小的学习了一下
分享到:
评论

相关推荐

    jquery与json的结合

    ### jQuery与JSON的结合 #### 一、简介 在现代Web开发中,JavaScript已经成为不可或缺的一部分,而jQuery作为JavaScript的一个库,极大地简化了HTML文档遍历、事件处理、动画等操作,使得JavaScript编程更加简单...

    JQuery操作json的例子

    总结起来,jQuery 提供了丰富的功能来处理 JSON 数据,包括获取、解析、遍历以及与 DOM 操作结合。理解这些操作对于开发高效的 Web 应用至关重要。通过实践和运用这些知识,开发者可以更高效地进行前后端数据交互,...

    jquery与 json应用

    **jQuery与JSON应用详解** jQuery是一个轻量级的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。...在实际项目中,正确理解和灵活运用jQuery与JSON是提升开发效率的关键。

    运用Jquery插件Json2Template写的简单项目

    总结来说,Json2Template是一个强大的工具,它结合了jQuery的便利性和JSON的数据结构,使得前端开发人员能快速构建动态数据驱动的界面。通过掌握其模板语法和使用方式,我们可以提升项目的交互体验,提高开发效率。

    jquery+json实例

    综上所述,jQuery与JSON的结合使得Web开发中的数据交互变得简单而高效,无论是动态更新页面内容还是保存和读取数据,都是开发者不可或缺的工具。在实际项目中,根据具体需求灵活运用这些知识,可以显著提升开发效率...

    jquery+json实现页面无刷新分页

    "jQuery + JSON" 是一种常用的实现方式,它结合了 jQuery 的便利性和 JSON 的数据交换效率,使得在不重新加载整个页面的情况下,可以动态加载和展示分页内容。这篇博客将深入探讨如何利用这两种技术来创建一个功能...

    Jquery跨域Json请求处理

    跨域问题是前端开发中不可避免的一个挑战,通过合理运用JSONP等技术,可以在不违反浏览器安全策略的情况下,实现跨域数据的高效获取与处理。需要注意的是,在实际应用中应考虑多种跨域解决方案,并结合项目需求选择...

    Jquery+JSON+WebService

    当jQuery与JSON和WebService结合使用时,可以实现高效、灵活的客户端-服务器通信。例如,我们可以使用jQuery的$.ajax()或$.getJSON()方法发起一个异步请求到WebService接口,获取返回的JSON数据。服务器端处理请求后...

    jquery对json的视频教程

    总的来说,jQuery与JSON的结合使得前端开发者能更加便捷地处理和交互数据。通过理解并熟练运用这些方法,可以提高开发效率,提升Web应用的用户体验。在观看"jQuery对json的视频教程"时,会深入了解到这些知识点的...

    jquery 和JSON整合

    综上所述,jQuery结合JSON能方便地进行前后端数据交互,通过Ajax请求获取JSON数据,并在前端进行解析和处理。无论是简单的数据展示,还是复杂的交互逻辑,这种组合都提供了一种高效、简洁的解决方案。在实际项目中,...

    jquery+json小例子

    总结来说,jQuery与JSON的结合使用大大简化了Web应用中的数据交互。通过Ajax请求获取JSON数据,然后在客户端进行处理,可以实现动态更新页面、异步数据加载等功能。同时,jQuery提供的便利方法使得这些操作变得简单...

    jQuery Json v2.6.0

    当这两者结合,就诞生了jQuery JSON插件,它使得在jQuery中处理JSON数据变得更加便捷。本文将深入解析jQuery JSON v2.6.0版本,揭示其核心功能和使用方法。 首先,我们需要理解jQuery JSON的核心功能。这个插件主要...

    ajax(jquery+json)实现前端无刷新分类管理源码

    在本源码中,jQuery和JSON结合使用,实现了前端无刷新的分类管理功能。** **一、Ajax基础** Ajax的核心是浏览器对象XMLHttpRequest,它允许JavaScript在不重新加载页面的情况下向服务器发送异步请求。一个基本的...

    jQuery方法扩展:type, toJSON, evalJSON

    总的来说,理解并熟练运用jQuery的`type`、`toJSON`和`evalJSON`方法,能够提升我们在JavaScript和JSON数据处理方面的专业能力,从而在开发中更加高效地完成任务。随着技术的发展,虽然某些方法可能被新的API所取代...

    json + struts2 + 80个JQuery 效果 个例子

    总的来说,这个压缩包提供了一个全面的学习资源,帮助开发者深入理解并熟练运用JSON数据格式、Struts2框架和jQuery库。通过这些实例,你可以提高Web开发技能,尤其是处理动态交互和数据交换的能力。在实践中不断探索...

    strust2与json+jquery结合的注册用户验证

    综上所述,"strust2与json+jquery结合的注册用户验证"是一个综合运用了Struts2框架、JSON数据交换和jQuery前端技术的示例,涵盖了前后端交互、数据验证和页面跳转等多个环节,对于理解和实践Java web开发具有重要...

    struts jquery json案例

    在"Struts jQuery JSON案例"中,这三个技术的结合通常是这样的: 1. **前端**:使用jQuery库来处理用户交互,如按钮点击、表单提交等。当用户触发某个操作时,jQuery通过Ajax发送一个HTTP请求到服务器。 2. **Ajax...

    锋利的jquery 源码 及JsonViewer 工具

    结合《锋利的jQuery》和JsonViewer,开发者不仅可以掌握jQuery的精髓,还能更好地理解和处理与JSON相关的数据交互。在实际项目中,这些知识和工具的运用将大大提高开发效率,使得前端代码更加简洁、高效。同时,对于...

    jQuery基于JSON九宫格转盘特效.zip

    总的来说,这个jQuery基于JSON的九宫格转盘特效是一个结合了前端技术与动态交互的实例,展示了如何利用现代Web技术来提升用户体验。通过理解并实践这个代码,开发者可以学习到如何运用jQuery进行DOM操作、实现CSS...

    jQuery解析json格式数据示例

    总之,jQuery提供了强大的功能来处理JSON数据,结合`.each()`遍历方法,我们可以方便地读取、修改和操作JSON对象。同时,利用在线工具,可以进一步优化JSON数据的管理和使用,使开发工作更加高效。在实际项目中,...

Global site tag (gtag.js) - Google Analytics