服务器端向Android客户端传值——登录实现(二)

服务器端向Android客户端传值——登录实现(二)

  6981人阅读  评论(20)  收藏  举报

上次已经完成了Android客户端向服务器端传值的功能,接下来的任务是服务器端通过连接数据库对传来的值进行判定,并将判定结果返回客户端。

对传来的数值进行判定的处理过程与web开发相同,比较简单。重点是将判定结果返回客户端的实现:

Servlet部分重点代码:

[java]  view plain copy
  1. /** 
  2.  * 功能:验证手机用户登录 
  3.  */  
  4. public void androidCheckUser(HttpServletRequest request,  
  5.         HttpServletResponse response) throws ServletException, IOException {  
  6. PrintWriter out = response.getWriter();  
  7. String userName=request.getParameter("userName");  
  8. String passWord=request.getParameter("passWord");  
  9. //在服务器端解决中文乱码问题   
  10. userName=NewString.getNewString(userName);  
  11. passWord=NewString.getNewString(passWord);  
  12. System.out.println("账号:"+userName);  
  13. System.out.println("密码:"+passWord);   
  14. //调用dao   
  15. UserDao uDao=new UserDao();  
  16. if(uDao.checkUser(userName, passWord))  
  17. {   //得到登录用户的权限类型   
  18.     String type=uDao.getType(userName);  
  19.     if(type.equals("高级")){  
  20.         request.setAttribute("result","high");  
  21.         request.getRequestDispatcher("login.jsp").forward(request, response);  
  22.     }else if(type.equals("普通")){  
  23.         request.setAttribute("result","common");  
  24.         request.getRequestDispatcher("login.jsp").forward(request, response);  
  25.     }else if(type.equals("超级")){  
  26.         request.setAttribute("result","super");   
  27.         request.getRequestDispatcher("login.jsp").forward(request, response);  
  28.     }  
  29. }else  
  30. {  
  31.     request.setAttribute("result","false");  
  32.     request.getRequestDispatcher("login.jsp").forward(request, response);  
  33. }  
[java]  view plain copy
  1. /** 
  2.  * 功能:验证手机用户登录 
  3.  */  
  4. public void androidCheckUser(HttpServletRequest request,  
  5.         HttpServletResponse response) throws ServletException, IOException {  
  6. PrintWriter out = response.getWriter();  
  7. String userName=request.getParameter("userName");  
  8. String passWord=request.getParameter("passWord");  
  9. //在服务器端解决中文乱码问题  
  10. userName=NewString.getNewString(userName);  
  11. passWord=NewString.getNewString(passWord);  
  12. System.out.println("账号:"+userName);  
  13. System.out.println("密码:"+passWord);   
  14. //调用dao  
  15. UserDao uDao=new UserDao();  
  16. if(uDao.checkUser(userName, passWord))  
  17. {   //得到登录用户的权限类型  
  18.     String type=uDao.getType(userName);  
  19.     if(type.equals("高级")){  
  20.         request.setAttribute("result","high");  
  21.         request.getRequestDispatcher("login.jsp").forward(request, response);  
  22.     }else if(type.equals("普通")){  
  23.         request.setAttribute("result","common");  
  24.         request.getRequestDispatcher("login.jsp").forward(request, response);  
  25.     }else if(type.equals("超级")){  
  26.         request.setAttribute("result","super");   
  27.         request.getRequestDispatcher("login.jsp").forward(request, response);  
  28.     }  
  29. }else  
  30. {  
  31.     request.setAttribute("result","false");  
  32.     request.getRequestDispatcher("login.jsp").forward(request, response);  
  33. }  

如上所示,Servlet调用Dao进行判定,将判定标识写入XML格式的JSP页面中。

JSP页面结构:

[java]  view plain copy
  1. <%@ page language="java" import="java.util.*" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%><?xml version="1.0" encoding="UTF-8"?>  
  2. <%String result=(String)request.getAttribute("result");%>  
  3. <result>  
  4. <flag><%=result%></flag>  
  5. </result>  
[java]  view plain copy
  1. <%@ page language="java" import="java.util.*" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%><?xml version="1.0" encoding="UTF-8"?>  
  2. <%String result=(String)request.getAttribute("result");%>  
  3. <result>  
  4. <flag><%=result%></flag>  
  5. </result>  

Android客户端解析XML格式的JSP页面,得到服务器端传来的判定结果,根据结果弹出提示框。

[java]  view plain copy
  1. /** 
  2.      * 验证用户登录是否合法 
  3.      * 返回值:服务器端判断的标识 
  4.      */  
  5.     public static String check(String name, String pass) throws XmlPullParserException, MalformedURLException, IOException {  
  6.         String path="http://135.32.89.17:8080/lss/UserServlet?flag=androidCheck";  
  7.         //将用户名和密码放入HashMap中   
  8.         Map<String,String> params=new HashMap<String,String>();  
  9.         params.put("userName", name);  
  10.         params.put("passWord", pass);     
  11.         String checkr=uMethod.checkUser(path,params,"UTF-8");  
  12.         System.out.println("check"+checkr);  
  13.         return checkr;        
  14.     }  
[java]  view plain copy
  1. /** 
  2.      * 验证用户登录是否合法 
  3.      * 返回值:服务器端判断的标识 
  4.      */  
  5.     public static String check(String name, String pass) throws XmlPullParserException, MalformedURLException, IOException {  
  6.         String path="http://135.32.89.17:8080/lss/UserServlet?flag=androidCheck";  
  7.         //将用户名和密码放入HashMap中  
  8.         Map<String,String> params=new HashMap<String,String>();  
  9.         params.put("userName", name);  
  10.         params.put("passWord", pass);     
  11.         String checkr=uMethod.checkUser(path,params,"UTF-8");  
  12.         System.out.println("check"+checkr);  
  13.         return checkr;        
  14.     }  

[java]  view plain copy
  1. public String checkUser(String path,  
  2.             Map<String, String> params,String encode) throws MalformedURLException, IOException, XmlPullParserException {  
  3.             StringBuilder url=new StringBuilder(path);  
  4.             url.append("&");  
  5.             for(Map.Entry<String, String> entry:params.entrySet())  
  6.             {  
  7.                 url.append(entry.getKey()).append("=");  
  8.                 url.append(URLEncoder.encode(entry.getValue(),encode));  
  9.                 url.append("&");  
  10.             }  
  11.             //删掉最后一个&   
  12.             url.deleteCharAt(url.length()-1);  
  13.             HttpURLConnection conn=(HttpURLConnection)new URL(url.toString()).openConnection();  
  14.             conn.setConnectTimeout(5000);  
  15.             conn.setRequestMethod("GET");  
  16.             if(conn.getResponseCode()==200)  
  17.              {  
  18.                InputStream inputStream=conn.getInputStream();   
  19.                System.out.println("准备解析!");  
  20.                String s=parseXML(inputStream);  
  21.                System.out.println("准备解析!"+s);  
  22.               //将得到的XML内容的解析   
  23.                if(s.equals("high")){  //权限为高级用户   
  24.                    return "high";  
  25.                }else if(s.equals("common")){  //权限为普通用户   
  26.                    return "common";  
  27.                }else if(s.equals("super")){   //权限为超级用户   
  28.                    return "super";  
  29.                }else if(s.equals("false")){   //权限为超级用户   
  30.                    return "false";  
  31.                }  
  32.              }  
  33.                return "false";  
  34.              }  
  35.         /** 
  36.          * 解析服务器端返回的XML  
  37.          */  
  38.         public  String parseXML(InputStream inputStream) throws XmlPullParserException, IOException {  
  39.             XmlPullParser parser=Xml.newPullParser();  
  40.             parser.setInput(inputStream,"UTF-8");  
  41.             String result=null;  
  42.             //得到开始文档事件   
  43.             int event=parser.getEventType();  
  44.             while(event!=XmlPullParser.END_DOCUMENT)  
  45.             {  
  46.               switch(event)  
  47.               {  
  48.                 case XmlPullParser.START_TAG:  
  49.                   if("flag".equals(parser.getName()))  
  50.                   {  
  51.                       result=parser.nextText();  
  52.                       System.out.println("flag"+result);  
  53.                   }  
  54.                  break;  
  55.     //一定要加,不然报错Caused by: org.xmlpull.v1.XmlPullParserException: Premature end of document.   
  56.                 case XmlPullParser.END_TAG:       
  57.                     break;  
  58.                }  
  59.                 event = parser.next();  
  60.             }         
  61.             return result;  
  62.         }  
[java]  view plain copy
  1. public String checkUser(String path,  
  2.             Map<String, String> params,String encode) throws MalformedURLException, IOException, XmlPullParserException {  
  3.             StringBuilder url=new StringBuilder(path);  
  4.             url.append("&");  
  5.             for(Map.Entry<String, String> entry:params.entrySet())  
  6.             {  
  7.                 url.append(entry.getKey()).append("=");  
  8.                 url.append(URLEncoder.encode(entry.getValue(),encode));  
  9.                 url.append("&");  
  10.             }  
  11.             //删掉最后一个&  
  12.             url.deleteCharAt(url.length()-1);  
  13.             HttpURLConnection conn=(HttpURLConnection)new URL(url.toString()).openConnection();  
  14.             conn.setConnectTimeout(5000);  
  15.             conn.setRequestMethod("GET");  
  16.             if(conn.getResponseCode()==200)  
  17.              {  
  18.                InputStream inputStream=conn.getInputStream();   
  19.                System.out.println("准备解析!");  
  20.                String s=parseXML(inputStream);  
  21.                System.out.println("准备解析!"+s);  
  22.               //将得到的XML内容的解析  
  23.                if(s.equals("high")){  //权限为高级用户  
  24.                    return "high";  
  25.                }else if(s.equals("common")){  //权限为普通用户  
  26.                    return "common";  
  27.                }else if(s.equals("super")){   //权限为超级用户  
  28.                    return "super";  
  29.                }else if(s.equals("false")){   //权限为超级用户  
  30.                    return "false";  
  31.                }  
  32.              }  
  33.                return "false";  
  34.              }  
  35.         /** 
  36.          * 解析服务器端返回的XML  
  37.          */  
  38.         public  String parseXML(InputStream inputStream) throws XmlPullParserException, IOException {  
  39.             XmlPullParser parser=Xml.newPullParser();  
  40.             parser.setInput(inputStream,"UTF-8");  
  41.             String result=null;  
  42.             //得到开始文档事件  
  43.             int event=parser.getEventType();  
  44.             while(event!=XmlPullParser.END_DOCUMENT)  
  45.             {  
  46.               switch(event)  
  47.               {  
  48.                 case XmlPullParser.START_TAG:  
  49.                   if("flag".equals(parser.getName()))  
  50.                   {  
  51.                       result=parser.nextText();  
  52.                       System.out.println("flag"+result);  
  53.                   }  
  54.                  break;  
  55.     //一定要加,不然报错Caused by: org.xmlpull.v1.XmlPullParserException: Premature end of document.  
  56.                 case XmlPullParser.END_TAG:       
  57.                     break;  
  58.                }  
  59.                 event = parser.next();  
  60.             }         
  61.             return result;  
  62.         }  


 

运行效果:

 

总结:

服务器端将所传值写入XML格式的JSP页面中,Android对XML进行解析,得到标识值

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值