android注册登录界面

android的注册登录界面,主要写一下用到的东西。

首先,后台用jsp写,这里的话用到的返回数据为json,可以用一种很简单的方式

<%@ page language="java" contentType="text/json; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*,java.io.*,java.util.*" %>

这里面修改 contentType=“text/json”就可以了。

对于客户端,主要是

  • 界面之间的跳转
  • 对服务器的请求
  • 对json数据的解析

1)界面之间的跳转
用Intent,Intent i=new Intent(MainActivity.this,ResActivity.class);
startActivity(i)

2)android的网络请求主要有三个大方式我们这里用httpclinet
首先,android不允许把http请求放在主线程中(容易阻塞),所以必须新建一个副
线程来处理网络请求部分。具体请求时首先用到client(DefaultHttpClient类)用于
执行请求。然后用到HttpPost作为一个post对象(get方法用HttpGet),再是post参数的
设置,UrlEncodedFormEntity entity=new UrlEncodedFormEntity(parameter,"utf-8");
parameter为一个数组列表。


	private  void get(final String name,final String password){
		new Thread(new Runnable(){
			public void run(){
    	BufferedReader reader=null;
    	StringBuffer sb=null;
    	String result="";
    	DefaultHttpClient client=new DefaultHttpClient();
    	String uri="http://10.65.89.152/server/servers.jsp";
    	
    	List parameter=new ArrayList();
    	parameter.add(new BasicNameValuePair("username",name));
    	parameter.add(new BasicNameValuePair("password",password));
    	
    	HttpPost request=new HttpPost(uri);
    	
    	//HttpResponse responses=client.execute(request);
    	try{
    		UrlEncodedFormEntity entity=new UrlEncodedFormEntity(parameter,"utf-8");
    		request.setEntity(entity);
    		//Toast.makeText(MainActivity.this,"success1 connect",Toast.LENGTH_SHORT).show();
    		//request.setEntity(entity);
    		HttpResponse response=client.execute(request);
    		//Toast.makeText(MainActivity.this,"success2 connect",Toast.LENGTH_SHORT).show();
    		if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
    			//Toast.makeText(MainActivity.this,"success connect",Toast.LENGTH_SHORT).show();
    			reader=new BufferedReader(new InputStreamReader(response.getEntity().getContent()));    	
    			sb=new StringBuffer();
    			String line="";
    			String NL=System.getProperty("line.separator");
    			while((line=reader.readLine())!=null){
    				sb.append(line);
    			}
    			}
    		//Toast.makeText(MainActivity.this,"faile connect",Toast.LENGTH_SHORT).show();
    	}catch(ClientProtocolException e){
    		//Toast.makeText(MainActivity.this,"error connect",Toast.LENGTH_SHORT).show();
    		e.printStackTrace();
    	}catch(IOException e){
    		//Toast.makeText(MainActivity.this,"error2 connect",Toast.LENGTH_SHORT).show();
    		e.printStackTrace();
    	}
    	
        	try{
        		if(null!=reader){
        			reader.close();
        			reader=null;
        		}
        		}catch(IOException e){
        			e.printStackTrace();
        	}
        	if(null!=sb){
        		result=sb.toString();
        	}
        
        	 Message message = new Message();
        	 message.what = SHOW_RESPONSE;
        	 message.obj = result;
        	 handler.sendMessage(message);
        	 Message messages=new Message();
        	 
        	 
    }
			}).start();
		}

3)对于json对象的处理。
用到一个jar包 gson。
private void parseJSONWithJSONObject(String jsonData){
try {
//将json字符串jsonData装入JSON数组,即JSONArray
//jsonData可以是从文件中读取,也可以从服务器端获得
JSONArray jsonArray = new JSONArray(jsonData);
String state=null;
String name=null;
String id=null;
for (int i = 0; i< jsonArray.length(); i++) {
//循环遍历,依次取出JSONObject对象
//用getInt和getString方法取出对应键值
JSONObject jsonObject = jsonArray.getJSONObject(i);
// int stu_no = jsonObject.getInt("stu_no");

            state=jsonObject.getString("code");
            name=jsonObject.getString("name");
            id=jsonObject.getString("id");
            Log.d("MainActivity","code:"+state);
            
        }
      if(state.equals("success")){
        	Intent ii=new Intent(MainActivity.this,SecActivity.class);
			ii.putExtra("USERNAME",name);
			ii.putExtra("id", id);
			startActivity(ii);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}	

4)主线程与副线程的通信
public static final int SHOW_RESPONSE = 0;

 private Handler handler = new Handler() {
	  
	          @Override
	          public void handleMessage(Message msg) {
	              super.handleMessage(msg);
	              switch (msg.what) {
	             case SHOW_RESPONSE:
	                  String response = (String) msg.obj;
	                  //textviews.setText(response);
	                  parseJSONWithJSONObject(response);
	                  break;
	 
	              default:
	                  break;
	              }            
	          }
	  
	      };
posted @ 2017-12-31 22:43  qynx  阅读(2707)  评论(0编辑  收藏  举报