首页 > 代码库 > Android_登陆之客户端逻辑

Android_登陆之客户端逻辑

我的个人网站 :www.shichengwu.com

登陆实例客户端处理逻辑:LoginActivity

package com.amaker.wlo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import com.amaker.util.HttpUtil;
import com.amaker.util.LoginEncryption;

public class LoginActivity extends Activity {
	/**
	 * 登陆界面
	 * @author shichengwu
	 */
	
	// 声明登录按钮
	private Button loginBtn;
	// 声明用户名、密码输入框
	private EditText userEditText,pwdEditText;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		EndAllActivity.getInstance().addActivity(this);
		
		// 为美观,暂不设置标题
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		// 设置当前Activity界面布局
		setContentView(R.layout.activity_login);
		
		// 通过findViewById方法实例化组件
		loginBtn = (Button)findViewById(R.id.login);
		// 通过findViewById方法实例化组件
		userEditText = (EditText)findViewById(R.id.userEditText);
		// 通过findViewById方法实例化组件
		pwdEditText = (EditText)findViewById(R.id.pwdEditText);
		
		
		
		loginBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				
				//登录
				if(validate()){
					if(login()){
						Intent intent = new Intent(LoginActivity.this,MainMenuActivity.class);
						startActivity(intent);
						finish();
					}
					else{
						showDialog("用户名或者密码错误,请重新输入!");	
				        }
					  }
					  }
			
		     });
	}
	
	
	// 登录方法
	private boolean login(){
		// 获得用户名称
		String username = userEditText.getText().toString();
		// 获得密码
		//MD5加密后与数据库进行对比
		String pwd = LoginEncryption.string2MD5(pwdEditText.getText().toString());
		// 获得登录结果
		String result=query(username,pwd);
		if(result!=null&&result.equals("0")){
			return false;
		}else{
			saveUserMsg(result);
			return true;
		}
	}
	
	// 将用户信息保存到配置文件
	private void saveUserMsg(String msg){
		// 用户编号
		String id = "";
		// 用户名称
		String name = "";
		// 获得信息数组
		String[] msgs = msg.split(";");
		int idx = msgs[0].indexOf("=");
		id = msgs[0].substring(idx+1);
		idx = msgs[1].indexOf("=");
		name = msgs[1].substring(idx+1);
		// 共享信息
		SharedPreferences pre = getSharedPreferences("user_msg", MODE_WORLD_WRITEABLE);
		SharedPreferences.Editor editor = pre.edit();
		editor.putString("id", id);
		editor.putString("name", name);
		editor.commit();
	}
	
	// 验证方法
	private boolean validate(){
		String username = userEditText.getText().toString();
		if(username.equals("")){
			showDialog("用户名称是必填项!");
			return false;
		}
		String pwd = pwdEditText.getText().toString();
		if(pwd.equals("")){
			showDialog("用户密码是必填项!");
			return false;
		}
		return true;
	}
	private void showDialog(String msg){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage(msg)
		       .setCancelable(false)
		       .setPositiveButton("确定", new DialogInterface.OnClickListener() {
		           public void onClick(DialogInterface dialog, int id) {
		           }
		       });
		AlertDialog alert = builder.create();
		alert.show();
	}
	// 根据用户名称密码查询
	private String query(String username,String password){
		// 查询参数
		String queryString = "username="+username+"&password="+password;
		// url
		String url = HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString;
		// 查询返回结果
		return HttpUtil.queryStringForPost(url);
    }
	
}


讲到这里,大家可能对客户端和服务器交互不甚理解,下一篇会讲到涉及的JDBC模型以及登陆实例的服务器处理逻辑。

Android_登陆之客户端逻辑