JavaWeb开发中Ajax技术、json与java实现List、Map数据直接传递的研究

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 plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.json;  
  2. public class User {  
  3.     String username;  
  4.     String password;  
  5.     public String getUsername() {  
  6.         return username;  
  7.     }  
  8.     public void setUsername(String username) {  
  9.         this.username = username;  
  10.     }  
  11.     public String getPassword() {  
  12.         return password;  
  13.     }  
  14.     public void setPassword(String password) {  
  15.         this.password = password;  
  16.     }      
  17. }  

再建一个servlet 程序

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.json;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.   
  8. import javax.servlet.ServletException;  
  9. import javax.servlet.http.HttpServlet;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12.   
  13. import net.sf.json.JSONArray;  
  14.   
  15. public class TestJson extends HttpServlet {  
  16.   
  17.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  18.             throws ServletException, IOException {  
  19.            doPost(request,response);  
  20.     }  
  21.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  22.             throws ServletException, IOException {  
  23.   
  24.         response.setContentType("text/html");     
  25.         String str= request.getParameter("name");//得到ajax传递过来的paramater  
  26.         System.out.print(str);  
  27.         PrintWriter out = response.getWriter();  
  28.         List list = new ArrayList();//传递List  
  29.         Map m=new HashMap();//传递Map      
  30.         User u1=new User();  
  31.         u1.setUsername("zah");  
  32.         u1.setPassword("123");  
  33.         User u2=new User();  
  34.         u2.setUsername("ztf");  
  35.         u2.setPassword("456");    
  36.         list.add(u1); //添加User对象        
  37.         list.add(u2);     //添加User对象    
  38.         
  39.         m.put("u1", u1);  
  40.         m.put("u2", u2);     
  41.   
  42.         JSONArray jsonArray2 = JSONArray.fromObject( list );  
  43.        //把list转化成转化成json对象   
  44.         JSONObject jo=JSONObject.fromObject(m);//转化Map对象为Json对象  
  45.         out.print(jsonArray2);//返给ajax请求  
  46.         out.print(jo);//返给ajax请求  
  47.     }  
  48. }  
  49. 配置好web.xml中的servlet映射,这一步就略了。  

3.建立ajax实现 (这里为了快速实现用的是jquery实现的)

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <script type="text/javascript" src="js/jquery.js"></script>  
  2.  <script type="text/javascript">  
  3.      function test(){  
  4.          $.ajax({   
  5.                 type:"POST", //请求方式  
  6.                 url:"testjson", //请求路径:${base}/类所在的命名空间/类名(配置文件中执行对应类的那个name),命名空间是在配置文件中定义。  
  7.                 cache: false,     
  8.                 data:"name=zah",  //传参  
  9.                 dataType: 'json',   //返回值类型  
  10.                success:function(json){        
  11.                     alert(json[0].username+" " json[0].password);    //弹出返回过来的List对象  
  12.                    }  
  13.                 });  
  14.       }  
  15. </script>  
  16.   </head>  
  17.   <body>  
  18.     <input type="button" name="b" value="测试" onclick=test()>  
  19.   </body>  

测试开始,点击按钮弹出zah 123 

json[0]就相当于u1对象 json[1]相当于u2对象,对于其属性的访问跟java对象一样,其他的Connection测试应该一样,访问Map的话直接把返回函数改成如下即可: 

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. success:function(json){       
  2.                alert(json.u1.username)  
  3.                }  

  直接跟上Key.属性即可访问Object对象。 

  后续会添加基于struts2框架的示例!

二、在JavaWeb开发中ajax+json+Struts2实现list传递实例讲解:

1、首先需要下载JSON依赖的jar包。它主要是依赖如下:

json-lib-2.2.2-jdk15

ezmorph-1.0.4

commons-logging-1.0.4

commons-lang-2.4

commons-collections-3.2.1

commons-beanutils

2、实例。

