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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM