Android開發之登入驗證執行個體教程_Android

來源:互聯網
上載者:User

本文所述執行個體源自一個項目開發中的登入驗證功能,具體的要求就是,在Android端輸入使用者名稱和密碼,在伺服器端驗證MySQL資料庫中是否有此使用者,實現之前當然首要的是,如何使Android端的資料發送到伺服器端,具體的實現方法如下:

伺服器端:ManageServlet.java代碼如下:

public class ManageServlet extends HttpServlet {  public void doGet(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {    request.setCharacterEncoding("utf-8");    response.setCharacterEncoding("utf-8");    String name = request.getParameter("name");    String password = request.getParameter("password");    System.out.println("使用者名稱:"+name+" 密碼:"+password);  }  public void doPost(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {  }}

在這裡實現的僅僅是把使用者端的資料在控制台列印出來,相信學過jsp開發的大神,剩下的資料驗證應該不在話下,在此不再贅述。

接下來就是Android端了:

主activity:MainActivity.java頁面代碼如下:

public class MainActivity extends Activity {  private EditText textname = null;  private EditText textpassword = null;  private Button button = null;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);         textname = (EditText)findViewById(R.id.name);    textpassword = (EditText)findViewById(R.id.password);    button = (Button)findViewById(R.id.button);         button.setOnClickListener(new mybuttonlistener());       }  class mybuttonlistener implements OnClickListener{    boolean result=false;    String name;    String password;    public void onClick(View v) {      try {                name = textname.getText().toString();        name = new String(name.getBytes("ISO8859-1"), "UTF-8");        password = textpassword.getText().toString();        password = new String(password.getBytes("ISO8859-1"), "UTF-8");      } catch (UnsupportedEncodingException e1) {        // TODO Auto-generated catch block        e1.printStackTrace();      }      try {        result = NewsService.save(name,password);      } catch (Exception e) {        // TODO Auto-generated catch block        e.printStackTrace();      }      if(result){        Toast.makeText(MainActivity.this, R.string.ok, Toast.LENGTH_SHORT).show();      }else{        Toast.makeText(MainActivity.this, R.string.error, Toast.LENGTH_SHORT).show();      }    }  }}

布局檔案如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="${relativePackage}.${activityClass}"  >  <LinearLayout     android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    >    <TextView      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="@string/name" />    <EditText       android:id="@+id/name"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:hint="@string/playname"      android:singleLine="true"      />    <TextView      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="@string/password" />    <EditText       android:id="@+id/password"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:password="true"      android:hint="@string/playpass"      android:singleLine="true"      />    <Button       android:id="@+id/button"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:onClick=""      android:text="@string/submit"      />  </LinearLayout></RelativeLayout>

用於向伺服器端發送資料的service(NewsService):

public class NewsService {  /**   * 登入驗證   * @param name 姓名   * @param password 密碼   * @return   */  public static boolean save(String name, String password){    String path = "http://<span style="color: #ff0000;"><strong>192.168.1.104</strong></span>:8080/Register/ManageServlet";     Map<String, String> student = new HashMap<String, String>();    student.put("name", name);    student.put("password", password);    try {      return SendGETRequest(path, student, "UTF-8");    } catch (Exception e) {      // TODO Auto-generated catch block      e.printStackTrace();    }    return false;  }  /**   * 發送GET請求   * @param path  請求路徑   * @param student  請求參數   * @return 請求是否成功   * @throws Exception   */  private static boolean SendGETRequest(String path, Map<String, String> student, String ecoding) throws Exception{    // http://127.0.0.1:8080/Register/ManageServlet?name=1233&password=abc    StringBuilder url = new StringBuilder(path);    url.append("?");    for(Map.Entry<String, String> map : student.entrySet()){      url.append(map.getKey()).append("=");      url.append(URLEncoder.encode(map.getValue(), ecoding));      url.append("&");    }    url.deleteCharAt(url.length()-1);    System.out.println(url);    HttpsURLConnection conn = (HttpsURLConnection)new URL(url.toString()).openConnection();    conn.setConnectTimeout(100000);    conn.setRequestMethod("GET");    if(conn.getResponseCode() == 200){      return true;    }    return false;  }}

因為需要串連網路,一定要在AndroidManifest.xml進行網路許可權配置:

<uses-permission android:name="android.permission.INTERNET"/>

至此基本已經完成Android向伺服器端發送資料,希望本文執行個體對大家的Android程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.