本文讲述了如何应用大三下学期智能移动终端开发技术课程所学知识,完成包含服务器端、客户端程序的应用——博学谷登录模块的开发,结合java语言基本知识,例如:字符串、列表、类、数据库读写等,设计、实现一个以java语言为基础的博学谷的登录模块。该模块能够实现远程网络验证登录的基本功能,涉及到所用java库的主要类。

  鉴于之前版本的博学谷使用的是Android平台上一个轻量级的存储类SharedPreference实现数据存储,虽然容易理解和使用,但是无法实现和服务端和数据库的数据交互,体现出只能本地使用的局限性。所以本综合实验采用当前主流的处理网络请求的OKhttp3开源框架,实现远程网络数据的传送和获取,从而完成博学谷登录模块功能的设计与实现。

  除了实现登录、立即注册和找回密码的通过网络请求操作数据库这三个功能外,我们在用户登录和退出时,分别发送一个网络请求,传送登陆者的用户名和本地参数,本地参数例如有本机IP,登录设备号等等。本次实验只是完成了上传用户名,本地参数尚未添加。服务端接收到请求后,获得登陆者的用户名,获取服务器系统时间,将该名用户的登录和退出的时间登记在数据库中。

  另外在点击主界面的记录按钮时,可以跳转到另一个界面,发送一个网络请求,服务器接收到以后,查询数据库服务器,返回给客户端一个json串,用于展示用户的登录记录。

服务器端

  首先在NetBeans中打开服务器端程序,添加所需jar包(gson,mysql),GlassFish服务器;

  然后打开Navicat,连接到wlw1db数据库,建立一张自己的表,再添加所要访问的用户信息,记得添加主键;

  然后再修改服务器程序中连接数据库的常用类——DBUtil中的连接方法getConn()中的连接参数,确保数据库服务器连接成功。

  最后运行serverlet中的ListAllUserServlet可以在浏览器中看到所有用户的username和password的json串。

手机端:

  首先模拟运行之前的Android程序,通过okhttp实现访问具有特定url的服务器,访问成功可在LogCat中看到服务器端到数据服务器中取出的所有用户信息的json串。

  然后通过创建一个子线程,完成网络数据读取后,将完成信号发送给Handler,Handler再对主线程程UI界面进行更新操作,即可在手机端界面完成网络数据的读取。

  需要注意的是在手机端运行的程序访问的url必须是服务器端地址,如果是localhost则是手机的IP地址。

Java和android的基本概念、高级特性

Java接口

  定义一种对象的方法的规范、标准,然后通过另一个具体的实现类来实现这些规范。以服务器端UserDao为例,先定义接口UserDao,然后实现接口UserDaoImpl。类似的还有service。

Android的Handler消息机制

  当应用程序启动时,Android首先会开启一个UI线程,负责管理界面控件和进行事件分发。但是如果这个事件是耗时的,比如是网络读取数据,会出现假死甚至强制关闭。应该想到的是用子线程去处理耗时事件,但是子线程又不能直接操作主线程。所以就用到了Android中的一种异步回调机制Handler。

  Handler负责和子线程的通信,当子线程完成工作后,会通知Handler,然后对主线程UI进行操作。

模块分析:登录界面

  登录界面主要分为注册,登录,忘记密码三个模块,应该还要有登录验证模块,比如输入验证码。

  

  登录界面主要是实现通过获取控件中输入的内容对数据库进行操作,即增、删、改、查。

  登录的时候应该是手机端与服务器进行网络交互:用户点击登录的时候,首先进行本地检查,输入是否完整,然后按照网络获取数据方式的回路,先封装成bean,然后转成json格式,通过OKhttp提交到服务器,服务器解析json串和数据库服务器中的信息进行比对,最后返回给手机端登录成功与否的结果。

  注册是对数据库进行查操作,看是否已存在用户,然后在数据库中增加记录。

  

  找回密码就是对数据库进行改操作,方式和前面的大同小异,不同的是操作数据库的select语句不一样。

  

  退出登录时序图

  

网络访问部分

  博学谷中网络访问部分实现的功能是通过http获取特定url的数据并展示。网络获取数据代码注释如下图所示。

  获取信息后Handler处理部分代码注释如下:

  本次综合实验课程设计,我们主要运用了OKhttp这个网络请求处理的开源框架,实现了本地客户端和服务端之间的网络通信,进而实现了Android客户端远程操作Mysql数据库,最终实现博学谷软件登录模块的基本功能。我们不仅对Java语言开发智能移动终端有了更深刻的了解,还对面向对象编程思想有了更深层次的理解,特别是学习了Android编程的基本知识,构建从Android客户端到服务器再到数据库,甚至联系到我们之前学习的单片机、嵌入式的系统而完整的知识体系。

  最后如果有需要的小伙伴可以自行在这个网盘链接中下载,提取码obcy。如果有用不要忘记点个赞,让更多的人看到哦。

