目录
完整代码地址
https://github.com/ChenMingK/Android-lab
1.引言
实验目的
通过使用Android API进行系统注册模块的开发,包括前台的Android原生app以后后台服务模块的开发,要求后台使用JavaEE框架实现。进一步理解Java、SDK、ADT、Eclipse的彼此依赖关系,并且能熟练使用java语言来编写Android工程。掌握Android应用开发环境的搭建方法以及虚拟机的配制方法,掌握Android工程创建方法,掌握基于虚拟机与真机的Android工程运行方法,了解Activity生命周期,理解Activity事件回调,onRestoreInstanceState()和 onSaveInstanceState两个函数的使用。在此基础上,掌握Android客户端与服务器通信的原理并且运用到项目中,理解Android发送http网络请求,包括GET请求和POST请求,熟悉Android异步任务的处理方法,包括各种回调函数。能够运用Servlet和数据库来实现一个登录界面。最后用json实现android客户端与服务端的通讯。对于Android app调用的后台服务而言,要求使用JavaEE中的JSP或者Servlet进行编写,响应信息可以使用XML或JSON等方式进行封装,封装的信息由Android app再进行解析处理。
实验要求
对于Android app,至少需要有如下界面:
一、Android App开发
- 登录界面:包含用户名、密码的文字标识以及相应的输入栏,登录以及注册的按钮。当输入用户名以及密码后,点击登录按钮,则交数据提交至后台进行验证,如通过验证则跳转至欢迎界面,否则跳转回登录界面,并提示用户的验证错误原因;当用户点击注册按钮则跳转至注册界面。
- 注册界面:包含用户名、密码以及确认密码的文字标识以及相应的输入栏,提交以及取消按钮。当输入相关信息后,首先验证输入的信息是否符合要求(用户名至少5位,最多10位,以英文字母开头,只允许包含英文字母、数字以及_,同时必须至少有一个大写英文字母;密码为6-12位,只允许包含英文字母、数字和_,同时要求确认密码必须与密码一致),如不符合要求则在界面内提示错误,只有符合要求才提交给后台进行注册操作。如注册成功则跳转至欢迎界面,否则跳转回注册界面并提示用户的注册错误原因;当用户点击取消按钮则返回登录界面。
- 欢迎界面:显示对用户的欢迎信息,其中必须包括用户的登录名。
当获取到后台响应的字符串后,再在app内进行处理并显示相关信息。
二、后台服务的开发
对于Android app调用的后台服务而言,要求使用JavaEE中的JSP或者Servlet进行编写,响应信息可以使用XML或JSON等方式进行封装,封装的信息由Android app再进行解析处理。
对于注册信息的存储,要求使用Mysql数据库进行存放,其中用户名作为表的主键进行存储。
参考资料
- https://blog.csdn.net/lemonxq/article/details/79514577
- http://www.cnblogs.com/xdp-gacl/p/3760336.html
- https://www.cnblogs.com/jingmoxukong/p/8258837.html?utm_source=gold_browser_extension
- https://blog.csdn.net/qq_23035265/article/details/52625110
- http://www.runoob.com/w3cnote/android-tutorial-activity.html
术语与缩写解释
缩写、术语 |
解 释 |
Servlet |
小服务程序或服务连接器 |
Tomcat |
免费的开放源代码的Web 应用服务器 |
JDK |
Java 语言的软件开发工具包,Java Development Kit |
Eclipse |
一个开放源代码的、基于Java的可扩展开发平台 |
SDK |
软件开发工具包,Software Development Kit |
ADT |
安卓开发工具,Android Development Tools |
HTTP |
超文本传送协议 ,Hypertext transfer protocol |
JSON |
一种轻量级的数据交换格式, JavaScript Object Notation |
SQL |
结构化查询语言(Structured Query Language) |
SPP |
精简并行过程,Simplified Parallel Process |
SD |
系统设计,System Design |
AsyncTask |
Android提供的一个处理异步任务的类 |
2.项目结构
应用程序名:lab4
工程文件名:lab4
开发环境:
Eclipse
Eclipse With ADT
mysql
Tomcat
模拟器:夜神模拟器(用自带的模拟器卡爆你);也可以真机调试(需要与电脑连接同一WLAN);
项目结构:每个布局文件对应一个.java程序
左图为Android工程,右图为Web工程(.jsp文件部署在Tomcat上)
3.模块汇总
PS:这个模块纯属个人瞎扯,没有详细研究过Android各组件关系,大概看一下就好...
模块汇总表
子系统A |
|
模块名称 |
功能简述 |
UI模块 |
作为视图层展现给用户 xml布局文件 |
功能模块 |
作为后台实现功能的代码 .java文件,实现每个页面的Activity |
模型模块 |
存储数据和属性(R.java) 存储各个控件的id |
子系统B |
|
模块名称 |
功能简述 |
控制模块 |
实现的servlet功能,用于访问与操作数据库 同时能反馈给用户信息 |
模块关系图
对于Android http通信,包含两个系统,分别是客户端系统和服务器系统,客户端系统包括视图模块和代码功能实现模块和模型模块,服务器系统包括控制模块。(可能名字不是那么科学)
4.子模块详细设计
模块1:.xml文件(控件布局)
Tips:布局自己看着大概写吧,另外注意onClick属性会绑定一个监听事件,需要在.java中写对应的方法名及操作。
模块名称 |
UI模块 |
功能描述 |
直接显示在屏幕上的视图,可以在其中放置多个控件并且设置其布局方式使其呈现在用户面前。 |
接口与属性 |
所有用户界面元素都是由View和ViewGroup对象创建的。 View 是一种可以在屏幕上绘制某种画面并且可以与用户互动的对象。ViewGroup对象则是为了定义布局的接口而保存其他View(和ViewGroup)对象。Android提供一个View和ViewGroup子类的集合,这个集合能提供相同的输入控制(例如按钮和文本框)和各种各样的布局模式(例如一个线性或者相对布局)。 |
数据结构 与算法 |
XML文件可以为布局提供一个可读结构, 一个View的XML节点名称与它代表的Android类相对应。在布局中,使用了相对布局,线性布局,线性布局嵌套在相对布局中。相对布局是一种通过设置相对位置进行的布局,如android:layout_below 表示在目标组件之下。设置id的组件是为了后台寻找方便。
login.xml 相对布局RelativeLayout可以通过指定子对象之间的关系或者子对象与父对象之间的关系来对空间或者文本进行布局。这种布局方式比较灵活,自由度大。Width和Height均为fill_parent,设置background可以将自己的图片保存入drawable中进行使用。
设置两个输入框,一个为用户名,设置id为username, layout_width为fill_parent,layout_height为50dp,layout_paddingLeft为40dp,layout_marginTop为4dp,ems为10,hint为“请输入用户名”。对于密码输入框,设置基本相同但是id为password,类型也显示为password,这样输入密码时会显示为·而非密码,避免泄密。同时增加singleLine=true来保证输入的密码只能为一行,即不能使用回车键,hint为“请输入密码”。
密码框旁设置了一个CheckBox,可以通过代码勾选是否显示密码。 设置登录按钮,设置id为log_button_1,layout_width为match_parent,layout_paddingLeft为40dp,background为#000000(黑色),layout_gravity为center按钮上的文字为"注册 ",textColor为"#FFFFFF"。
设置注册按钮,设置id为log_button_2,layout_width为match_parent,layout_height为wrap_content,layout_maxHeight为50dp, layout_maxWidth为40dp,layout _marginTop为10dp,background为#000000(黑色),layout_gravity为center按钮上的文字为"登录 ",textColor为"#FFFFFF"。
对于button按键的样式,可以先在drawable文件夹中新建一个xml文件,在文件里设置出想要的按键样式,使用时就将按键的background属性链接到新建的xml文件即可。 设置提示信息,同textview文本框,将提示信息输入(比如密码不正确等),平时设置为不可见,只有点击登录键之后才会变成可见状态用于提示。
register.xml 总体为线性布局LinerLayout,大致的结构与login.xml相似,有三个输入框,分别为用户名和两个密码(一般注册会让用户再次输入密码以确认),相关设置与登录界面相似。 提示信息不符设置与登录界面相同 有两个按键,确认和取消,设置方式也同登录界面
welcome.xml 线性布局,设置一个文本框显示之后的动态内容,id为welcome_text,layout_width,layout_height都为fill_content,textColor为#FFFF00,textSize为30sp,gravity为center。 右上角设置了一个注销按钮,id为welcome_bt,layout_width,layout_height都为wrap_content,layout_marginTop为0,gravity为right,textSize为20sp,text为“注销”。
changepass.xml 修改密码的界面,同样是线性布局,其结构与register如出一辙。
|
补充说明 |
android:layout_below,意思是该组件位于引用组件的下方,而引用的组件就是这个属性值里面的内容“@id/要引用的id名”; android:layout_alignParentTop 是否对齐父组件的顶部; android:layout_weight属性限定在水平布局时,不同的控件占的宽度比率,具体规则为:如果水平布局有两个控件,其android:layout_weight属性值分别为n和m,则属性值为n的控件所占的长度比例为总长的n/(n+m),属性值为m的控件所占的长度比例为m/(n+m)。属性值越大,占的份额越多;
fill_parent、wrap_content和match_parent三个属性都用来适应视图的水平或垂直大小:fill_parent设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。wrap_content设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。match_parent在Android2.2中match_parent和fill_parent是一个意思;
|