ITPub博客

首页 > 大数据 > Hadoop > Android开发项目怎样快速开发框架

Android开发项目怎样快速开发框架

Hadoop 作者:220323 时间:2013-08-06 15:11:00 0 删除 编辑

相对于传统计算机程序语言来说,Android开发学习资源上还稍微欠缺一些,对于一些基础应用讲解还稍显匮乏,本篇所讲述的Android培训内容可以帮助大家更好的理解Android项目快速开发框架。结合之前所用的ormlite和hessian,再加上SAE已经支持JAVA,把服务端切换到JAVA,也就有了本文。使用hessian来做数据传输,ormlite来实现客户端与服务端的数据存储,极大的减少了CRUD工作。本文为探索贴,未正式用于大型项目,欢迎大家讨论使用!正文一、简介1.1 ormliteOrmlite[Object Relational Mapping Lite (ORM Lite)]对象关系映射精简版(精简版的ORM)提供了一些简单的,轻量级持久化Java对象到SQL数据库,同时也避免了复杂性和更多的标准的ORM包的开销的功能。支持数据库的jdbc调用,当然,最重要的肯定是它支持android原生的数据库api调用sqlite。——转载自这里。1.2 hessian使用方法参照本博两篇文章:[hessdroid]Android下使用Hessian与Java服务端通讯[hessdroid]Android下使用Hessian与Java服务端通讯的传值测试1.3 Android快速开发框架说明考虑如下几个特点:a). 客户端(Android)和服务端均使用Java语言b). 客户端(Android)和服务端均支持Hessian和ormlite框架c). 完整的支持面向对象开发:存储和交互传输二、准备2.1 开发环境为了便于同时开发Android和Java Web,这里下载的是Eclipse IDE for Java EE Developers版本,然后安装最新的ADT插件和TOMCAT插件。2.2 服务端应用服务器使用Tomcat,采用Java(JSP/Servlet)来实现服务端的业务逻辑,数据库使用Mysql。快速框架搭建推荐大家使用XAMPP(集成Apache、MySQL、PHP等,支持绿色安装)。2.3 客户端普通的Android环境2.4 通信与存储说明服务端与客户端通过Hessian进行数据交换,通过Ormlite保存数据库(通过JDBC保存到服务端的MYSQL数据库,也可以直接保存到客户端的sqlite数据库);三、代码3.1 项目工程截图(服务端)HOLib共用于客户端和服务端,保证接口和数据对象一致性。3.2 重点代码分析3.2.1 服务端web.xml            user        com.nmbb.ho.server.servlet.UserServlet                user        /user.do                com.nmbb.ho.server.StartupInit    StartupInit.javapublic class StartupInit implements ServletContextListener {    @Override    public void contextInitialized(ServletContextEvent arg0) {        try {            TableUtils.dropTable(OrmliteHelper.getConnection(), POUser.class,                    true);            //创建数据库            TableUtils.createTable(OrmliteHelper.getConnection(), POUser.class);        } catch (SQLException e) {            e.printStackTrace();        }    }    @Override    public void contextDestroyed(ServletContextEvent arg0) {    }}   代码说明:StartupInit可用于创建数据库表结构,这里用于测试,真实环境注意数据丢失问题。POUser.java@DatabaseTable(tableName = "nmbb_users")public class POUser implements Serializable {    /** 用户编号,6位数字 */    @DatabaseField(generatedId = true)    public int suid;    /** 用户名 */    @DatabaseField(width = 30)    public String username;    /** 密码 */    @DatabaseField(width = 30)    public String password;    /** 昵称 */    @DatabaseField(width = 60)    public String nickname;    /** 200 正常 201 数据校验错误 202用户已经存在 */    public int status = 200;    /** 用于放错误信息 */    public String msg;    public POUser() {    }}  代码说明:注意需要一个空的构造函数,其他请参考ormlite资料。UserServlet.java/*** 用户Servlet** @author 农民伯伯* @see http://www.cnblogs.com/over140/archive/2013/02/19/2917231.html**/public class UserServlet extends HessianServlet implements IUserService {    @Override    public POUser register(String username, String password) {        POUser result = new POUser();        System.out.println("[UserServlet.register]...");        // 检测数据是否合法        if (isEmpty(username) || isEmpty(password)) {            result.status = 201;            result.msg = "用户名或密码不能为空";        } else {            // 检测用户是否存在            OrmliteHelper db = new OrmliteHelper();            if (db.exist(POUser.class, "username", username)) {                result.status = 202;                result.msg = "用户名已经存在";            } else {                result.username = username;                result.password = password;                db.create(result);// 入库                result.msg = "注册成功";                System.out.println("create user suid:" + result.suid);            }        }        return result;    }    @Override    public List query(int suid, int startIndex, int pageSize) {        return new OrmliteHelper().query(POUser.class, "suid", suid, startIndex, pageSize) ;    }    /**     * 判断字符串是否为空     *     * @param str     * @return     */    public static boolean isEmpty(String str) {        return str == null || str.length() == 0;    }}3.2.2 客户端(Android) public class UserActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }    public void OnClickRegiger(View view) {        new AsyncTask() {            @Override            protected POUser doInBackground(Void... params) {                String url = "http://192.168.68.23:8081/HOServer/user.do";                HessianProxyFactory factory = new HessianProxyFactory();                try {                    factory.setDebug(true);                    factory.setReadTimeout(5000);                    //不设置会报 expected hessian reply at 0x48                    factory.setHessian2Reply(false);                    IUserService basic = (IUserService) factory.create(IUserService.class, url, getClassLoader());                    return basic.register("admin", "123456");                } catch (MalformedURLException e) {                    Log.e("UserActivity", "OnClickRegiger", e);                } catch (Exception e) {                    Log.e("UserActivity", "OnClickRegiger", e);                }                return null;            }            @Override            protected void onPostExecute(POUser result) {                if (result != null) {                    if (result.status == 200) {                        //保存入库                        new DbHelper().create(result);                    }                    Toast.makeText(UserActivity.this, "" + result.msg, Toast.LENGTH_LONG).show();                }            };        }.execute();    }}代码说明:1、DbHelper在源码里给出。2、如果项目无法编译通过,请注意设置项目的字符编码、JDK版本、Android的版本。三、总结5.1 优点a). 完全面向对象开发b). 降低项目的复杂度,减少引入其他框架所带来的复杂性c). 非常适合一个开发服务端和客户端充分的利用的框架的特点,提交开发效率,适合中小型项目快速开发。5.2 缺点a). 注意服务端与客户端共用id的问题5.3 其他a). ormlite支持标准的JPA助记符,这里。这样服务端采用Hibernate应该也是可以的,有时间可以做一个整合例子看看。学习语言同做事情一样,想通其中的关系,就会事半功倍,对语言要深入的理解,

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21129771/viewspace-1111702/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-03-16