日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android_Servlet验证的简单登录程序

發布時間:2025/6/15 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android_Servlet验证的简单登录程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該程序通過提交數據給服務器,服務器通過servlet驗證后,返回信息給客戶端。

先上效果圖吧:此登錄的客戶端Demo是通過下載的源碼,服務器端我自己寫的。

登錄成功后效果:



1、Android客戶端的代碼為:

[java]?view plaincopy
  • package?com.loulijun.logindemo;??
  • ??
  • import?java.security.MessageDigest;??
  • import?java.util.ArrayList;??
  • import?java.util.List;??
  • ??
  • import?org.apache.http.HttpResponse;??
  • 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?org.apache.http.params.BasicHttpParams;??
  • import?org.apache.http.params.HttpConnectionParams;??
  • import?org.apache.http.protocol.HTTP;??
  • import?org.apache.http.util.EntityUtils;??
  • ??
  • import?android.app.Activity;??
  • import?android.app.AlertDialog;??
  • import?android.app.ProgressDialog;??
  • import?android.content.Context;??
  • import?android.content.DialogInterface;??
  • import?android.content.Intent;??
  • import?android.content.SharedPreferences;??
  • import?android.content.SharedPreferences.Editor;??
  • import?android.net.ConnectivityManager;??
  • import?android.net.NetworkInfo.State;??
  • import?android.os.Bundle;??
  • import?android.os.Handler;??
  • import?android.os.Message;??
  • import?android.provider.Settings;??
  • import?android.view.View;??
  • import?android.widget.Button;??
  • import?android.widget.CheckBox;??
  • import?android.widget.CompoundButton;??
  • import?android.widget.EditText;??
  • import?android.widget.Toast;??
  • ??
  • public?class?LoginDemoActivity?extends?Activity?{??
  • ????/**?Called?when?the?activity?is?first?created.?*/??
  • ????private?Button?loginBtn;??
  • ????private?Button?registerBtn;??
  • ????private?EditText?inputUsername;??
  • ????private?EditText?inputPassword;??
  • ????private?ProgressDialog?mDialog;??
  • ????private?String?responseMsg?=?"";??
  • ????private?static?final?int?REQUEST_TIMEOUT?=?5*1000;//設置請求超時10秒鐘????
  • ????private?static?final?int?SO_TIMEOUT?=?10*1000;??//設置等待數據超時時間10秒鐘????
  • ????private?static?final?int?LOGIN_OK?=?1;??
  • ??????
  • ??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????setContentView(R.layout.login);??
  • ????????loginBtn?=?(Button)findViewById(R.id.login_btn_login);??
  • ????????registerBtn?=?(Button)findViewById(R.id.login_btn_zhuce);??
  • ????????inputUsername?=?(EditText)findViewById(R.id.login_edit_account);??
  • ????????inputPassword?=?(EditText)findViewById(R.id.login_edit_pwd);??
  • ??????????????????
  • ????????//登錄??
  • ????????loginBtn.setOnClickListener(new?Button.OnClickListener()??
  • ????????{??
  • ??
  • ????????????@Override??
  • ????????????public?void?onClick(View?arg0)?{??
  • ????????????????mDialog?=?new?ProgressDialog(LoginDemoActivity.this);??
  • ????????????????mDialog.setTitle("登陸");??
  • ????????????????mDialog.setMessage("正在登陸服務器,請稍后...");??
  • ????????????????mDialog.show();??
  • ????????????????Thread?loginThread?=?new?Thread(new?LoginThread());??
  • ??????????????????
  • ????????????????loginThread.start();??
  • ??
  • ????????????}??
  • ??????????????
  • ????????});??
  • ??????????
  • ????????registerBtn.setOnClickListener(new?Button.OnClickListener()??
  • ????????{??
  • ??
  • ????????????@Override??
  • ????????????public?void?onClick(View?arg0)?{??
  • ????????????????Intent?intent?=?new?Intent();??
  • ????????????????intent.setClass(LoginDemoActivity.this,?RegisterActivity.class);??
  • ????????????????startActivity(intent);??
  • ????????????}??
  • ??????????????
  • ????????});??
  • ????}??
  • ??????
  • ??????
  • ????private?boolean?loginServer(String?username,?String?password)??
  • ????{??
  • ????????boolean?loginValidate?=?false;??
  • ????????//使用apache?HTTP客戶端實現??
  • ????????String?urlStr?=?"http://10.0.2.2:8080/Login/Login";??
  • ????????HttpPost?request?=?new?HttpPost(urlStr);??
  • ????????//如果傳遞參數多的話,可以對傳遞的參數進行封裝??
  • ????????List<NameValuePair>?params?=?new?ArrayList<NameValuePair>();??
  • ????????//添加用戶名和密碼??
  • ????????params.add(new?BasicNameValuePair("username",username));??
  • ????????params.add(new?BasicNameValuePair("password",password));??
  • ????????try??
  • ????????{??
  • ????????????//設置請求參數項??
  • ????????????request.setEntity(new?UrlEncodedFormEntity(params,?HTTP.UTF_8));??
  • ????????????HttpClient?client?=?getHttpClient();??
  • ????????????//執行請求返回相應??
  • ????????????HttpResponse?response?=?client.execute(request);??
  • ??????????????
  • ????????????//判斷是否請求成功??
  • ????????????if(response.getStatusLine().getStatusCode()==200)??
  • ????????????{??
  • ????????????????loginValidate?=?true;??
  • ????????????????//獲得響應信息??
  • ????????????????responseMsg?=?EntityUtils.toString(response.getEntity());??
  • ????????????}??
  • ????????}catch(Exception?e)??
  • ????????{??
  • ????????????e.printStackTrace();??
  • ????????}??
  • ????????return?loginValidate;??
  • ????}??
  • ??????
  • ?????
  • ??????
  • ????//初始化HttpClient,并設置超時??
  • ????public?HttpClient?getHttpClient()??
  • ????{??
  • ????????BasicHttpParams?httpParams?=?new?BasicHttpParams();??
  • ????????HttpConnectionParams.setConnectionTimeout(httpParams,?REQUEST_TIMEOUT);??
  • ????????HttpConnectionParams.setSoTimeout(httpParams,?SO_TIMEOUT);??
  • ????????HttpClient?client?=?new?DefaultHttpClient(httpParams);??
  • ????????return?client;??
  • ????}??
  • ??
  • ????//Handler??
  • ????Handler?handler?=?new?Handler()??
  • ????{??
  • ????????public?void?handleMessage(Message?msg)??
  • ????????{??
  • ????????????switch(msg.what)??
  • ????????????{??
  • ????????????case?0:??
  • ????????????????mDialog.cancel();??
  • ??
  • ????????????????Toast.makeText(getApplicationContext(),?"登錄成功!",?Toast.LENGTH_SHORT).show();??
  • ????????????????Intent?intent?=?new?Intent();??
  • ????????????????intent.setClass(LoginDemoActivity.this,?MainActivity.class);??
  • ????????????????startActivity(intent);??
  • ????????????????finish();??
  • ????????????????break;??
  • ????????????case?1:??
  • ????????????????mDialog.cancel();??
  • ????????????????Toast.makeText(getApplicationContext(),?"密碼錯誤",?Toast.LENGTH_SHORT).show();??
  • ????????????????break;??
  • ????????????case?2:??
  • ????????????????mDialog.cancel();??
  • ????????????????Toast.makeText(getApplicationContext(),?"URL驗證失敗",?Toast.LENGTH_SHORT).show();??
  • ????????????????break;??
  • ??????????????
  • ????????????}??
  • ??????????????
  • ????????}??
  • ????};??
  • ??????
  • ????//LoginThread線程類??
  • ????class?LoginThread?implements?Runnable??
  • ????{??
  • ??
  • ????????@Override??
  • ????????public?void?run()?{??
  • ????????????String?username?=?inputUsername.getText().toString();??
  • ????????????String?password?=?inputPassword.getText().toString();?????
  • ????????????System.out.println("username="+username+":password="+password);??
  • ??????????????????
  • ????????????//URL合法,但是這一步并不驗證密碼是否正確??
  • ????????????boolean?loginValidate?=?loginServer(username,?password);??
  • ????????????System.out.println("----------------------------bool?is?:"+loginValidate+"----------response:"+responseMsg);??
  • ????????????Message?msg?=?handler.obtainMessage();??
  • ????????????if(loginValidate)??
  • ????????????{??
  • ????????????????if(responseMsg.equals("success"))??
  • ????????????????{??
  • ????????????????????msg.what?=?0;??
  • ????????????????????handler.sendMessage(msg);??
  • ????????????????}else??
  • ????????????????{??
  • ????????????????????msg.what?=?1;??
  • ????????????????????handler.sendMessage(msg);??
  • ????????????????}??
  • ??????????????????
  • ????????????}else??
  • ????????????{??
  • ????????????????msg.what?=?2;??
  • ????????????????handler.sendMessage(msg);??
  • ????????????}??
  • ????????}??
  • ??????????
  • ????}??
  • ?????
  • ??????
  • }??

  • 2、服務器端的主要代碼為:

    由于只是一個測試Demo,所以該測試并沒有通過數據庫的查詢,而是直接在程序中寫上固定的用戶名和密碼進行匹配。

    [java]?view plaincopy
  • public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)??
  • ????????????throws?ServletException,?IOException??
  • ????{??
  • ????????//response.setContentType("text/html");??
  • ????????PrintWriter?out?=?response.getWriter();??
  • ????????request.setCharacterEncoding("utf-8");??
  • ??????????
  • ????????String?name?=?request.getParameter("username");??
  • ????????//out.print(name);??
  • ????????String?pass?=?request.getParameter("password");??
  • ????????//out.print(pass);??
  • ????????if(("zlf").equals(name)&&"123456".equals(pass))??
  • ????????{??
  • ????????????out.print("success");??
  • ????????}??
  • ????????else???
  • ????????{??
  • ????????????out.print("failed");??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?The?doPost?method?of?the?servlet.?<br>?
  • ?????*?
  • ?????*?This?method?is?called?when?a?form?has?its?tag?value?method?equals?to?post.?
  • ?????*??
  • ?????*?@param?request?the?request?send?by?the?client?to?the?server?
  • ?????*?@param?response?the?response?send?by?the?server?to?the?client?
  • ?????*?@throws?ServletException?if?an?error?occurred?
  • ?????*?@throws?IOException?if?an?error?occurred?
  • ?????*/??
  • ????public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)??
  • ????????????throws?ServletException,?IOException??
  • ????{??
  • ????????doGet(request,?response);??
  • ????}??


  • 如有需要,下載源碼為:

    改源碼有下載的別人的源碼,然后我自己沒進行數據庫連接,因此我改寫了一下。在源碼中,有一個android客戶端文件夾,一個Login文件夾,一個LoginServlet文件夾。Login文件夾是我自己改寫的servlet,測試可以正常運行

    總結

    以上是生活随笔為你收集整理的Android_Servlet验证的简单登录程序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。