实例解析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 && 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("用户<" + user.getUserName()
+ ",ip=" + request.getRemoteAddr() + ">登录系统");
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结合实现AJAX的简单步骤。在实际开发中,还需要关注数据安全、性能优化等问题。例如,可以使用缓存策略减少不必要的请求,或者使用异步加载技术提高页面响应速度。通过这样的实践,你可以更...
### jQuery与JSON及AJAX的结合应用 #### 一、引言 随着Web技术的发展,前端框架和库的出现极大地简化了开发流程。其中,jQuery因其简洁易用的特点,在前端开发领域占据了重要的地位。本文将详细介绍如何利用jQuery...
而Jquery库提供了一系列封装好的Ajax函数,如$.get(), $.post(), $.ajax(), 和$.getJSON(),这些函数简化了前端开发者与后端数据交互的过程。 ### 1. $.get() `$.get()`函数是最简单的一种异步请求方式,它发送一...
2. **解析与渲染**:jQuery的`$.parseJSON()`(现在已弃用,推荐使用`$.getJSON()`或`$.ajax()`的dataType设置为'json')方法用于解析JSON字符串为JavaScript对象,然后可以在前端动态更新DOM。 **Ajax级联操作** ...
asp+ajax(jQuery)实例($.ajax()、$.post()、$.get()、$.getJSON()四种模式可选 Ajax是目前比较流行的网站建设技术,尤其作为网站建设者来说,掌握它十分有必要,如果用原生Javascript开发则比较困难,还好有强大的...
当jQuery与JSON结合使用时,它们能够实现数据的高效传输和动态页面更新,从而提升用户体验。 首先,我们来详细了解一下jQuery。jQuery的核心功能包括选择器(用于选取HTML元素)、DOM操作(如添加、删除或修改元素...
在Web开发中,jQuery经常用于与服务器进行异步通信(Ajax),而JSON作为数据交换格式,常常是Ajax通信中的数据载体。jQuery提供了方便的方法来处理JSON数据,包括`$.getJSON()`和`$.ajax()`等函数,可以方便地从...
总结来说,"jQuery+get/post+Ajax+Json"的组合是现代Web开发中常用的数据交互技术,它使得前端可以轻松地与后端进行JSON数据的交换,提升了用户体验,降低了服务器负载。通过jQuery的便捷API,我们可以快速实现异步...
总结来说,JQuery AJAX 提供了与服务器异步交互的能力,而 JSON 则是高效的数据交换格式。两者结合使用,可以实现高效的前后端数据通信,提升用户体验,减少不必要的页面刷新。在实际项目中,了解并熟练掌握这两项...
jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换...
关于"jQuery读取json数据"这个主题,我们将会深入探讨如何利用jQuery的Ajax功能来高效地加载和解析JSON格式的数据,以及这样做带来的优势。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于...
通过本教程,你将能够掌握如何结合JSP、jQuery和JSON来实现高效的AJAX交互,从而提升用户体验,创建更加流畅和响应式的Web应用。在学习过程中,建议查阅相关文档和教程,同时实践编写代码,加深理解和应用。
在"ajax_struts_jquery_json级联菜单"的场景中,我们将看到如何利用这四种技术协同工作来创建这样的功能。 首先,Struts框架在后台处理业务逻辑。当用户在前端选择了一个父级菜单项后,Struts Action会接收到这个...
本文将深入探讨jQuery中的JSON使用,结合具体的示例代码JSONObjectDemo,帮助读者理解并掌握这一技能。 首先,JSON是一种基于JavaScript语法的数据格式,它可以表示复杂的数据结构,包括对象和数组。在jQuery中,...
本项目"一个页面实现Ajax效果的增删改查-JQuery+Json版.zip"正是展示了如何利用jQuery库和JSON数据格式在单一页面上实现动态的数据操作,包括添加、删除、修改和查询功能。 首先,jQuery是一个轻量级的JavaScript库...
**三、AJAX与JSON结合** 在.NET环境下,使用AJAX和JSON可以实现高效的前后端通信。.NET提供了System.Web.Script.Serialization命名空间下的JavaScriptSerializer类,用于将.NET对象序列化为JSON字符串,或者将JSON...
$.ajax json 数据传递方法是使用 jQuery 库实现的异步数据传递方法,通过将 JSON 数据封装在 $.ajax 对象中,并将其作为参数传递给服务器端脚本,以实现客户端和服务器端之间的数据交互。 在前台代码中,首先定义了...
在这个“jquery ajax json”的例子中,我们将探讨如何结合这三者实现动态的数据加载。 首先,`display.html`是主页面,它包含HTML结构以及调用jQuery AJAX函数的JavaScript代码。在这个HTML文件中,通常会有一个...
本项目"一个页面实现Ajax效果的增删改查-JQuery+Json版"正是利用了这一技术,结合jQuery库和JSON数据格式,为用户提供了一个在一个页面上完成数据增、删、改、查功能的示例。 **jQuery** 是一个轻量级的JavaScript...
在实际应用中,例如,当需要从服务器获取JSON数据并将其显示在网页上时,`$.ajax`或`$.getJSON`等jQuery方法可以用来发送Ajax请求。收到JSON响应后,使用`$.parseJSON`将JSON字符串解析成JavaScript对象,然后可以...