文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 10:21

关注

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

您可能感兴趣的文章:Android手机注册登录时获取验证码之后倒计时功能(知识点总结)Android实现登录注册功能封装Android客户端实现注册、登录详解(2)Android实现闪屏及注册和登录界面之间的切换效果Android客户端实现注册、登录详解(1)Android注册登录实时自动获取短信验证码Android设计登录界面、找回密码、注册功能Android开发之注册登录方法示例Android实现登录功能demo示例Android登录注册功能 数据库SQLite验证


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