概要

安卓APP要实现很多功能(比如登录注册、发表评论等)时都必须要使用到网络数据交互。所以在学习了这部分内容后,就将其以最常见的登录过程为例整理出来,也方便跟我一样的新手能迅速学习上手。

预期效果图如下,输入手机号和密码,点击Login按钮,上传数据到服务器端进行验证,再对结果进行反馈。

博客分一二两篇,第一篇是服务器端,第二篇是Android客户端
而服务器端分为User model、UserDAO、LoginServlet三个部分,只写了用户登录验证流程中最简单的实现逻辑,仅供参考。

User model

用户model最主要的属性,就是账户(现在多为手机号)和账户密码,同时定义了Key,用于在URL中传参和取参。

public class User implements Serializable{private int id;private String phoneNumber;private String password;private String userName;private String emailAddress;private Date registerTime;//用于URL传参和取参时的keypublic static String PHONENUMBER = "phoneNumber";public static String PASSWORD = "passWord";public static String USERNAME = "userName";//构造函数public User(String phoneNumber,String password,String userName){this.phoneNumber = phoneNumber;this.password = password;this.userName = userName;registerTime = new Date();}//属性的get与set方法不再贴出
}

UserDAO

这里没有去涉及数据库的复杂操作和查询比对,就用了一个简单的ArrayList数组作为数据源,通过isLoginCheck方法对数组进行遍历取值,从而对登录验证是否成功进行判断。

public class UserDAO {public static void main(String[] args) {//本地验证Main函数UserDAO userDAO = new UserDAO();System.out.println(userDAO.isLoginOK("123456", "abc123456"));}//假设的数据源public ArrayList<User> users;public UserDAO() {// TODO Auto-generated constructor stubusers = new ArrayList<User>();users.add(new User("123456","abc123456","codingma"));users.add(new User("654321","abcdf123","codemayq"));}//验证函数public boolean isLoginOK(String phoneNumber,String password) {for (User user : users) {if (user.getPhoneNumber().equals(phoneNumber)) {if (user.getPassword().equals(password)) {return true;}}}return false;}
}

LoginServlet

LoginServlet只是一个普通的Servlet,在doPost方法中,对URL中的参数进行了提取,然后调用UserDAO中的isLoginOK方法进行验证,返回OK或者Wrong的结果值

public class LoginServlet extends HttpServlet {public LoginServlet() {super();}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("GET");out.flush();out.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();//取出URL中的账号密码参数String phoneNumber = request.getParameter(User.PHONENUMBER);String passWord = request.getParameter(User.PASSWORD);UserDAO userDAO = new UserDAO();//验证过程if (userDAO.isLoginOK(phoneNumber, passWord)) {out.println("OK");}else {out.println("Wrong");}out.flush();out.close();}}

总结

服务器端的部分就分为三部分,User类,用于数据验证的UserDAO类,用于接收处理请求并返回结果的LoginServlet,调用关系比较清晰,不算特别复杂。

Android客户端的代码请见下一章
转载请注明出处http://blog.csdn.net/u012145166/article/details/51335187

Android 客户端与服务器端进行数据交互(一、登录服务器端)相关推荐

  1. Android 架构之路 (1)-- Android 客户端与服务器的数据交互总结

    前言: 本文总结了 Android 客户端与服务器进行交互时,采用RESTful API +Json的交互方式,针对不同的数据形式以及不同的解析方法,如有不足之处,欢迎指正. 文章目录 1. Andr ...

  2. Android 低功耗蓝牙开发(数据交互)

    Android 低功耗蓝牙开发(数据交互) 前言 正文 一.BluetoothGattCallback 1. onPhyUpdate 2. onPhyRead 3. onServicesDiscove ...

  3. 通过axios实现vuecli与服务器端的数据交互

    Vue在升级到2.x版本后就停用了原来官方推荐的vue-resource,而是推荐使用axios来进行和服务器的数据交互. 1.axios的安装与引用 通过vue ui在运行依赖处可以找到axios的 ...

  4. Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)

    学习Android有一段时间了,对服务器端有很深的好奇,决定对服务器端的实现进行一些研究,这里实现了一个简单的小例子,用于获取服务器端的json数据,例子很简单,适合初学者学习使用. 服务器端 首先我 ...

  5. android webview 监听js,Android webview与js的数据交互

    项目要用到Webview和js交互,查了查以前的项目感觉还是有必要整理下的. 简单描述下项目中用到的地方,比如说在web页需要用到登录的地方点击登录跳转到APP原生登录界面去登录,点击web页的拨打电 ...

  6. js获取android数据,Android webview与js的数据交互

    项目要用到Webview和js交互,查了查以前的项目感觉还是有必要整理下的. 简单描述下项目中用到的地方,比如说在web页需要用到登录的地方点击登录跳转到APP原生登录界面去登录,点击web页的拨打电 ...

  7. 客户端与服务器的数据交互

    毕设需要接粗到一些关于app和前端后端的东西,学习记录一下. 首先不要管安卓端还是苹果端,现在一般都是响应式的app,放到安卓或者苹果或者pc或者平板都是没有问题的.一般采用的是http接口通讯,或者 ...

  8. android网络请求线程池,利用线程池实现Android客户端的http网络数据请求工具类

    该工具类值只实现了HTTP的get方法,参考get方法可轻松实现post.put.delete等方法,下面是get方法的实现 public class SimpleHttpClient { priva ...

  9. Appcan与后台数据交互,登录例子

    1.appcan界面(login.html) 假定后台路径为:http://localhost:8080/LabManageSystem/appcan/login/loginHandle.jsp,其中 ...

最新文章

  1. 用c语言写一个两线程程序,如何用C语言实现多线程
  2. jwplayer使用
  3. jQuery判断获得的对象是否存在的方法
  4. EE4J项目情况汇总,微软加入Jakarta EE工作组
  5. html的区域大小,JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性...
  6. net4.0 兼容2.0的方法
  7. MacOS使用brew无法安装Python_无法安装gdbm_无法安装autojump
  8. 《深入理解计算机系统》(2) 信息的表示和处理
  9. 20191003每日一句
  10. Timeline使用手册
  11. ssh远程连接网络构建
  12. 一分钟搞定网页监控,实现网站链接百度自动推送
  13. 某电商销售数据分析 SQL 面试题解析
  14. LSI Logic 1068 SAS 磁盘阵列卡配置教程
  15. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(一)
  16. java 日志门面_slf4j-日志门面担当
  17. 第八章 linux系统引导过程及引导修复
  18. SSH登录及失败解决
  19. Hbuilder内更改SVN地址(svn服务器IP变更)
  20. 使用思科模拟器 Cisco Packet Tracer 模拟交换机基本配置

热门文章

  1. (转)ABPA UI--Triggering PAI manually 通过设置新的OKCODE、触发PAI
  2. 如何看待腾讯 2022 校招薪资首发,白菜价 40W?
  3. sierrawireless
  4. 如何高效过滤游戏中的敏感词?
  5. 包含各种版本谷歌相机的网址及下载地址
  6. 网易html5,可拖曳附件 网易邮箱国内首家支持HTML5
  7. Web入门_朽木|学习笔记之第一章-数据库基本知识(1.1-1.7)
  8. LiveQing流媒体服务无插件直播
  9. utf8与unicode转换
  10. 什么翻译软件能拍照翻译?这些翻译软件可以拍照翻译