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

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

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

Servlet部分重点代码:

  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. }  
		/**
		 * 功能:验证手机用户登录
		 */
		public void androidCheckUser(HttpServletRequest request,
				HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		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);	
		//调用dao
		UserDao uDao=new UserDao();
		if(uDao.checkUser(userName, passWord))
		{   //得到登录用户的权限类型
			String type=uDao.getType(userName);
			if(type.equals("高级")){
				request.setAttribute("result","high");
				request.getRequestDispatcher("login.jsp").forward(request, response);
			}else if(type.equals("普通")){
				request.setAttribute("result","common");
				request.getRequestDispatcher("login.jsp").forward(request, response);
			}else if(type.equals("超级")){
				request.setAttribute("result","super");	
				request.getRequestDispatcher("login.jsp").forward(request, response);
			}
		}else
		{
			request.setAttribute("result","false");
			request.getRequestDispatcher("login.jsp").forward(request, response);
		}
	}

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

JSP页面结构:

  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>  
<%@ page language="java" import="java.util.*" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%><?xml version="1.0" encoding="UTF-8"?>
<%String result=(String)request.getAttribute("result");%>
<result>
<flag><%=result%></flag>
</result>

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

  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.     }  
/**
	 * 验证用户登录是否合法
	 * 返回值:服务器端判断的标识
	 */
	public static String check(String name, String pass) throws XmlPullParserException, MalformedURLException, IOException {
		String path="http://135.32.89.17:8080/lss/UserServlet?flag=androidCheck";
		//将用户名和密码放入HashMap中
		Map<String,String> params=new HashMap<String,String>();
		params.put("userName", name);
		params.put("passWord", pass);	
		String checkr=uMethod.checkUser(path,params,"UTF-8");
		System.out.println("check"+checkr);
	    return checkr;		
	}

  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.         }  
public String checkUser(String path,
			Map<String, String> params,String encode) throws MalformedURLException, IOException, XmlPullParserException {
			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)
	         {
	    	   InputStream inputStream=conn.getInputStream(); 
	    	   System.out.println("准备解析!");
	    	   String s=parseXML(inputStream);
	    	   System.out.println("准备解析!"+s);
	      	  //将得到的XML内容的解析
	    	   if(s.equals("high")){  //权限为高级用户
	    		   return "high";
	    	   }else if(s.equals("common")){  //权限为普通用户
	    		   return "common";
	    	   }else if(s.equals("super")){   //权限为超级用户
	    		   return "super";
	    	   }else if(s.equals("false")){   //权限为超级用户
	    		   return "false";
	    	   }
	         }
			   return "false";
		     }
		/**
		 * 解析服务器端返回的XML 
		 */
		public  String parseXML(InputStream inputStream) throws XmlPullParserException, IOException {
			XmlPullParser parser=Xml.newPullParser();
			parser.setInput(inputStream,"UTF-8");
			String result=null;
			//得到开始文档事件
			int event=parser.getEventType();
			while(event!=XmlPullParser.END_DOCUMENT)
			{
		      switch(event)
			  {
				case XmlPullParser.START_TAG:
				  if("flag".equals(parser.getName()))
				  {
					  result=parser.nextText();
					  System.out.println("flag"+result);
				  }
				 break;
	//一定要加,不然报错Caused by: org.xmlpull.v1.XmlPullParserException: Premature end of document.
				case XmlPullParser.END_TAG: 	
					break;
			   }
				event = parser.next();
			}		
			return result;
		}


 

运行效果:

 

总结:

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

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值