安卓实现登陆

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;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值