- 浏览: 1031144 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (605)
- 数据挖掘 (22)
- spring (40)
- 工具使用 (39)
- java (137)
- JavaScript (40)
- webwork (12)
- web (120)
- 资源 (7)
- SSH (5)
- oracle (20)
- J2ME (1)
- 环境配置 (37)
- 项目管理 (29)
- mysql (14)
- struts (4)
- 项目总结 (27)
- ibatis学习 (33)
- 学习计划 (2)
- 缓存 (7)
- 重构 (3)
- Android (1)
- jquery (12)
- UML (3)
- 用户体验 (4)
- 习惯 (7)
- sakai (1)
- urlrewrite (4)
- rss (5)
- C plus plus (5)
- 算法 (5)
- 海量数据处理 (7)
- office(word、excel) (1)
- 面试题 (3)
- solr (8)
- 大数据 (2)
最新评论
-
hujin19861102:
截图看不见,最后一个webwrok的配置看不见
Ext+Webwork+Json 实现分页表格查询效果 -
蜗牛笔:
弱弱的问一句,要是分出来的词在词典中没有,那么两部分的pos- ...
ICTCLAS 中科院分词系统 -
weipeng1986:
授人予鱼不如授人予鱼,我想问你的是你是怎么总结的。比如第四种情 ...
JAVA中字符串连接效率的测试 -
xiaoqiang2008:
执行两次的原因是什么,好像楼主没弄清楚啊!是不是在web.xm ...
关于Spring中用quartz定时器在定时到达时同时执行两次的问题 -
Kent_Mu:
...
ibatis-dynamic的用法
1.服务器端代码样例:
public class VideoListAction extends Action { private VideoService service = new VideoServiceBean(); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //得到最新的视频资讯 List<Video> videos = service.getLastVideos(); VideoForm formbean = (VideoForm)form; if("json".equals(formbean.getFormat())) { //构建json字符串 StringBuilder json = new StringBuilder(); json.append('['); for(Video video : videos) { // 需要构造的形式是{id:76,title:"xxxx",timelength:80} json.append('{'); json.append("id:").append(video.getId()).append(','); json.append("title:\"").append(video.getTitle()).append("\","); json.append("timelength:").append(video.getTime()); json.append('}').append(','); } json.deleteCharAt(json.length()-1); json.append(']'); //把json字符串放置于request request.setAttribute("json", json.toString()); return mapping.findForward("jsonvideo"); } else { request.setAttribute("videos", videos); return mapping.findForward("video"); } } }
public class VideoServiceBean implements VideoService { public List<Video> getLastVideos() throws Exception { //理论上应该查询数据库 List<Video> videos = new ArrayList<Video>(); videos.add(new Video(78, "喜羊羊与灰太狼全集", 90)); videos.add(new Video(78, "实拍舰载直升东海救援演习", 20)); videos.add(new Video(78, "喀麦隆VS荷兰", 30)); return videos; } }
public class VideoListAction extends Action { private VideoService service = new VideoServiceBean(); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //得到最新的视频资讯 List<Video> videos = service.getLastVideos(); VideoForm formbean = (VideoForm)form; if("json".equals(formbean.getFormat())) { //构建json字符串 StringBuilder json = new StringBuilder(); json.append('['); for(Video video : videos) { // 需要构造的形式是{id:76,title:"xxxx",timelength:80} json.append('{'); json.append("id:").append(video.getId()).append(','); json.append("title:\"").append(video.getTitle()).append("\","); json.append("timelength:").append(video.getTime()); json.append('}').append(','); } json.deleteCharAt(json.length()-1); json.append(']'); //把json字符串放置于request request.setAttribute("json", json.toString()); return mapping.findForward("jsonvideo"); } else { request.setAttribute("videos", videos); return mapping.findForward("video"); } } }
2.客户端:使用XML方式与JSON方式返回数据
public class VideoService { /** * 以XML方式返回获取最新的资讯 * @return * @throws Exception */ public static List<Video> getLastVideos() throws Exception { //确定请求服务器的地址 //注意在Android模拟器中访问本机服务器时不可以使用localhost与127字段 //因为模拟器本身是使用localhost绑定 String path = "http://192.168.1.100:8080/videoweb/video/list.do"; //建立一个URL对象 URL url = new URL(path); //得到打开的链接对象 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置请求超时与请求方式 conn.setReadTimeout(5*1000); conn.setRequestMethod("GET"); //从链接中获取一个输入流对象 InputStream inStream = conn.getInputStream(); //对输入流进行解析 return parseXML(inStream); } /** * 解析服务器返回的协议,得到资讯 * @param inStream * @return * @throws Exception */ private static List<Video> parseXML(InputStream inStream) throws Exception { List<Video> videos = null; Video video = null; //使用XmlPullParser XmlPullParser parser = Xml.newPullParser(); parser.setInput(inStream, "UTF-8"); int eventType = parser.getEventType();//产生第一个事件 //只要不是文档结束事件 while(eventType!=XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: videos = new ArrayList<Video>(); break; case XmlPullParser.START_TAG: //获取解析器当前指向的元素的名称 String name = parser.getName(); if("video".equals(name)) { video = new Video(); //把id属性写入 video.setId(new Integer(parser.getAttributeValue(0))); } if(video!=null) { if("title".equals(name)) { //获取解析器当前指向元素的下一个文本节点的值 video.setTitle(parser.nextText()); } if("timelength".equals(name)) { //获取解析器当前指向元素的下一个文本节点的值 video.setTime(new Integer(parser.nextText())); } } break; case XmlPullParser.END_TAG: if("video".equals(parser.getName())) { videos.add(video); video = null; } break; } eventType = parser.next(); } return videos; } /** * 以Json方式返回获取最新的资讯,不需要手动解析,JSON自己会进行解析 * @return * @throws Exception */ public static List<Video> getJSONLastVideos() throws Exception { // List<Video> videos = new ArrayList<Video>(); // String path = "http://192.168.1.100:8080/videoweb/video/list.do?format=json"; //建立一个URL对象 URL url = new URL(path); //得到打开的链接对象 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置请求超时与请求方式 conn.setReadTimeout(5*1000); conn.setRequestMethod("GET"); //从链接中获取一个输入流对象 InputStream inStream = conn.getInputStream(); //调用数据流处理方法 byte[] data = StreamTool.readInputStream(inStream); String json = new String(data); //构建JSON数组对象 JSONArray array = new JSONArray(json); //从JSON数组对象读取数据 for(int i=0 ; i < array.length() ; i++) { //获取各个属性的值 JSONObject item = array.getJSONObject(i); int id = item.getInt("id"); String title = item.getString("title"); int timelength = item.getInt("timelength"); //构造的对象加入集合当中 videos.add(new Video(id, title, timelength)); } return videos; } }
public class StreamTool { /** * 从输入流中获取数据 * @param inStream 输入流 * @return * @throws Exception */ public static byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len=inStream.read(buffer)) != -1 ){ outStream.write(buffer, 0, len); } inStream.close(); return outStream.toByteArray(); } }
public class MainActivity extends Activity { private ListView listView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取到ListView对象 listView = (ListView)this.findViewById(R.id.listView); try { //通过 List<Video> videos = VideoService.getLastVideos(); //通过Json方式获取视频内容 //List<Video> videos2 = VideoService.getJSONLastVideos(); // List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>(); //迭代传入 for(Video video : videos) { //把video中的数据绑定到item中 HashMap<String, Object> item = new HashMap<String, Object>(); item.put("id", video.getId()); item.put("title", video.getTitle()); item.put("timelength", "时长:"+ video.getTime()); data.add(item); } //使用SimpleAdapter处理ListView显示数据 SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item, new String[]{"title", "timelength"}, new int[]{R.id.title, R.id.timelength}); // listView.setAdapter(adapter); } catch (Exception e) { Toast.makeText(MainActivity.this, "获取最新视频资讯失败", 1).show(); Log.e("MainActivity", e.toString()); } } }
发表评论
-
fork/join框架
2017-03-09 11:03 461http://blog.csdn.net/ye1992/art ... -
protobuffer
2017-03-09 10:54 613http://blog.csdn.net/antgan/art ... -
整理上传代码容易忽略的注意事项
2013-08-31 11:28 1086每个公司都有自己的代码代码上传流程:如果打包发布的话,是不存 ... -
mysql版本升级引发的问题
2013-05-16 15:25 1622问题描述: 1. ibatis 中 mysql语 ... -
网站的记住密码功能设计
2013-02-27 19:09 1273http://greenyouyou.blog.163 ... -
大型网站架构演变之路
2013-02-27 19:08 1110http://www.cnblogs.com/ivanjack ... -
使用Filter统计Java(J2EE)的web程序http请求响应时间
2013-02-27 19:07 1352http://www.cnblogs.com/ivan ... -
java bean与xml相互转换
2013-02-06 10:27 2008最近在做的项目,在各个平台之间需要大量传输数据,且结构比较 ... -
java 反射
2013-01-14 18:21 789http://www.cnblogs.com/rollenh ... -
字符串替换
2012-12-17 11:17 1119高效的字符串模式替换实现效果如下 String str ... -
利用Freemarker实现表到功能界面的一键生成
2012-11-22 18:03 981利用Freemarker实现表到功能界面的一键生成 h ... -
ibatis in ##的问题
2012-11-02 13:25 789http://www.hake.cc/a/biancheng/ ... -
ibatis缓存强制刷新与命中率
2012-10-19 19:06 1360缓存强制刷新: // spring注入 private Sq ... -
eclipse 的一些设置
2012-08-16 22:06 17221. 控制台信息太多,程序跑完后只能保留最后的一部分之前的 ... -
jdk1.5 System.arraycopy与jdk1.6 中Arrays.copyOf()&Arrays.copyOfRange()
2012-08-16 21:56 3242在JDK1.5的类System类中有方法 ... -
Eclipse报Java heap space错误的解决方案
2012-08-16 16:43 12031当运行大数量的数据时: (1) 如果是java 应用程 ... -
求两个字符串的最大公共字符串
2012-08-10 20:41 1030http://blog.csdn.net/wangcj625/ ... -
ffmpeg 截取视频 播放中的图片
2012-06-19 09:14 1276http://www.cnblogs.com/live365w ... -
memcached 项目中的使用
2012-06-13 09:29 1027http://ljh2008.iteye.com/blog/6 ... -
Memcached的CAS协议
2012-06-12 21:26 2350Memcached于1.2.4版本新增CAS(Check a ...
相关推荐
http请求网络的demo,实现httpUrlConnection与httpClient两种请求方式,并对返回数据进行解析,解析xml和JSON两种格式的数据。
// 下面对获取到的输入流进行读取 reader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { ...
使用HttpURLConnection AsyncTask访问webservice接口(返回json字符串).rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
第一步:根据指定的URL从google 服务器上获得包含地址的json格式的数据(其还提供xml格式的,但json解析效率比xml高) private static StringBuffer getJSONData(String urlPath){ try { URL url = new URL(urlPath...
s 计算机科学与技术系 实 验 报 告 专业名称 计算机科学与技术 课程名称 Android嵌入式软件开发 项目名称 网络数据与服务 班 级 学 号 姓 名 同组人员 无 实验日期 2016.10.18 一、实验目的与要求: 【实验目的】 ...
在EditText中输入待查询号码,获取号码后在子线程中使用HttpUrlconnection获取JSON数据,之后进行解析; 数据获取完成后,在主线程中更新UI,显示获取的号码归属地信息。 布局文件 <?xml version=1.0 encoding=...
5.3.3 获取另一个界面返回结果 5.4 小结 练习 第6章 Android数据存储与共享 6.1 数据存储与共享方式概述 6.2 首选项信息 6.2.1 私有数据存储 6.2.2 公有数据存储与共享 6.3 数据文件 6.3.1 内存...
1、提供简明的网络操作API,包括get / post / postJson / postXml / postSoapXml / postFormData / downloadFile / uploadFile等。 2、downloadFile支持断点续传。 3、默认网络操作都为异步方式,提供完成/...
Android版本更新实用的Demo,主要用到了HttpURLConnection、Xml PULL解析(其中也提供了JSON格式的解析)、丰富的辅助类、多线程下载与断点续传,界面虽然丑点但比较实用。如果你下载了该资源无法运行的话,别急着...
HttpUrlConnection,通过post方式提交数据。通过报文(xml)方式提交数据,作为传输的载体,转换成json,赋值到map,传输数据。可以通过SoapUI进行测试。
12.2 JSON格式 12.2.1 基本类型 12.2.2 数组和集合 12.2.3 类对象 12.3 JSON解析 12.4 Gson 12.4.1 简单对象类型转换 12.4.2 数组和集合类型转换 12.5 xStream 12.6 本章小结 第四篇 Android应用开发案例 第13章 ...
4.1.5 启动其他Activity并返回结果 185 4.2 Activity的回调机制 189 4.3 Activity的生命周期 190 4.3.1 Activity的生命周期演示 190 4.3.2 Activity与Servlet的相似性与 区别 194 4.4 本章小结 195 ...
第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 ...
第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 ...
高效的JSON和XML数据模型,用于HTTP响应和请求内容的解析和序列化。 JSON和XML库也可以完全插入,并且包括对支持和Android的GSON JSON库。 该库支持以下Java环境: Java 7或更高版本 Android 4.4(奇巧猫) ...
Mockaroo API 是一个 API,它让我们生成随机数据并插入到我们的数据库中,创建 .xml、.xls、.json 文件。 就是这样。 此 API 基于 JSON 对象。 作者主页: : 如何使用它? MockarooApi mockarooApi = new ...
11.1.3 SOAP、JSON和XML分析程序 11.1.4 处理异常 11.1.5 解决多线程问题 11.1.6 有趣的超时 11.1.7 使用HttpURLConnection 11.1.8 使用AndroidHttpClient 11.1.9 使用后台线程(AsyncTask) ...
11.1.3 SOAP、JSON和XML分析程序 11.1.4 处理异常 11.1.5 解决多线程问题 11.1.6 有趣的超时 11.1.7 使用HttpURLConnection 11.1.8 使用AndroidHttpClient 11.1.9 使用后台线程(AsyncTask) ...
8.4 ListView配合AsyncTask加载网络数据——JSON/XML 87 9.1 数据分页策略及算法 106 9.2 分页加载代码 106 9.3解决图文混排的问题(方法1) 109 9.4 进度对话框提示加载和页脚提示加载 118 10.1 实现分页及解决图文...