您的位置:首页 > 移动开发 > Android开发

安卓实现登陆

2015-08-08 17:38 465 查看
1:安卓端通过访问web端来实现登录验证,并把用户的信息保存下来

2:web端的servlet,向安卓端发送json数据

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username  = request.getParameter("username");
String password  = request.getParameter("password");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
StringBuffer builder = new StringBuffer();
String UTFSB = null;
CompetitorMgrImpl cmi = CompetitorMgrImpl.getInstance();
//与数据库信息比对
if(cmi.checkLog(username, password)) {
//用户名和密码正确 构造Json数据
Competitor comp = cmi.getCompetitorByUsername(username);
builder.append('[');
builder.append('{');
builder.append("istrue:").append("\"ture\"").append(',');
builder.append("id:").append(comp.getId()).append(',');
builder.append("username:\"").append(comp.getUsername()).append("\",");
builder.append("realname:\"").append(comp.getRealname()).append("\",");
builder.append("matchage:").append(comp.getMatchage()).append(',');
builder.append("borth:\"").append(comp.getBorth()).append("\",");
builder.append("address:\"").append(comp.getAddress()).append("\",");
builder.append("sex:\"").append(comp.getSex()).append("\",");
builder.append("rpsd:\"").append(comp.getRpsd()).append("\"");
builder.append("}");
builder.append(']');
/*UTFSB = URLEncoder.encode (builder.toString(), "UTF-8" );*/
}
else {
builder.append('{');
builder.append('[');
builder.append("istrue:").append("\"false\"");
builder.append(']');
builder.append('}');
/*UTFSB = URLEncoder.encode (builder.toString(), "UTF-8" );*/
}
out.write(builder.toString());
}


3:在安卓端进行接收

a:登录按钮对应的监听事件

login.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
String un  = username.getText().toString();
String pd =  password.getText().toString();
if(UserLog.checkCompetitor(un, pd,MainActivity.this)) {
Intent intent = new Intent(MainActivity.this,LoginActivity.class );
startActivity(intent);
Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplicationContext(), "密码和用户名错误", Toast.LENGTH_SHORT).show();
}
}
});


b:Uerlog中的checkCompetitor(un, pd,MainActivity.this)方法来验证登录是否成功

public class UserLog {
public static boolean checkCompetitor(String username, String password, Context context)  {
String path="http://192.168.0.45:8080/tennisgame/UserLogs?"
+ "username="+username+"&password="+password;
URL url = null;
HttpURLConnection conn = null;
try {
url = new  URL(path);
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
//服务器做出了响应
if(conn.getResponseCode()==200){
InputStream in = conn.getInputStream();
return JasonParse.praseJason(in,context);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return false;
}
}


c:新建一个类来解析json数据

public class JasonParse {

public static boolean praseJason(InputStream in,Context context) {
boolean flag = false;
byte[] data = readInputstream(in);
String json = new String(data);
try {
JSONArray  array = new JSONArray(json);
JSONObject jsonObject=array.getJSONObject(0);
String result=jsonObject.getString("istrue");
if(result.equals("false")){
flag =  false;
}
else {
flag = true;
Competitor comp = new Competitor();
comp=new Competitor();
comp.setId(jsonObject.getInt("id"));
comp.setUsername(jsonObject.getString("username"));
comp.setRpsd(jsonObject.getString("rpsd"));
comp.setRealname(jsonObject.getString("realname"));
comp.setMatchage(jsonObject.getInt("matchage"));
comp.setBorth(jsonObject.getString("borth"));
comp.setAddress(jsonObject.getString("address"));
comp.setSex(jsonObject.getString("sex"));
PerferenceSer.saveCompetitor(comp,context);
}
} catch (JSONException e) {
e.printStackTrace();
}
return flag;
}
//从服务器获取信息转换成byte[]
public static byte[] readInputstream(InputStream in) {
byte[] buffer = new byte[1024];
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len = 0;
try {
while((len=in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return out.toByteArray();
}

}


d:如果登陆成功PerferenceSer类用于保存接收到的信息

public class PerferenceSer {

public  static void  saveCompetitor(Competitor competitor,Context context) {
SharedPreferences sp = context.getSharedPreferences("competitor",Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putInt("id", competitor.getId());
editor.putString("username", competitor.getUsername());
editor.putString("rpsd", competitor.getPassword());
editor.putString("realname", competitor.getRealname());
editor.putInt("matchage", competitor.getMatchage());
editor.putString("borth", competitor.getBorth());
editor.putString("address", competitor.getAddress());
editor.putString("sex", competitor.getSex());
//把内存中的数据提交到文件中
editor.commit();
}

public  Map<String, String> gatCompetitor(Context context) {
Map<String, String> competitor = new HashMap<String, String>();
SharedPreferences ps = context.getSharedPreferences("competitor", Context.MODE_PRIVATE);
//第二个值是,当不存在前一个参数的时候,返回它
competitor.put("id",String.valueOf(ps.getInt("id", 0)));
competitor.put("username", ps.getString("username", ""));
competitor.put("password",  ps.getString("rpsd", ""));
competitor.put("realname", ps.getString("realname", ""));
competitor.put("borth", ps.getString("borth", ""));
competitor.put("address", ps.getString("address", ""));
competitor.put("sex", ps.getString("sex", ""));
competitor.put("matchage", String.valueOf(ps.getInt("matchage", 0)));
return competitor;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android