Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 268|回复: 0

[默认分类] Android客户端向服务器端传值——登录实现(一)

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-27 17:17:42 | 显示全部楼层 |阅读模式


      
      根据实习科目需求,先完成Android客户端的登录功能。
      要实现登录必然涉及到客户端与服务器端的交互,即客户端需要将用户输入的账号和密码传给服务器端,服务器端连接数据库对其进行验证。
      细化问题,先研究一下客户端向服务器端传值的方法。。
      新建一个web工程,建一个Servlet如下:
       
       
       
       
         [java]
          view plain
         copy
         print
         ?
         
       
       
        public class UserServlet extends HttpServlet {  
            private static final long serialVersionUID = 1L;     
            public UserServlet() {  
                super();  
            }  
            public void doGet(HttpServletRequest request, HttpServletResponse response)  
                    throws ServletException, IOException {  
                String userName=request.getParameter("userName");  
                String passWord=request.getParameter("passWord");  
                //在服务器端解决中文乱码问题   
                userName=NewString.getNewString(userName);  
                passWord=NewString.getNewString(passWord);  
                System.out.println("账号:"+userName);  
                System.out.println("密码:"+passWord);   
            }     
            protected void doPost(HttpServletRequest request,  
                    HttpServletResponse response) throws ServletException, IOException {  
                this.doGet(request, response);  
            }  
        }  
       
       
    1. public class UserServlet extends HttpServlet {
    2.         private static final long serialVersionUID = 1L;   
    3.         public UserServlet() {
    4.                 super();
    5.         }
    6.         public void doGet(HttpServletRequest request, HttpServletResponse response)
    7.                         throws ServletException, IOException {
    8.                 String userName=request.getParameter("userName");
    9.                 String passWord=request.getParameter("passWord");
    10.                 //在服务器端解决中文乱码问题
    11.                 userName=NewString.getNewString(userName);
    12.                 passWord=NewString.getNewString(passWord);
    13.                 System.out.println("账号:"+userName);
    14.                 System.out.println("密码:"+passWord);       
    15.         }       
    16.         protected void doPost(HttpServletRequest request,
    17.                         HttpServletResponse response) throws ServletException, IOException {
    18.                 this.doGet(request, response);
    19.         }
    20. }
    复制代码

      客户端登录界面如下,布局比较简单。
      
      Activity代码:
       
       
       
       
         [java]
          view plain
         copy
         print
         ?
         
       
       
        public class LoginActivity extends Activity {  
            private EditText userName;  
            private EditText passWord;  
            @Override  
            public void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
                setContentView(R.layout.activity_main);         
                userName=(EditText)this.findViewById(R.id.userName);  
                passWord=(EditText)this.findViewById(R.id.passWord);         
            }  
             /**
              * 用户登录的方法
              */  
            public void login(View v)  
            {   
                //取得用户输入的账号和密码   
                String name=userName.getText().toString();  
                String pass=passWord.getText().toString();  
                boolean result=UserService.check(name,pass);  
                if(result)  
                {  
                    Toast.makeText(getApplicationContext(),R.string.success,1).show();  
                }else  
                {  
                    Toast.makeText(getApplicationContext(),R.string.fail,1).show();  
                }     
            }  
        }  
       
       
    1. public class LoginActivity extends Activity {
    2.     private EditText userName;
    3.         private EditText passWord;
    4.     @Override
    5.     public void onCreate(Bundle savedInstanceState) {
    6.         super.onCreate(savedInstanceState);
    7.         setContentView(R.layout.activity_main);        
    8.         userName=(EditText)this.findViewById(R.id.userName);
    9.         passWord=(EditText)this.findViewById(R.id.passWord);      
    10.     }
    11.      /**
    12.       * 用户登录的方法
    13.       */
    14.     public void login(View v)
    15.     {  
    16.             //取得用户输入的账号和密码
    17.             String name=userName.getText().toString();
    18.             String pass=passWord.getText().toString();
    19.             boolean result=UserService.check(name,pass);
    20.             if(result)
    21.             {
    22.                     Toast.makeText(getApplicationContext(),R.string.success,1).show();
    23.             }else
    24.             {
    25.                     Toast.makeText(getApplicationContext(),R.string.fail,1).show();
    26.             }         
    27.     }
    28. }
    复制代码

      具体实现的工具类:
       
       
       
       
         [java]
          view plain
         copy
         print
         ?
         
       
       
        public class UserService {  
            /**
             * 验证用户登录是否合法
             * 返回值:请求是否成功
             */  
            public static boolean check(String name, String pass) {  
                String path="http://135.32.89.17:8080/lss/UserServlet";  
                //将用户名和密码放入HashMap中   
                Map<String,String> params=new HashMap<String,String>();  
                params.put("userName", name);  
                params.put("passWord", pass);         
                try {  
                    return sendGETRequest(path,params,"UTF-8");  
                } catch (MalformedURLException e) {  
                    // TODO Auto-generated catch block   
                    e.printStackTrace();  
                } catch (IOException e) {  
                    // TODO Auto-generated catch block   
                    e.printStackTrace();  
                }  
                return false;  
            }  
            private static boolean sendGETRequest(String path,  
                Map<String, String> params,String encode) throws MalformedURLException, IOException {  
                StringBuilder url=new StringBuilder(path);  
                url.append("?");  
                for(Map.Entry<String, String> entry:params.entrySet())  
                {  
                    url.append(entry.getKey()).append("=");  
                    url.append(URLEncoder.encode(entry.getValue(),encode));  
                    url.append("&");  
                }  
                //删掉最后一个&   
                url.deleteCharAt(url.length()-1);  
                HttpURLConnection conn=(HttpURLConnection)new URL(url.toString()).openConnection();  
                conn.setConnectTimeout(5000);  
                conn.setRequestMethod("GET");  
                if(conn.getResponseCode()==200)  
                 {  
                   return true;  
                 }  
                   return false;  
                 }  
        }  
       
       
    1. public class UserService {
    2.         /**
    3.          * 验证用户登录是否合法
    4.          * 返回值:请求是否成功
    5.          */
    6.         public static boolean check(String name, String pass) {
    7.                 String path="http://135.32.89.17:8080/lss/UserServlet";
    8.                 //将用户名和密码放入HashMap中
    9.                 Map<String,String> params=new HashMap<String,String>();
    10.                 params.put("userName", name);
    11.                 params.put("passWord", pass);               
    12.                 try {
    13.                         return sendGETRequest(path,params,"UTF-8");
    14.                 } catch (MalformedURLException e) {
    15.                         // TODO Auto-generated catch block
    16.                         e.printStackTrace();
    17.                 } catch (IOException e) {
    18.                         // TODO Auto-generated catch block
    19.                         e.printStackTrace();
    20.                 }
    21.                 return false;
    22.         }
    23.         private static boolean sendGETRequest(String path,
    24.                 Map<String, String> params,String encode) throws MalformedURLException, IOException {
    25.                 StringBuilder url=new StringBuilder(path);
    26.                 url.append("?");
    27.                 for(Map.Entry<String, String> entry:params.entrySet())
    28.                 {
    29.                         url.append(entry.getKey()).append("=");
    30.                         url.append(URLEncoder.encode(entry.getValue(),encode));
    31.                         url.append("&");
    32.                 }
    33.                 //删掉最后一个&
    34.                 url.deleteCharAt(url.length()-1);
    35.         HttpURLConnection conn=(HttpURLConnection)new URL(url.toString()).openConnection();
    36.         conn.setConnectTimeout(5000);
    37.         conn.setRequestMethod("GET");
    38.         if(conn.getResponseCode()==200)
    39.          {
    40.                return true;
    41.          }
    42.                    return false;
    43.              }
    44. }
    复制代码

      运行结果:
      
      服务器端接收内容:
      
       
      总结:
      客户端的工具类将用户输入的账号和密码放入HashMap当中,循环遍历取出HashMap中的键和值,构造出形如
      http://www.xxx.xxx?key1=value1&key2=value2的字符串。利用该字符串连接服务器,传送相关值。
      
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-24 13:14 , Processed in 0.516548 second(s), 51 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表