广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android开发之登录验证实例教程

    2018-04-16 10:56:32 次阅读 稿源:互联网
    广告

    本文所述实例源自一个项目开发中的登录验证功能,具体的要求就是,在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程序设计有所帮助。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告