jsp 产生json数据

--服务端代码

服务器端主要代码:

1.首先构建一个Person类,用来保存用户信息

[java] view plaincopy
  1. public class Person   
  2.     private String name;  
  3.     private String address;  
  4.     private Integer age;  
  5.     public Person() {  
  6.         super();  
  7.     }  
  8.   
  9.     public Person(String name, String address, Integer age) {  
  10.         super();  
  11.         this.name = name;  
  12.         this.address = address;  
  13.         this.age = age;  
  14.     }  
  15.   
  16.     public String getName() {  
  17.         return name;  
  18.     }  
  19.   
  20.     public void setName(String name) {  
  21.         this.name = name;  
  22.     }  
  23.   
  24.     public String getAddress() {  
  25.         return address;  
  26.     }  
  27.   
  28.     public void setAddress(String address) {  
  29.         this.address = address;  
  30.     }  
  31.   
  32.     public Integer getAge() {  
  33.         return age;  
  34.     }  
  35.   
  36.     public void setAge(Integer age) {  
  37.         this.age = age;  
  38.     }  
  39.   
  40. }  

2.服务器端的service类

[java] view plaincopy
  1. import java.io.PrintWriter;  
  2. import java.sql.*;  
  3. import java.util.*;  
  4.         public class JsonService {  
  5.     public static List<Person> getListPerson(){  
  6.           
  7.         String a,b,allString = "";  
  8.         int c = 0;  
  9.         List<Person> mLists = new ArrayList<Person>();  
  10. //      List<Person> mLists = new ArrayList<Person>();  
  11. //      mLists.add(new Person("临风", "北京", 20));  
  12.         System.out.println(mLists);   
  13.         try {  
  14.             Class.forName("com.mysql.jdbc.Driver");//链接数据库  
  15.             Connection conn = DriverManager.getConnection(  
  16.                     "jdbc:mysql://127.0.0.1:3306/json""root" , "123456");  
  17.             Statement stmt = conn.createStatement();  
  18.             ResultSet rs = stmt.executeQuery("select * from people");//遍历数据库  
  19.   
  20.             Person p = null;  
  21.               
  22.             while(rs.next())  
  23.             {  
  24.                   
  25.                 System.out.println(rs.getString(1) + "\t"  
  26.                         + rs.getString(2) + "\t"  
  27.                         + rs.getInt(3));  
  28.                 a = rs.getString(1);  
  29.                 b = rs.getString(2);  
  30.                 c = rs.getInt(3);  
  31.       
  32.                 mLists.add(new Person(a, b, c));//添加到List中  
  33.             }  
  34.             System.out.println(mLists);       
  35.   
  36.         }catch(Exception e){  
  37.             System.out.println(e);  
  38.             e.printStackTrace();  
  39.             return mLists;  
  40.         }  
  41. //      finally{  
  42. //          return mLists;  
  43. //      }  
  44.         System.out.println(mLists);   
  45.         return mLists;  
  46.           
  47.     }  
  48.         //测试用主函数  
  49.     public static void main(String[] args) throws Exception  
  50.     {  
  51.         String str[] = null;  
  52.   
  53.         JsonService con = new JsonService();  
  54.         List<Person> temp = con.getListPerson();  
  55.           
  56. //      System.out.println(temp.);  
  57.   
  58. //      str = temp.split(" ");  
  59. //      for(int i = 0 ; i < str.length ; i++){  
  60. //          System.out.println(str[i]);  
  61. //      }  
  62. //      System.out.println(str.length);  
  63.     }  
  64.   
  65. }  

3.服务器端servlet类,接受android端的请求,并且将List中的Person数据转换为Json的格式,实现Json的数据传输

