一.功能描述

  在Android客户端实现登录界面,当将用户名和密码填入文本框并点击登录按钮时,将认证信息传送至Tomcat服务器进行认证,若用户名和密码匹配,则Android客户端提示登录成功,否则提示登陆失败。

 

二.开发环境

Android客户端:Android Studio2.2.3

服务器端:MyEclipse2016 + Tomcat9.0

 

三.详细过程

(1)Android客户端的开发

    新建一个名为LoginGuest的工程,该工程只包含LoginActivityLoginToServer两个类,其中LoginToServer对象在LoginActivity中被调用,实现向服务器的信息传递。在AndroidManifest.xml中添加网络权限:


 实现LoginActivity的布局文件activity_login.xml的布局:

<?xml version="1.0" encoding="utf-8"?>                        


效果如下:

   Android客户端与Tomcat服务器通信实现登录验证_第1张图片

 

 ② 

写GuestToServer类

package com.example.leidong.loginguest;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;/** * Created by leido on 2017/2/15. */public class GuestToServer {    //由于Tomcat服务器部署在本地,url为本地Tomcat服务的url,IP地址为本地主机IP地址    private String url = "http://XXX.XXX.XXX.XXX:8080/LoginServer/LoginServlet";    //服务器返回的结果    String result = "";    /**     * 使用Post方式向服务器发送请求并返回响应     * @param username 传递给服务器的username     * @param password 传递给服务器的password     * @return     */    public String doPost(String username, String password) throws IOException {        HttpClient httpClient = new DefaultHttpClient();        HttpPost httpPost = new HttpPost(url);        //将username与password参数装入List中        NameValuePair param1 = new BasicNameValuePair("username", username);        NameValuePair param2 = new BasicNameValuePair("password", password);        List params = new ArrayList();        params.add(param1);        params.add(param2);        //将参数包装如HttpEntity中并放入HttpPost的请求体中        HttpEntity httpEntity = new UrlEncodedFormEntity(params, "GBK");        httpPost.setEntity(httpEntity);        HttpResponse httpResponse = httpClient.execute(httpPost);        //如果响应成功        if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){            //得到信息体            HttpEntity entity = httpResponse.getEntity();            InputStream inputStream = entity.getContent();            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));            String readLine = null;            while((readLine = br.readLine()) != null){                result += readLine;            }            inputStream.close();            return result;        }        //响应失败        else{            return "Error";        }    }}
注意Android6.0之后SDK不支持HttpClient,此时需要在build.gradle中的android{......}中

Android客户端与Tomcat服务器通信实现登录验证_第2张图片    

加入如下代码:



 ③

写LoginActivity类

package com.example.leidong.loginguest;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import java.io.IOException;public class LoginActivity extends AppCompatActivity {    //登录用户名输入框    private EditText et_username;    //登录密码输入框    private EditText et_password;    //登录按钮    private Button bt_login;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_login);        //获取组件        init();        //对登录按钮的点击监控        bt_login.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                final Handler myHandler = new Handler(){                    public void handleMessage(Message msg){                        String responseResult = (String)msg.obj;                        //登录成功                        if(responseResult.equals("true")){                            Toast.makeText(LoginActivity.this, "登录成功!", Toast.LENGTH_LONG).show();                        }                        //登录失败                        else{                            Toast.makeText(LoginActivity.this, "登录失败!", Toast.LENGTH_LONG).show();                        }                    }                };                new Thread(new Runnable() {                    @Override                    public void run() {                        GuestToServer guestToServer = new GuestToServer();                        try {                            String result = guestToServer.doPost(et_username.getText().toString().trim(), et_password.getText().toString().trim());                            Message msg = new Message();                            msg.obj = result;                            myHandler.sendMessage(msg);                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }).start();            }        });    }    /**     * 获取组件     */    private void init() {        et_username = (EditText)findViewById(R.id.et_username);        et_password = (EditText)findViewById(R.id.et_password);        bt_login = (Button)findViewById(R.id.bt_login);    }}


(2)MyEclipse、Tomcat服务器端的开发


新建一个Java Web工程,新建一个名为LoginServlet的Servlet, 修改器deGet()方法,,代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/html");PrintWriter out = response.getWriter();String username = request.getParameter("username");String password = request.getParameter("password");if("hahaha".equals(username) && "123456".equals(password)){    out.print(true);}else{out.print(false);}}
默认的正确用户名为hahaha,正确密码为123456
 ② 

此时打开服务器在后台看到其已经运行

Android客户端与Tomcat服务器通信实现登录验证_第3张图片

 

四.运行结果

(1)输入错误的用户名或密码

Android客户端与Tomcat服务器通信实现登录验证_第4张图片

(2)输入正确的用户名和密码

 Android客户端与Tomcat服务器通信实现登录验证_第5张图片



更多相关文章

  1. android实现密码框右侧显示小眼睛
  2. json解析android客户端源码
  3. android:服务器和客户端通信2
  4. JS判断客户端是否是iOS或者Android
  5. 《淘宝客户端 for Android》项目实战 html webkit android css3
  6. Android:密码显示隐藏
  7. 【Android增量升级系列_01】 浅谈Android增量更新客户端的实现方
  8. Android 创建服务器 NanoHttpd
  9. 【Android】socket通信【客户端访问】

随机推荐

  1. PHP使用JWT创建Token的实例详解
  2. PHP中php_uname的用法详解
  3. PHP源码加密方法实例详解
  4. 详述php的下载安装教程
  5. php实现简单的留言板功能(附源码)
  6. 基于PHP的extract的用法详解
  7. 详解PHP随机生成中国人姓名的类
  8. php+javascript实现用户注册模块(附源码)
  9. PHP获取文件扩展名的实例解析
  10. 在 PHP 中将 Redis 封装成单例模式