关于android访问servlet 获取数据库数据的一般步骤 第二节
** android端通过服务器访问数据库并获得数据一般分为三个步骤。 **
1、第一步,服务端即servlet,通过jdbc连接数据库,获得表中部分或全部数据。
2、第二步,servlet将数据(一般为List数据集合)处理之后发送给android端。
3、第三步,android端获得数据后,解析成自己所需要的数据。
** 二、servlet处理list数据发送给android端**
这个步骤笔者采用的是gson框架进行list数据的处理,所需材料:myeclipse,tomcat,gson-2.7;
DataOutputStream dos;
List<Map<String, Object>> mDataList;
dos=new DataOutputStream(response.getOutputStream());//response是servlet中的HttpServletResponse对象。
String sqlString="select * from user"; //user是自定义表名
mDataList=BaseDao.findList(sqlString);
if(mDataList!=null){
Gson gson=new Gson();
String reString=gson.toJson(mDataList);
System.out.println("gson数据长度"+reString.length());
dos.writeUTF(reString);
}else{
dos.writeUTF("NO");
}
如果一张User表是这样的
name | pass |
---|---|
user1 | pass1 |
user2 | pass2 |
那么使用gson封装后的数据就是这样的
[{“name”:“user1”,“pass”:“pass1”},{“name”:“user2”,“pass”:“pass2”}]
需要注意的是,这是个String类型的数据;
** 三、android端解析数据gson封装的数据**
这个步骤笔者采用的是gson框架进行返回数据的处理,所需材料:AndroidStudio,gson-2.7;
同样的,我们在android端采用同样的步骤来将返回数据解析为list数据。
在Gson() 中,有一个gson.fromJson(json, typeOfT)方法,第一个参数为String的带解析json语句,第二个参数可以是一个Type对象,也可以是一个Class对象。
例如,如果要解析为int对象,则写法为:
Gson gson=new Gson();
int a=gson.fromJson( json , int.class );
但是这种方法没法解析list对象,所以Gson()中提供了TypeToken()类来实现这种需求。
Gson gson=new Gson();
List<Object> list=gson.fromJson( json , new TypeToken<List<Object>>( ) { }.getType() );
当这一步完成后,android端就获得了表格中的部分或全部数据,之后便是android端的自定义ListView,或者ReclerView这些操作了。