本文讲述了如何应用大三下学期智能移动终端开发技术课程所学知识,完成包含服务器端、客户端程序的应用——博学谷登录模块的开发,结合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。如果有用不要忘记点个赞,让更多的人看到哦。