Android 客户端与服务器端进行数据交互(一登录服务器端)

Posted Codingma

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 客户端与服务器端进行数据交互(一登录服务器端)相关的知识,希望对你有一定的参考价值。

概要

安卓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传参和取参时的key
    public 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 stub
        users = 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 客户端与服务器端进行数据交互(一登录服务器端)的主要内容,如果未能解决你的问题,请参考以下文章

Android 客户端与服务器端进行数据交互(一登录服务器端)

Android 客户端与服务器端进行数据交互(二登录客户端)

Android 客户端与服务器端进行数据交互(二登录客户端)

Android 使用JSON格式与服务器交互 中文乱码问题解决

android客户端和服务器端怎么交互

第八章 网络的时代—网络开发