android 开发客户端开发,【Android应用】Android网站客户端的开发介绍(1)
由于当前智能手机的普及,且智能手机中Android用户占的比重也越来越大,这也就意味着有越来越多的人使用Android操作系统的手机。然而越来越多的网站论坛也都随即开发了自己的Android客户端,如网易、新浪新闻Android客户端以及百度贴吧、天涯、豆瓣Android客户端。对这些有人会说我不装客户端,用手机浏览器也可以进这些网站论坛啊,这的确是可以的。我们就用手机浏览器也可以访问这些论坛和网站的。
那随之而来的问题就是:我们为什么要开发一款Android客户端呢?对于这个问题,我想说明一下开发一款Android客户端有以下的几点好处:首先客户端确定性强,也就是我们进哪个网站的客户端,我看到就只是这个网站的信息,而不会看到其他网站的信息;再者,客户端容易定制,不管网站的界面开发的怎么样,在客户端上我们完全可以重新定义数据显示样式和各个界面;还有一点,客户端可以增加我们网站的流量,一个好的客户端相对于浏览器可以吸收更多的用户访问。上面简单说了开发一款客户端的几点好处,那如何为自己的网站开发一款Android客户端呢,接下来我们就来系统的介绍一下如何开发一个网站的Android客户端。
我们接下来的介绍将分节展开,首先我们今天讲到就是关于我们如何通过Android客户端来访问我们的服务器,也就是如何实现Android客户端与服务器的交互。这里说名一下我们使用的服务器端是Tomcat,数据库是使用的MySQL,然后整个网站是基于Java EE开发的,使用的开发模式是Jsp+Servlet。我们的网站是一个基于Java EE开发的一个专卖儿童用品的购物网站。那我们看一下我们的网站的主页效果,如下图所示:
我们这里的数据库包括的表有:记录商品信息的Product(商品)表,还有记录用户信息的User(用户)表,还有用于产品分类的Type(类型)表,以及用于购物车功能的Oder(订单)表。整个网站的基本功能在这里我们就不具体介绍了,我们主要讲解如何开发其Android客户端。
首先我们考虑如何通过Android客户端来实现用户登录的功能。我们要实现登录,那么在数据库这端我们需要查询的表即是User(用户)表,通过对用户登录时输入的用户名的“密码”字段的查询,来判断其输入的密码是否与查询的密码一致,若一致则登录成功,若不一致或查询的密码结果返回为空,则说明输入密码错误或者该用户名未注册,那么登录失败。所以我们可以对请求端返回对应的信息。如下代码我们在服务器端建立一个Servlet用于用户登录的逻辑操作。我们给这个文件命名为:UserServlet.java,然后下面就是我们这个Servlet的具体实现代码:
package com.wust.babyhousing.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.wust.babyhousing.dao.UserDao;
import com.wust.babyhousing.daoimpl.UserDaoImpl;
import com.wust.babyhousing.entity.User;
public class UserServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");//设置编码格式
request.setCharacterEncoding("UTF-8");
String uName=request.getParameter("userName");//获取用户名
String uPass=request.getParameter("pwd");//获取密码
String client="pc";//pc为默认客户端类型
//获取客户端类型
if(request.getParameter("client")!=null)client=request.getParameter("client");
String mgs="";
UserDao userDao=new UserDaoImpl();
User user=userDao.findUser(uName);
if(user!=null&&user.getuPass()!=null&&user.getuPass().equals(uPass)){
if(client.equals("android")){//如果为Android客户端,则返回true,表示登录成功
PrintWriter out = response.getWriter();
out.print("true");
}else{//如果不是Android客户端,则跳转到登录成功的页面
HttpSession session=request.getSession();
session.setAttribute("user", user);
mgs="index.jsp";
request.getRequestDispatcher(mgs).forward(request, response);
}
}else{
if(client.equals("android")){//如果为Android客户端,则返回false,表示登录失败
PrintWriter out = response.getWriter();
out.print("false");
}else{//如果不是Android客户端,这显示登录失败的页面
mgs="login.jsp";
request.getRequestDispatcher(mgs).forward(request, response);
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);//调用doGet方法
}
}
在这里我们看到这里面传来的参数不只是有两个,还包括一个表示客户端类型的参数。也就是代码中的client这个String变量,它获取的是当前的客户端类型,我们默认的客户端类型为PC端,若是Android客户端登录我们会拿到“android”这个值,所以我们就可以返回不同的数据到对应客户端。若是PC端的客户端,我们就会跳转到对应的界面。而若是Android客户端,我们会返回true和false来判断到底是登录成功了,还是登录失败。其中在这个Servlet中我们使用到了一个我们自定义的类UserDao,对于这个类主要是用于我们的服务器与数据交互,我们通过findUser(uName)这个方法可以获取对于用户名的用户类的实体。这些类的及方法的源码大家完全可以自己实现,所以在这里我们就不在贴出了。那么我们可以看看Android客户端的源码该如何实现,下面是我们用户登录的部分源码:
public String send() {// 连接服务器,验证登录
String result = "";
String target = "http://172.16.9.15:8080/babyhousing/UserServlet";//登录验证地址
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpRequest = new HttpPost(target);
List params = new ArrayList();
params.add(new BasicNameValuePair("userName", strName));//用户名
params.add(new BasicNameValuePair("pwd", strPwd));//密码
params.add(new BasicNameValuePair("client", "android"));//Android客户端标识
try {
httpRequest.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
HttpResponse httpResponse = httpclient.execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
result += EntityUtils.toString(httpResponse.getEntity());
} else {
result = "请求失败!";
}
} catch (Exception e1) {
e1.printStackTrace();
}
return result;//返回结果
}
这是我们验证用户登录的一个方法,我们通过调用这个方法来实现登录验证。我们会把调用send()方法的结果放到一个String变量str里面。然后下面就是开始判断登录是否成功的步骤了。其中我们要注意上面服务器的登录验证地址,若是写错容易拿不到结果或者无法登录成功。我们要判断是否登录成功,只要调用一下str.contains("true"),也就是判断contains中是否包含“true”,若包含则显示登录成功,否则登录失败。我们做的是一个购物网站,做的是一个登录付款的功能,如下图我们就是登录付款的页面截图:
通过上面的截图以及源码我们可以看到,我们由Android客户端登录服务器,其实不是很复杂,我们主要是实现在Android客户端这边将用户输入的信息进行简单处理,再通过网络传给服务器,服务器接到我们客户端的处理将会进行相应的处理操作。这些操作我们在Servlet里面实现就可以了。
好了,本节介绍到此结束,若还有问题可以留言,对于以上实现有兴趣的同学可以自己动手试试,尝试自己去实现一下。希望你会有收获!那么我们后续问题再讨论,谢谢!
android 开发客户端开发,【Android应用】Android网站客户端的开发介绍(1)相关推荐
- asp.net学校门户网站系统VS开发sqlserver数据库web结构c#编程计算机网页项目
一.源码特点 ASP.NET学校门户网站系统是一套完善的计算机web设计系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为vs2010,数据库为sqlserver ...
- java-php-net-python-教学网站设计与开发计算机毕业设计程序
java-php-net-python-教学网站设计与开发计算机毕业设计程序 java-php-net-python-教学网站设计与开发计算机毕业设计程序 本源码技术栈: 项目架构:B/S架构 开发语 ...
- Android网站客户端开发
注:本文来自友盟-安卓巴士教程大赛第一名获奖作品,作者安卓巴士的ID为liupeinye.推荐给所有刚刚开始接触Android开发的朋友们! 本文面向Android初级开发者,有一定的Java和And ...
- Android利用Jsoup解析html 开发网站客户端小记。
这些天业余时间比较多,闲来无事,想起了以前看过开发任意网站客户端的一篇文章,就是利用jsoup解析网站网页,通过标签获取想要的内容.好了废话不多说,用到的工具为 jsoup-1.7.2.jar包,具体 ...
- android仿疯狂猜图源码,Android开发实现高仿优酷的客户端图片左右滑动切换功能实例【附源码下载】...
本文实例讲述了Android开发实现高仿优酷的客户端图片左右滑动切换功能.分享给大家供大家参考,具体如下: 本例是用ViewPager去做的实现,支持自动滑动和手动滑动,不仅优酷网,实际上有很多商城和 ...
- Android开发的参考书籍和参考网站
在学习Android开发的过程中,参考优秀和相关书籍和网站是十分必要的.在学习的过程中,手边一定要有一本参考书,在可以上网的环境中学习,随时有问题可以利用这些资源找到答案.所有的技术学习都必须与实践相 ...
- Android开发— 2016_最流行的Android组件、工具、框架大全(二)
2019独角兽企业重金招聘Python工程师标准>>> 泡在网上的日子 首页 代码 话题 问答 标签 关于 登录注册 首页 › 安卓开发 › android开发 Android开发- ...
- android高级开发面试!五年Android开发者小米、阿里面经,Android篇
最近我在接受采访时被问到我关于成为一名伟大的程序员见解.这是一个有趣的问题,我认为我们都可以是伟大的程序员,无论我们的天赋如何,如果我们遵循一些规则的话--我相信--这应该是常识.实际上,这些规则并不 ...
- 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域_拔剑-浆糊的传说_新浪博客...
http://www.apkbus.com/android-17627-1-1.html 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域 bayou 发表于 2011 ...
- android studio开发app实例_基于Android输入法开发,制作一个微信斗图APP
刘望舒 读完需要 20分钟 速读仅需12分钟 作者:小学生° 来源:搜狐技术产品 01 导读 微信斗图的应用有很多,但大部分都是通过微信分享来实现的,需下载 APP,下载表情并分享到微信联系人,操作步 ...
最新文章
- 推荐算法工程师的成长之道
- java中HashMap在多线程环境下引起CPU100%的问题解决
- Uploadify导致Chrome频繁崩溃Crash
- 中小企业私有云解决方案浅谈
- 终端滑模matlab程序,滑模变结构控制 MATLAB程序
- python运行是哪个键_python – 如何使用回车键调用按钮命令
- PHP7 网络编程(四)signal信号【待】
- 《用户网络行为画像》读书笔记(二)
- 固高运动控制卡学习3 --前瞻预处理
- 某集团大数据平台整体架构及实施方案
- JAVA学习(五):Java面向对象编程基础
- 云客Drupal源码分析之插件系统(中)
- Spring学习的书-夏昕(2)
- 五年从程序员到架构师 架构师进阶之路
- 如果你对未来还有点迷茫不妨来看一下,必看的软件测试指引!!!
- BAT机器学习面试1000道
- java批处理框架 pdf_《Spring Batch 批处理框架》PDF 下载
- linux复制与粘贴操作的快捷键
- webview 清除缓存的方式
- 【高精度】高精度加法 C++题解
热门文章
- windows server 开机自动启动项
- 荣耀电视鸿蒙安装第三方软件,荣耀电视如何安装第三方应用?当贝市场几招搞定!...
- java aes cbc iv_关于AES加解密中CBC模式的IV初始化向量的安全性问题
- 13家著名IT公司logo变迁史
- 支付宝-沙箱环境配置和使用
- Javascript中的prototype是什么
- 微信的自动回复接入聊天机器人
- 《MLB棒球创造营》:走近棒球运动·纽约大都会队
- “燕云十六将”之三弟王静
- 教师计算机基础培训心得,教师集中培训心得体会