一、web应用主要代码:
1、domian News.java
package com.caiz.news.domain;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 新闻实体类
* @author HuangYucai
*/
public class News {
private Long id;
private String title;
private Date createTime;
public static final SimpleDateFormat SDF=new SimpleDateFormat("yyyy-MM-dd");
public News() {
}
public News(Long id, String title, Date createTime) {
this.id = id;
this.title = title;
this.createTime = createTime;
}
public News(long id, String title, String dateStr) throws Exception {
this.id=id;
this.title=title;
this.createTime=SDF.parse(dateStr);
}
public String getCreateTimeStr(){
return SDF.format(this.createTime);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
2、service
接口Interface:INewsService
package com.caiz.web.service;
import java.util.List;
import com.caiz.web.domain.News;
public interface INewsService {
public abstract List<News> getNewsList();
}
实现类implementation:NewsServiceImpl
package com.caiz.web.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.caiz.web.domain.News;
import com.caiz.web.service.INewsService;
/**
* 新闻的service类
* @author HuangYucai
*
*/
public class NewsServiceImpl implements INewsService {
@Override
public List<News> getNewsList(){
List<News> newsList=new ArrayList<News>();
Date dt=new Date();
newsList.add(new News(1L,"国家兴亡,匹夫有责",dt));
newsList.add(new News(2L,"静水流深,谦者有为",dt));
newsList.add(new News(3L,"自助者,天助之",dt));
return newsList;
}
}
3、servlet
package com.caiz.web.servlet;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.caiz.web.domain.News;
import com.caiz.web.service.INewsService;
import com.caiz.web.service.impl.NewsServiceImpl;
/**
*servlet类
*@author HuangYucai
*
*/
@WebServlet("/NewsServeLet")
public class NewsServelet extends HttpServlet {
private static final long serialVersionUID = 1L;
private INewsService newsService;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
newsService = new NewsServiceImpl();
List<News> newsList = newsService.getNewsList();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
if ("json".equals(request.getParameter("dataFormat"))) {
StringBuilder bulder=new StringBuilder("[");
for(int i=0;i<newsList.size();i++){
News news=newsList.get(i);
bulder.append("{");
bulder.append("id:").append(news.getId()).append(",");
bulder.append("title:\"").append(news.getTitle()).append("\",");
bulder.append("createDate:\"").append(sdf.format(news.getCreateTime())).append("\"");
bulder.append("},");
}
bulder=bulder.deleteCharAt(bulder.length()-1);
bulder.append("]");
request.setAttribute("jsonData", bulder.toString());
request.getRequestDispatcher("news_json.jsp").forward(request,
response);
} else {
request.setAttribute("newsList", newsList);
request.getRequestDispatcher("news_xml.jsp").forward(request,
response);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
4、jsp
xml:
<%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <?xml version="1.0" encoding="UTF-8"?>
<root>
<c:forEach items="${newsList}" var="news">
<news id="${news.id}">
<title>${news.title}</title>
<createTime>
<fmt:formatDate value="${news.createTime}" pattern="yyyy-MM-dd"/>
</createTime>
</news>
</c:forEach>
</root>
json:
<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%>
${jsonData}
二、Android端:
1、界面:
listview的item:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/title"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/createTime"
/>
</LinearLayout>
主界面:main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/newsView"/>
</LinearLayout>
2、主Activity
package com.caiz.news;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import com.caiz.news.domain.News;
import com.caiz.news.service.NewsService;
/**
* 新闻显示的Activity
* @author HuangYucai
*
*/
public class NewsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView listView = (ListView) this.findViewById(R.id.newsView);
try {
List<News> newsList = NewsService.getNewsList();
List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
if (newsList != null) {//有数据则显示
Log.i("length", String.valueOf(newsList.size()));
for (News news : newsList) {
HashMap<String, Object> mps = new HashMap<String, Object>();
mps.put("id", news.getId());
mps.put("title", news.getTitle());
mps.put("createTime",news.getCreateTimeStr());
data.add(mps);
}
SimpleAdapter adapter = new SimpleAdapter(this, data,
R.layout.items, new String[] { "title", "createTime" },
new int[] { R.id.title, R.id.createTime });
listView.setAdapter(adapter);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、service类
package com.caiz.news.service;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import com.caiz.news.domain.News;
/**
* Service类
* @author HuangYucai
*
*/
public class NewsService {
//请求新闻的主方法
public static List<News> getNewsList() throws Exception {
String path = "http://192.168.0.186:8080/web/NewsServeLet?dataFormat=json";
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if (conn.getResponseCode() == 200) {
InputStream iStream = conn.getInputStream();
return ParseJSON(iStream);
}
return null;
}
//解析json数据
public static List<News> ParseJSON(InputStream iStream) throws Exception{
List<News> newsList=new ArrayList<News>();
String jsonStr=ParseString(iStream);
JSONArray jArray=new JSONArray(jsonStr);
for(int i=0;i<jArray.length();i++){
JSONObject jObject=(JSONObject) jArray.get(i);
News news=new News(jObject.getLong("id"),jObject.getString("title"),jObject.getString("createDate"));
newsList.add(news);
}
return newsList;
}
//输入流换成字符串
public static String ParseString(InputStream iStream) throws Exception {
if(iStream==null){
return "null";
}
ByteArrayOutputStream bos=new ByteArrayOutputStream();
byte[] buf=new byte[1024];
int len=0;
while((len=iStream.read(buf))>0){
bos.write(buf,0,len);
}
return new String(bos.toByteArray(),"UTF-8");
}
//解析XML数据
public static List<News> ParseXML(InputStream iStream) throws Exception {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(iStream, "UTF-8");
int event = parser.getEventType();
News news = null;
ArrayList<News> newsList = new ArrayList<News>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_TAG:
if ("news".equals(parser.getName())) {
Long id = new Long(parser.getAttributeValue(0));
news = new News();
news.setId(id);
}else if ("title".equals(parser.getName())) {
news.setTitle(parser.nextText());
}else if("createTime".equals(parser.getName())) {
news.setCreateTime(sdf.parse(parser.nextText()));
}
break;
case XmlPullParser.END_TAG:
if ("news".equals(parser.getName())) {
newsList.add(news);
news=null;
}
break;
}
event = parser.next();
}
return newsList;
}
}
4、domain同web端
发表评论
-
maven的依赖
2013-07-28 23:37 929<?xml version="1.0&qu ... -
中文乱码解决方案
2013-06-25 00:33 1409中文乱码解决方案 > ... -
android通过POST和GET两种方式发送数据到web应用实战
2012-12-18 21:21 1487一、web应用端 1、servlet package co ... -
Android自学笔记
2012-12-11 22:41 887=============================== ... -
asp.net 的文本编辑器kindeditor的使用
2012-11-30 23:08 18671、作用: 在.net开发过程中,经常需要文章信息发布 ... -
asp.net系统增加用户登录后修改密码的功能
2012-11-30 22:45 2684[size=xx-large][size=large]1、增加 ... -
中层干部测评系统增加修改密码的功能
2012-11-30 21:20 0******************************* ... -
Android学习笔记2012年(2012-11-23至2012-11-27)
2012-11-27 20:59 1196******************************* ... -
Android学习笔记2012年(上)
2012-11-27 20:57 870Android学习笔记2012年 一、Android应用的目 ...
相关推荐
《C#开发Android应用实战:使用Mono for Android和.NET C#》是一本专注于利用C#语言和Mono for Android框架开发Android应用程序的专业书籍。作者(美)麦克卢尔深入浅出地介绍了如何借助.NET生态系统的优势来构建...
在本资源中,我们拥有一套完整的Android社交应用与Java Web后台系统的源代码,这为开发者提供了一个绝佳的学习和实践平台。这套源代码是基于Android Studio和MyEclipse开发的,涵盖了客户端应用和服务器端服务的全部...
在Android应用开发中,网络技术是不可或缺的一部分,它使得应用程序能够与远程服务器进行交互,获取或上传数据,实现丰富的功能。本实战详解将深入探讨Android网络开发中的关键技术和实践策略。 首先,我们要了解...
【若水新闻Android源码分析】 ...通过深入研究这套源码,开发者不仅能了解新闻类应用的开发流程,还能掌握Android应用开发的实战技巧,同时对后端开发和数据库管理也有一定的了解,是一份综合性的学习资料。
XML,全称Extensible Markup Language,可扩展标记语言,是一种用于标记数据的结构化语言,尤其在Web应用程序、数据交换和文档存储等领域中扮演着重要角色。XML的设计目的是传输和存储数据,而不是显示数据,因此它...
在Android开发中,MySQL通常用于服务器端的数据存储和管理,通过网络接口与客户端(Android应用)进行交互,实现数据的增删查改。本视频教程将带你深入理解如何在Android应用中有效地利用MySQL。 1. **远程数据库...
3. 数据解析:将服务器返回的JSON或XML数据解析成Java对象,显示在Android界面上。 4. 权限管理:考虑到Android系统的权限机制,需要处理网络访问和读写数据等相关权限。 总的来说,"PHP教师成绩查询系统"是一个...
Android应用常常需要与Web服务进行交互以获取或发送数据。SOAP(Simple Object Access Protocol)是一种基于XML的协议,常用于企业级的应用。在Android_example_part3中,可能有一个SOAP客户端实现,展示了如何创建...
5.1 android解析json数据(一) 5.2 android解析json数据(二) 5.3 android使用gson解析 5.4 android使用fastjson解析 六、Android常用UI控件编程 6.1 TextView如何显示丰富的文本 6.2 TextView显示表情图像和文字...
在本Android项目实战中,我们将关注的是"手机卫士"应用的一个重要功能模块——"手机号码归属地查询界面"。这个功能通常用于帮助用户识别来电号码的来源,从而提高对未知来电的安全判断。以下是该功能实现涉及的关键...
- **JSON/XML解析**:解析服务器返回的数据格式。 - **Web服务**:利用RESTful API与服务器交互。 6. **多媒体开发**: - **音频播放**:MediaPlayer类用于播放音频文件。 - **视频播放**:VideoView类用于播放...
这些代码可能涵盖了从发起请求、解析响应到显示结果的整个流程,是学习如何使用Web Service获取天气预报的实战案例。开发者可以通过阅读和分析这些代码,深入理解Web Service的工作机制,以及如何在实际项目中应用。...
这个应用通常会结合Web服务(Websevice)技术,从远程服务器获取数据,以实现对全国各个手机号码的运营商、地区等信息的实时查询。 在Android应用程序中,实现手机号码归属地查询涉及以下关键知识点: 1. **...
综上所述,这个Android商城项目实战涵盖了移动应用开发的多个重要方面,从客户端的UI设计、网络通信,到服务端的API设计、数据库操作,都是Android开发者提升技能的好资源。同时,结合详细的开发文档,无论是初学者...
7. **Web技术**:熟悉HTML、Div、CSS、JavaScript和XML,意味着他可以轻松处理与Web相关的任务,如网页数据的获取和处理。 8. **J2EE技术**:熟练掌握Servlet、JDBC、JavaBean和SSH框架技术,证明他不仅限于移动端...
通过对这个文件的分析,你可以了解后端的数据模型设计,比如表的结构、字段类型、索引设置,以及可能存在的外键约束,这些都会直接影响到前端应用的数据获取和更新逻辑。 在实际项目中,Android与Web端的结合可能...
通过这个微博项目的源码,开发者可以实战练习Android和PHP的配合,同时学习如何构建高效、安全的服务器接口,以及在Android端如何进行数据的获取和展示。这是一个宝贵的自学和提升技能的资料,对于想要在移动互联网...
29_发送xml数据和调用webservice.avi 所在项目:mobileAddressQuery & Web端应用:web 30_多线程下载原理.avi 所在项目:net 31_多线程断点下载器.avi 所在项目:MulThreadDownloader 32_文件断点上传器.avi 所在...
从基础到高级,本书通过具体的例子和实践技巧,帮助读者深入理解 Android 平台的各项功能,并掌握如何构建高质量的移动应用。无论是初学者还是有经验的开发者,都能从中获得有价值的指导和启发。
这部分讲解了如何在Android应用中存储数据,包括各种数据存储机制的选择和使用。 - **文件存储:**介绍了如何使用文件系统来保存数据,适用于小型数据存储需求。 - **SQLite数据库:**讨论了如何使用SQLite数据库来...