JavaWeb开发中Ajax技术、json与java实现List、Map数据直接传递的研究
一、在JavaWeb开发中基于jquery框架来使用ajax技术,Json与后台servlet进行数据交互示例,下面示例中基于servlet技术,没有使用struts2等框架。
由于项目需要通过ajax得到后台的List对象、map对象里面的值,闲暇时间摸索了一下关于json接受List对象的方法,步骤如下:
1.首先下载json所以依赖的包, Json-lib 最新版json-lib-2.3-jdk15.jar,其官方网站是:http://json-lib.sourceforge.net/可以直接download,细心的你会发现其网站页面里面有提示它还需要其他包:
Json-lib requires(at least) the following dependencies in your classpath:
•jakartacommons-lang 2.4
•jakartacommons-beanutils 1.7.0
•jakartacommons-collections 3.2
•jakartacommons-logging 1.1.1
•ezmorph 1.0.6
下载地址分别是:
http://commons.apache.org/lang/
http://commons.apache.org/beanutils/
http://commons.apache.org/collections/
http://commons.apache.org/logging/
http://ezmorph.sourceforge.net/
2.首先先见一个小web项目
先建一个User类:
[java] view plaincopy
package com.json;
public class User {
String username;
String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
再建一个servlet 程序:
[java] view plaincopy
package com.json;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
public class TestJson extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
String str= request.getParameter("name");//得到ajax传递过来的paramater
System.out.print(str);
PrintWriter out = response.getWriter();
List list = new ArrayList();//传递List
Map m=new HashMap();//传递Map
User u1=new User();
u1.setUsername("zah");
u1.setPassword("123");
User u2=new User();
u2.setUsername("ztf");
u2.setPassword("456");
list.add(u1); //添加User对象
list.add(u2); //添加User对象
m.put("u1", u1);
m.put("u2", u2);
JSONArray jsonArray2 = JSONArray.fromObject( list );
//把list转化成转化成json对象
JSONObject jo=JSONObject.fromObject(m);//转化Map对象为Json对象
out.print(jsonArray2);//返给ajax请求
out.print(jo);//返给ajax请求
}
}
配置好web.xml中的servlet映射,这一步就略了。
3.建立ajax实现 (这里为了快速实现用的是jquery实现的)
[html] view plaincopy
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function test(){
$.ajax({
type:"POST", //请求方式
url:"testjson", //请求路径:${base}/类所在的命名空间/类名(配置文件中执行对应类的那个name),命名空间是在配置文件中定义。
cache: false,
data:"name=zah", //传参
dataType: 'json', //返回值类型
success:function(json){
alert(json[0].username+" " json[0].password); //弹出返回过来的List对象
}
});
}
</script>
</head>
<body>
<input type="button" name="b" value="测试" onclick=test()>
</body>
测试开始,点击按钮弹出zah 123
json[0]就相当于u1对象 json[1]相当于u2对象,对于其属性的访问跟java对象一样,其他的Connection测试应该一样,访问Map的话直接把返回函数改成如下即可:
[javascript] view plaincopy
success:function(json){
alert(json.u1.username)
}
直接跟上Key.属性即可访问Object对象。
分享到:
相关推荐
在Java中,我们可以使用`Map, List<Category>>`这样的数据结构来存储树形结构,其中`Integer`是菜单ID,`List<Category>`是该菜单的子菜单列表。 前端部分,可以使用JavaScript库如jQuery或者现代的前端框架如Vue、...
2. **JSON解析**:库中的API可以解析JSON文本,将JSON对象和数组转换为Java的Map和List,使开发者能轻松地访问和操作JSON数据。 3. **性能优化**:考虑到效率问题,"jsonplugin-0.32.jar"可能采用了高效的算法和...
6. **前后端交互**:JSON(JavaScript Object Notation)格式用于数据交换,Ajax实现页面无刷新更新,可能使用jQuery或其他JavaScript库进行前端处理。 7. **安全控制**:项目可能包含用户认证和授权功能,这可能...
将JSON-RPC-Java与jQuery EasyUI结合,可以通过Ajax调用JSON-RPC服务,获取或更新数据,实现前端与后端的实时交互。 1. **创建前端界面** - 使用EasyUI创建用户界面,如表格、表单等,并配置相应的事件监听器,如...
- **AJAX技术:** 了解异步请求的基本原理及其在Web开发中的应用。 #### 四、JavaWeb程序设计(3周) ##### 4.1 Java与XML - **XML基础知识:** 学习XML的基本语法及其与JSON的区别。 - **解析XML:** 掌握DOM和...
在JavaWeb应用中,JDBC(Java Database Connectivity)是用于与关系型数据库交互的重要技术,而MySQL是一款广泛使用的开源数据库管理系统。本案例将探讨如何利用JavaWeb中的JDBC与MySQL数据库来实现一个简单的通讯录...
- **集合框架**:理解Collection、List、Set、Map接口及其常见实现类,学习泛型和工具类的使用。 - **异常处理**:掌握异常的分类、抛出、捕获和自定义异常的创建。 6. **数据结构与排序**: - **排序算法**:...