Android课程设计——博学谷1.0的更多相关文章

  1. Android课程设计第六天欢迎界面(跳转)

    注意:课程设计只为完成任务,不做细节描述~ package com.example.myapplication; import android.app.Activity; import android ...

  2. Android课程设计第五天欢迎界面(滑动)和图形选择

    注意:课程设计只为完成任务,不做细节描述~ 滑动界面 package com.example.myapplication; import android.content.Intent; import ...

  3. Android课程设计第四天ListView运用

    注意:课程设计只为完成任务,不做细节描述~ 效果图 <?xml version="1.0" encoding="utf-8"?> <Relat ...

  4. Android课程设计第三天帧动画区间动画

    注意:课程设计只为完成任务,不做细节描述~ 点火是帧动画,发射是区间动画,于是 <?xml version="1.0" encoding="utf-8"? ...

  5. Android课程设计第二天界面排版

    注意:课程设计只为完成任务,不做细节描述~ 老师叫我们做一个这个样子,然后.. <?xml version="1.0" encoding="utf-8"? ...

  6. Android课程设计第一天Android Studio安装

    注意:课程设计只为完成任务,不做细节描述~ 学校有一个Android的课设,所以顺便把Android Studio安装了上去. 实际上安装过程并不复杂,只有几个地方需要注意~ 安装包可以去http:/ ...

  7. java课程设计全程实录——第0天

    本次课设计划在5月25日完成.目前还剩18天. 第0天主要完成事项如下: 搭建开发环境 制定开发进度规划表 阅读前人的课设 详细: 1.IDE的下载,安装,以及配合使用的阿里巴巴编程规约插件的安装与测 ...

  8. 20155338课程设计个人报告——基于ARM实验箱的Android交友软件的设计与实现

    课程设计个人报告--基于ARM实验箱的Android交友软件的设计与实现 个人贡献 实验环境的搭建 代码调试 在电脑上成功运行 研究程序代码撰写小组报告 一.实验环境 1.Eclipse软件开发环境: ...

  9. 一培训机构设计的学习android课程内容:供大家参考

    转自:http://www.cnblogs.com/csj007523/archive/2011/06/16/2082682.html 一培训机构设计的学习android课程内容:供大家参考 第一阶段 ...

随机推荐

  1. centos上安装python环境

    1.安装python-pip ​ 首先安装epel扩展源: ​ yum -y install epel-release ​ 更新完成之后,安装pip: ​ yum -y install python- ...

  2. mac下配置开发环境

    常用命令 显示隐藏文件 1 defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder 关闭隐藏文 ...

  3. 手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  4. JQUERY的基本使用方法

    #准备工作 在官网下载JQUERY库 将库在你需要的网页上引用 123 <head><script src="jquery.js"></script& ...

  5. windows dnsrecon

    缺了两个模块 第一个:https://pypi.python.org/pypi/netaddr 第二个:dnspython 找到下载后setup.py install就OK了,话说GFW真***了,用 ...

  6. 《Effective Java》笔记45-56:通用程序设计

    将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性. 要使用局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方才声明,不要过早的声明. 局部变量的作用域从它被声明的 ...

  7. 迈克尔·乔丹:几百年内AI不会觉醒

    ​​ 此乔丹非飞人乔丹.他是研究统计学和计算机科学家,目前研究的领域正是普通人所说的人工智能.权威的学术搜索引擎Semantic Scholar在2105年做了一项排名,关于计算机科学领域谁最具影响力 ...

  8. Spring Boot 2.x基础教程:使用 Thymeleaf开发Web页面

    通过本系列教程的前几章内容(API开发.数据访问).我们已经具备完成一个涵盖数据存储.提供HTTP接口的完整后端服务了.依托这些技能,我们已经可以配合前端开发人员,一起来完成一些前后端分离的Web项目 ...

  9. 自定义 ---UICollectionViewLayout-正N变形居中布局

    1. 自定义UICollectionLayout ---- 正三角形居中布局 支持多个图形的自动布局 2. 自定义UICollectionLayout ---- 正方形居中布局 滚动展示的区域 3.  ...

  10. localstorage二次封装-模块模式

    var db = function () { // 本地存储前缀,减少命名冲突 var prefix = 'ydb'; return { setPrefix: function (_prefix) { ...