本文讲述了如何应用大三下学期智能移动终端开发技术课程所学知识,完成包含服务器端、客户端程序的应用——博学谷登录模块的开发,结合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. golang xml解析

    第二章里还提到了xml的解析部分.之前有想整理下encoding包下常用的几个文件格式的处理.这次刚好整理下xml的部分.先上例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...

  2. 是AI就躲个飞机-纯Python实现人工智能

    你要的答案或许都在这里:小鹏的博客目录 代码下载:Here. 很久以前微信流行过一个小游戏:打飞机,这个游戏简单又无聊.在2017年来临之际,我就实现一个超级弱智的人工智能(AI),这货可以躲避从屏幕 ...

  3. Random Forest And Extra Trees

    随机森林 我们对使用决策树随机取样的集成学习有个形象的名字–随机森林. scikit-learn 中封装的随机森林,在决策树的节点划分上,在随机的特征子集上寻找最优划分特征. import numpy ...

  4. 使用python抓取美团商家信息

    抓取美团商家信息 import requests from bs4 import BeautifulSoup import json url = 'http://bj.meituan.com/' ur ...

  5. ASP.NET Core 反向代理部署知多少

    引言 最近在折腾统一认证中心,看到开源项目IdentityServer4.Admin集成了IdentityServer4和管理面板,就直接拿过来用了.在尝试Nginx部署时遇到了诸如虚拟目录映射,请求 ...

  6. 1024程序员节最新福利之2018最全H5前端资料集

    前言 有好久没有写博客了,主要这段时间都沉迷学习无法自拔了,哈哈.自吹一波. 前两天不是1024节吗,所以就有很多福利出现了,当然每个人能都获得的信息都有所不同,这就是所谓的信息差.秉着好东西需要分享 ...

  7. 题解-[HNOI2001]遥控赛车比赛

    题解-[HNOI2001]遥控赛车比赛 前置知识:记忆化搜索.\(\texttt{Bfs}\). 参考资料 https://www.luogu.com.cn/blog/CYJian/solution- ...

  8. Java的三魂七魄 —— 高级多线程

    目录 Java的三魂七魄 -- 高级多线程 一.多线程的创建 二.线程安全问题 三.线程通信问题 四.更多实例 1.用线程同步的方法解决单例模式的线程安全问题 2.银行存钱问题(线程安全问题) 3.生 ...

  9. 分享一个基于Net Core 3.1开发的模块化的项目

    先简单介绍下项目(由于重新基于模块化设计了整个项目,所以目前整个项目功能不多) 1.Asp.Net Core 3.1.2+MSSQL2019(LINUX版) 2.中间件涉及Redis.RabbitMQ ...

  10. Data Vault 简介

    Data Vault 简介 Data Vault 2.0 不仅是建模技术,也提供了一整套数据仓库项目的方法论.它能提供一套非常可行的方案来满足数据仓库项目中对于历史轨迹和审核两个方面的需求. 多年来, ...