实习日志(13):服务器端向Android客户端传值——登录实现(二)

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

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

Servlet部分重点代码:

		/**
		 * 功能:验证手机用户登录
		 */
		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页面结构:

<%@ 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页面,得到服务器端传来的判定结果,根据结果弹出提示框。

/**
	 * 验证用户登录是否合法
	 * 返回值:服务器端判断的标识
	 */
	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;		
	}

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进行解析,得到标识值。

 

 

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值