[java] view plaincopy
  1. import java.io.IOException;  
  2. import java.io.PrintWriter;  
  3. import java.util.List;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServlet;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8. import com.jiangqq.bean.Person;  
  9. import com.jiangqq.csdn.JsonService;  
  10.   
  11.   
  12. public class JsonServlet extends HttpServlet {  
  13.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{  
  14.         response.setContentType("text/html");  
  15.         response.setCharacterEncoding("UTF-8");  
  16.   
  17.         try{  
  18.             PrintWriter out = response.getWriter();  
  19.             List<Person> persons = JsonService.getListPerson();//返回JsonService的数据       
  20.   
  21.             StringBuffer sb = new StringBuffer();//数据缓存  
  22.             sb.append('[');  
  23.   
  24.             for (Person person : persons) {//person.getName(),person.getAddress()获得姓名,地址,一些符号转换为char  
  25.                 //锁定输出=> {"name":"姓名","address":"地址","age":年龄},  
  26.                 sb.append('{').append("\"name\":").append("\""+person.getName()+"\"").append(",");  
  27.                 sb.append("\"address\":").append("\""+person.getAddress()+"\"").append(",");  
  28.                 sb.append("\"age\":").append(person.getAge());  
  29.                 sb.append('}').append(",");  
  30.             }  
  31.             sb.deleteCharAt(sb.length() - 1);  
  32.             sb.append(']');  
  33.             out.write(new String(sb));  
  34.             out.flush();  
  35.             out.close();//关闭  
  36.         }catch(Exception e){  
  37.             System.out.println(e);  
  38.             e.printStackTrace();  
  39.         }  
  40.     }  
  41.   
  42.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  43.         doGet(request, response);  
  44.     }  
  45.   
  46.   
  47. }  

环境搭建:

1.在Tomcat 7.0\webapps\JsonWeb\WEB-INF\lib  目录中加入了mysql-connector-java-5.0.8-bin.jar以及servlet-api.jar

2.然后在主目Tomcat 7.0\webapps\JsonWeb录的index.jsp中加入引用包的代码

[java] view plaincopy
  1. <%@ page import="java.util.*"%>    
  2. <%@ page import="java.sql.*"%>     


结果测试:在浏览器输入localhost:8080/JsonWeb/JsonServlet,返回格式化好的json数据

--客户端代码

1.客户端文件,JsonParse,Json文件解析

[java] view plaincopy
  1. import java.io.ByteArrayOutputStream;  
  2. import java.io.InputStream;  
  3. import java.net.HttpURLConnection;  
  4. import java.net.URL;  
  5. import java.nio.charset.Charset;  
  6. import java.util.ArrayList;  
  7. import java.util.List;  
  8.   
  9. import org.json.JSONArray;  
  10. import org.json.JSONObject;  
  11.   
  12. import com.jiangqq.bean.Person;  
  13.   
  14. public class JsonParse {  
  15.     /** 
  16.      * 解析Json数据 
  17.      *  
  18.      * @param urlPath 
  19.      * @return mlists 
  20.      * @throws Exception 
  21.      */  
  22.   
  23.     public static List<Person> getListPerson(String urlPath) throws Exception {  
  24.         List<Person> mlists = new ArrayList<Person>();  
  25.         byte[] data = readParse(urlPath);  
  26.         JSONArray array = new JSONArray(new String(data));  
  27.         for (int i = 0; i < array.length(); i++) {  
  28.             JSONObject item = array.getJSONObject(i);  
  29.             String name = item.getString("name");  
  30.             String address = item.getString("address");  
  31.             int age = item.getInt("age");  
  32.             mlists.add(new Person(name, address, age));  
  33.         }  
  34.         return mlists;  
  35.     }  
  36.   
  37.     /** 
  38.      * 从指定的url中获取字节数组 
  39.      *  
  40.      * @param urlPath 
  41.      * @return 字节数组 
  42.      * @throws Exception 
  43.      */  
  44.     public static byte[] readParse(String urlPath) throws Exception {  
  45.         ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
  46.         byte[] data = new byte[1024];  
  47.         int len = 0;  
  48.         URL url = new URL(urlPath);  
  49.         HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  50.         InputStream inStream = conn.getInputStream();  
  51.   
  52.         while ((len = inStream.read(data)) != -1) {  
  53.             outStream.write(data, 0, len);  
  54.   
  55.         }  
  56.         inStream.close();  
  57.         return outStream.toByteArray();  
  58.   
  59.     }  
  60. }  

2.客户端主要类,MainActivity,发送请求