2.1、身份证错误信息Bean类(ErrorCondition.java)

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. **   
  2. *@Project: excel   
  3. *@Author: chenssy   
  4. *@Date2013-4-4   
  5. *@Copyright: chenssy All rights reserved.   
  6. */   
  7. public class ErrorCondition {   
  8. private String name; // 姓名   
  9. private String idCard; // 身份证   
  10. private String status; // 错误状态   
  11. private String message; // 错误信息   
  12. ErrorCondition(String name,String idCard,String status,String message){   
  13. this.name = name;   
  14. this.idCard = idCard;   
  15. this.status = status;   
  16. this.message = message;   
  17. }   
  18. public String getName() {   
  19. return name;   
  20. }   
  21. public void setName(String name) {   
  22. this.name = name;   
  23. }   
  24. public String getIdCard() {   
  25. return idCard;   
  26. }   
  27. public void setIdCard(String idCard) {   
  28. this.idCard = idCard;   
  29. }   
  30. public String getStatus() {   
  31. return status;   
  32. }   
  33. public void setStatus(String status) {   
  34. this.status = status;   
  35. }   
  36. public String getMessage() {   
  37. return message;   
  38. }   
  39. public void setMessage(String message) {   
  40. this.message = message;   
  41. }   
  42. }  
2.2、JSP页面(index.jsp)
[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>   
  2. <html>   
  3.     <head>   
  4.         <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.7.2.js"></script>   
  5.     </head>   
  6. <body>   
  7.     <input type="button" value="点我显示数据" id="clickMe">   
  8.     <table id="showTable" border="1">   
  9.         <tr>   
  10.             <td>姓名</td>   
  11.             <td>身份证</td>   
  12.             <td>错误状态</td>   
  13.             <td>错误信息</td>   
  14.         </tr>   
  15.     </table>   
  16.     <script>   
  17.         $("#clickMe").click( function(){   
  18.             var url = "json/jsonTest.action";   
  19.             $.ajax({   
  20.                     type:'get',   
  21.                     url:url,   
  22.                     dataType: 'json',   
  23.                     success:function(data){   
  24.                         $.each(data,function(i,list){   
  25.                             var _tr = $("<tr><td>"+list.name+"</td><td>"+   
  26.                             list.idCard+"</td><td>"+list.status+ "</td><td>"+list.message+"</td></tr>");   
  27.                             $("#showTable").append(_tr);   
  28.                     })  
  29.                 }  
  30.             })   
  31.         })  
  32.     </script>   
  33. </body>   
  34. </html>  

2.3、Action处理类(JsonTest_01.java)

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /**  
  2. *@Project: jsonTest  
  3. *@Author: chenssy  
  4. *@Date: 2013-4-5  
  5. *@Copyright: chenssy All rights reserved.  
  6. */   
  7. public class JsonTest_01 {   
  8. public String execute() throws IOException{   
  9. ErrorCondition r1 = new ErrorCondition("张三""4306821989021611""L""长度错误");   
  10. ErrorCondition r2 = new ErrorCondition("李四""430682198902191112","X""校验错误");   
  11. ErrorCondition r3 = new ErrorCondition("王五""""N""身份证信息为空");   
  12. List<ErrorCondition> list = new ArrayList<ErrorCondition>();   
  13. list.add(r1);   
  14. list.add(r2);   
  15. list.add(r3);   
  16. //将list转化成JSON对象   
  17. JSONArray jsonArray = JSONArray.fromObject(list);   
  18. HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);   
  19. response.setCharacterEncoding("UTF-8");   
  20. response.getWriter().print(jsonArray);   
  21. return null;   
  22. }   
  23. }   

2.4、struts.xml配置

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="GBK"?>   
  2. <!DOCTYPE struts PUBLIC   
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"   
  4. "http://struts.apache.org/dtds/struts-2.1.7.dtd">   
  5. <!-- 指定struts 2的配置文件的跟元素 -->   
  6. <struts>   
  7. <package name="json" namespace="/json" extends="struts-default">   
  8. <action name="jsonTest" class="com.json.action.JsonTest_01" method="execute"></action>   
  9. </package>   
  10. </struts>   

3、运行结果

开始页面如下:


当点击按钮后:


该博文转载自:http://zah5897.iteye.com/blog/692038          和            http://www.jb51.net/article/35492.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值