本文讲述了如何应用大三下学期智能移动终端开发技术课程所学知识,完成包含服务器端、客户端程序的应用——博学谷登录模块的开发,结合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. HAProxy此例简单介绍基于docker的HAProxy反代

    HAProxy拓展连接 此例简单介绍基于Docker的HAProxy反代 反代: 1.获取haproxy镜像  docker pull haproxy 2.写配置文件haproxy.cfg 1 glo ...

  2. mingster.com

    Good to Great: Why Some Companies Make the Leap... and Others Don'tby Jim Collinshttp://rcm.amazon.c ...

  3. C++走向远洋——27(项目三,时间类)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:time.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  4. Docker实战之Redis-Cluster集群

    概述 接上一篇Docker实战之MySQL主从复制, 这里是Docker实战系列的第二篇,主要进行Redis-Cluster集群环境的快速搭建.Redis作为基于键值对的NoSQL数据库,具有高性能. ...

  5. mysql in与exists区别

    1.exists是对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的 ...

  6. 我的webpack学习笔记(二)

    前言 上一篇文章我们讲了多页面js的打包,本篇文章我们继续scss的打包. 多页面css单独打包 首先,我们css编写采用的是sass,所以我们先来安装sass-loader以及可以用到的依赖 $ n ...

  7. CSS Sprite雪碧图的应用

    CSS雪碧图,即CSS Sprite,也有人叫它CSS精灵图,是一种图像拼合技术.该方法是将多个小图标和背景图像合并到一张图片上,然后利用CSS的背景定位来显示需要显示的图片部分. 雪碧图的使用场景 ...

  8. javascript简单轮播图

    **轮播图实现原理: 通过多张图片平铺,用overflow:hidden只显示一张图片.其他的隐藏,无缝滚动用定时器改变元素的left值让图片呈现左右滚动的效果.** HTML布局和内容: 1.容器c ...

  9. LeetCode 33.Search in Rotated Sorted Array(M)

    题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...

  10. Vue方式自动打开浏览器配置

    Vue方式自动打开浏览器配置 1. 通过 package.json 配置项目 // 必须是符合规范的json语法 "vue": { "devServer": { ...