[java] view plaincopy
  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4.   
  5. import com.jiangqq.bean.Person;  
  6. import com.jiangqq.util.JsonParse;  
  7.   
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10. import android.util.Log;  
  11. import android.view.View;  
  12. import android.view.View.OnClickListener;  
  13. import android.widget.Button;  
  14. import android.widget.ListView;  
  15. import android.widget.SimpleAdapter;  
  16. import android.widget.Toast;  
  17.   
  18. public class MainActivity extends Activity {  
  19.     private Button mButton;  
  20.     private ListView mListView;  
  21.     private static final String urlPath = "http://192.168.1.100:8080/JsonWeb/JsonServlet";  
  22.     private static final String TAG = "MainActivity";  
  23.     private List<Person> persons;  
  24.   
  25.     @Override  
  26.     public void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.main);  
  29.         mButton = (Button) findViewById(R.id.button1);  
  30.         mListView = (ListView) findViewById(R.id.listView1);  
  31.         mButton.setOnClickListener(new MyOnClickListener());  
  32.     }  
  33.   
  34.     private class MyOnClickListener implements OnClickListener {  
  35.         @Override  
  36.         public void onClick(View v) {  
  37.             try {  
  38.                 // 得到Json解析成功之后数据  
  39.                 persons = JsonParse.getListPerson(urlPath);  
  40.                 List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();  
  41.                 for (int i = 0; i < persons.size(); i++) {  
  42.                     HashMap<String, Object> map = new HashMap<String, Object>();  
  43.                     map.put("name", persons.get(i).getName());  
  44.                     map.put("address", persons.get(i).getAddress());  
  45.                     map.put("age", persons.get(i).getAge());  
  46.                     data.add(map);  
  47.                 }  
  48.                 SimpleAdapter _Adapter = new SimpleAdapter(MainActivity.this,  
  49.                         data, R.layout.listview_item, new String[] { "name",  
  50.                                 "address""age" }, new int[] { R.id.textView1,  
  51.                                 R.id.textView2, R.id.textView3 });  
  52.                 mListView.setAdapter(_Adapter);  
  53.             } catch (Exception e) {  
  54.                 Toast.makeText(MainActivity.this"解析失败"2000);//在手机上显示提示Toast,2秒  
  55.                 Log.i(TAG, e.toString());//DDMS中显示提示  
  56.   
  57.             }  
  58.         }  
  59.     }  
  60. }  


3.同上一篇的,Person构造的数据类

[java] view plaincopy
  1. package com.jiangqq.bean;  
  2.   
  3. public class Person {  
  4.     private String name;  
  5.     private String address;  
  6.     private Integer age;  
  7.   
  8.     public Person() {  
  9.         super();  
  10.     }  
  11.   
  12.     public Person(String name, String address, Integer age) {  
  13.         super();  
  14.         this.name = name;  
  15.         this.address = address;  
  16.         this.age = age;  
  17.     }  
  18.   
  19.     public String getName() {  
  20.         return name;  
  21.     }  
  22.   
  23.     public void setName(String name) {  
  24.         this.name = name;  
  25.     }  
  26.   
  27.     public String getAddress() {  
  28.         return address;  
  29.     }  
  30.   
  31.     public void setAddress(String address) {  
  32.         this.address = address;  
  33.     }  
  34.   
  35.     public Integer getAge() {  
  36.         return age;  
  37.     }  
  38.   
  39.     public void setAge(Integer age) {  
  40.         this.age = age;  
  41.     }  
  42.   
  43.     @Override  
  44.     public String toString() {  
  45.         return "Person [name=" + name + ", address=" + address + ", age=" + age  
  46.                 + "]";  
  47.     }  
  48.       
  49.       
  50.   
  51. }  


4.AndroidManifest.xml别忘记添加

[java] view plaincopy
  1. <uses-permission android:name="android.permission.INTERNET" />  

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.jiangqq.csdn"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk android:minSdkVersion="8" />  
  8.   
  9.     <application  
  10.         android:icon="@drawable/ic_launcher"  
  11.         android:label="@string/app_name" >  
  12.         <activity  
  13.             android:name=".MainActivity"  
  14.             android:label="@string/app_name" >  
  15.             <intent-filter>  
  16.                 <action android:name="android.intent.action.MAIN" />  
  17.   
  18.                 <category android:name="android.intent.category.LAUNCHER" />  
  19.             </intent-filter>  
  20.         </activity>  
  21.     </application>  
  22.   
  23.     <uses-permission android:name="android.permission.INTERNET" />  
  24.   
  25. </manifest>  


posted @ 2014-04-13 00:31  酱包  阅读(941)  评论(0编辑  收藏  举报