生活随笔
收集整理的這篇文章主要介紹了
Android_Servlet验证的简单登录程序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
該程序通過提交數(shù)據(jù)給服務(wù)器,服務(wù)器通過servlet驗證后,返回信息給客戶端。
先上效果圖吧:此登錄的客戶端Demo是通過下載的源碼,服務(wù)器端我自己寫的。
登錄成功后效果:
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?{?? ?????? ????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;?? ????private?static?final?int?SO_TIMEOUT?=?10*1000;???? ????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("正在登陸服務(wù)器,請稍后...");?? ????????????????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;?? ?????????? ????????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;?? ????}?? ?????? ????? ?????? ?????? ????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?=?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;?? ?????????????? ????????????}?? ?????????????? ????????}?? ????};?? ?????? ?????? ????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);?? ?????????????????? ?????????????? ????????????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、服務(wù)器端的主要代碼為:
由于只是一個測試Demo,所以該測試并沒有通過數(shù)據(jù)庫的查詢,而是直接在程序中寫上固定的用戶名和密碼進(jìn)行匹配。
[java]?view plaincopy
public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)?? ????????????throws?ServletException,?IOException?? ????{?? ?????????? ????????PrintWriter?out?=?response.getWriter();?? ????????request.setCharacterEncoding("utf-8");?? ?????????? ????????String?name?=?request.getParameter("username");?? ?????????? ????????String?pass?=?request.getParameter("password");?? ?????????? ????????if(("zlf").equals(name)&&"123456".equals(pass))?? ????????{?? ????????????out.print("success");?? ????????}?? ????????else??? ????????{?? ????????????out.print("failed");?? ????????}?? ????}?? ?? ????? ? ? ? ? ? ? ? ? ?? ????public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)?? ????????????throws?ServletException,?IOException?? ????{?? ????????doGet(request,?response);?? ????}??
如有需要,下載源碼為:
改源碼有下載的別人的源碼,然后我自己沒進(jìn)行數(shù)據(jù)庫連接,因此我改寫了一下。在源碼中,有一個android客戶端文件夾,一個Login文件夾,一個LoginServlet文件夾。Login文件夾是我自己改寫的servlet,測試可以正常運(yùn)行
總結(jié)
以上是生活随笔為你收集整理的Android_Servlet验证的简单登录程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。