安卓实现登陆
2015-08-08 17:38
465 查看
1:安卓端通过访问web端来实现登录验证,并把用户的信息保存下来
2:web端的servlet,向安卓端发送json数据
3:在安卓端进行接收
a:登录按钮对应的监听事件
b:Uerlog中的checkCompetitor(un, pd,MainActivity.this)方法来验证登录是否成功
c:新建一个类来解析json数据
d:如果登陆成功PerferenceSer类用于保存接收到的信息
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; } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories