android验证数据处理,android 获取网络连接(登陆验证+获取数据)

android获取网络连接及相关事件

在android 中,仅仅是UI设计 ,还不能满足用户的一些需求,相应的如果用户需要登陆到app,我们就要进行一些认证了。本篇主要记录的是通过网络连接到后台,从数据库中查找验证用户的合法性。

首先我们需要一些后台的支持,这里是建立在有mysql数据库,切建立了相应的用户表,同时实现了对用户表的一些增删查修的service类,以便能够对数据库进行操作。这些操作也都是建立在能够连接数据库的基础上的,如果对于这些的基础的操作不是太了解的话,可以参考我的以下的博客

此时,你已能够简单的从数据库里面获取东西,插入东西,删除东西,更新条目了。

现在,需要建立一个web项目。这时,一些上面提到的东西都就可以分包归纳,以便于管理。

那么现在,就需要写一写给android后台提供数据的源代码了。

这里我主要是通过写一些servlet程序,给android提供后台的支持。

关于为什么要写servlet ,主要是,我最近写的一些的web 项目是用MVC框架模式写的。

可以参考我的博客:MVC相关内容

现在,最基本的东西已经就绪。

先说一下,android与后台是怎么进行数据传输的:通常,有两种传输的方式,一种是以XML的方式传输,另外一种是封装成JSON数据,以字符串的方式传输,(当然,关于封装成json数据,我们可以用网上一些打包好的类,也可以用自己的方式封装数据,关键是解析json数据的时候,要自己或他人能够解析出来。)在这里我用的是封装成json数据。

关于如何解析json数据的,会新开一篇博文详细介绍。

好了,一切就绪,我们就开干了。

首先写后台的返回请求数据的servlet程序(其实就是xxx.java的java程序)。

这里是以最近做的网球赛事管理系统作为例子的:

这时为android建立的包:

0818b9ca8b590ca3270a3433284dd417.png

这里是登录后台的源码,下面,就来解释一下:

1.设置对提交数据的处理。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//response.getWriter().append("Served at: ").append(request.getContextPath());

doPost(request, response);

}

对于以GET方式提交的数据,在这里我们也是以 处理以POST方式提交的的程序 来处理。

关于request 与response,就是两个HttpServletRequest,与HttpServletResponse类型的对象,主要是一些参数信息,以及一些对象。同时里面包含了一些基本的方法。

2.设置字符编码,防止乱码。

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

上面的是设置字符的编码,通常与android端设置的相对应。

3.获取参数

String name = request.getParameter("name");

String pwd = request.getParameter("pwd");

从请求对象中获取参数,这里的请求对象,是由客户端向服务端的请求。

这里获取的是用户名和密码两个参数。

4.定义及声明一些稍后用到的引用变量。

competitorManager cpm = new competitorManagerimpl();

competitor cp =null;

String json=null;

StringBuilder sb = new StringBuilder();

PrintWriter out = response.getWriter();

String json1 ;

其中,competitorManager 是一个自己编写的对数据库competitor表操作的管理的接口,里面包含了一些对competitor操作的声明。其定义如下:

package cn.hpu.tennisGame.service;

import java.util.List;

import cn.hpu.tennisGame.model.competitor;

public interface competitorManager {

List selectAll();

boolean addC(competitor c);

boolean deleteC(competitor c);

boolean updateC(competitor c);

competitor selectOne(int id );

competitor selectOne(String name);

}

具体的实现稍后将会以源码贴出,现在知道,是怎么回事就行了,

competitor selectOne(String  name); 是从数据库中通过名字把这条项目的信息抽出,然后以competitor对象的形式返回,(就是将信息放到了对象里面,。),

关于competitor类,是写的一个model类,关于model类的描述,最后也会以代码的形式展现。

里面主要是,一些相关的属性。

PrintWriter out = response.getWriter(); 这个是冲响应对象获取打印对象。稍后将数据直接向外打印。

StringBuilder 是字符串生成器,在追加,插入字符(串)方面,性能好于StringBuffer ,.

这里是如果自己装配json数据的话,会用到,目前,这里用不到。因为,这里是用.jar包里面提供的类。

5.获取密码,并且判断是否相同,根据情况返回数据。

try {

cp = cpm.selectOne(name);

pwd =Integer.toString( (Integer.toString(pwd.hashCode())+cp.getUsername()).hashCode());

System.out.println(cp.getPassword());

if(cp==null)

{

json= AppInterface.toJson(0,"failed" , "User doesn't exist !");

}

else if(cp.getPassword().equals(pwd)){

json= AppInterface.toJson(1,"success" , cp);

}else {

json= AppInterface.toJson(0,"failed" , "The password id wrong !");

}

out.write(json);

out.flush();

out.close();

} catch (Exception e) {

// TODO: handle exception

System.out.println(this.getServletName()+"#########"+e.getStackTrace());

}

json是一个String 类型的字串。

5.1这里主要是,通过名字活取一个条目(封装在对象里面了)。

5.2取得从参数中获取的密码,经过一个求哈希值的运算,得到最终密码(数据库中存的密码)。

5.3从对象中获取用户密码。并且判断是否与用户输入密码的最终密码相同。如果相同,则以一种方式封装json数据信息,里面主要是状态码,信息,对象。

如下: 下面的方法在AppInterface里面

public static String toJson(int code ,String msg ,Object obj)

{

String str="";

Map map = toMap(code ,msg ,obj);

JSONObject jObject = JSONObject.fromObject(map);

return jObject.toString();

}//这个方法中的obj是一个含有一个对象信息的对象。,也可以是一个含有多个对象的map对象的list数组

public static String toJson(String msg,Object obj)

{

String str="";

Map map = toMap( msg, obj);

JSONObject jObject = JSONObject.fromObject(map);

return jObject.toString();

}

5.4 通过刚才的out,把json数据打印出去,

out.write(json);

out.flush();

out.close();

下面的是:

android_login.java

package cn.hpu.tennisGame.android_servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import cn.hpu.tennisGame.Interface.app.util.AppInterface;

import cn.hpu.tennisGame.model.competitor;

import cn.hpu.tennisGame.service.competitorManager;

import cn.hpu.tennisGame.service.competitorManagerimpl;

import net.sf.json.JSONObject;

/**

* Servlet implementation class android_login

*/

@WebServlet("/android_login")

public class android_login extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public android_login() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//response.getWriter().append("Served at: ").append(request.getContextPath());

doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//doGet(request, response);

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

String name = request.getParameter("name");

String pwd = request.getParameter("pwd");

competitorManager cpm = new competitorManagerimpl();

competitor cp =null;

String json=null;

StringBuilder sb = new StringBuilder();

PrintWriter out = response.getWriter();

String json1 ;

try {

cp = cpm.selectOne(name);

pwd =Integer.toString( (Integer.toString(pwd.hashCode())+cp.getUsername()).hashCode());

System.out.println(cp.getPassword());

if(cp==null)

{

/*sb.append("[{");

sb.append("\"isSuccess\":");

sb.append("\"no\"");

sb.append("}]");

out.write("wrong");

System.out.println("nnnnnnnnnnnnn");

*/

json= AppInterface.toJson(0,"failed" , "User doesn't exist !");

}

else if(cp.getPassword().equals(pwd)){

/*sb.append("[{");

sb.append("\"isSuccess\":");

sb.append("\"yes\"");

sb.append("},");

sb.append("{");

sb.append(',');

sb.append("\"username\":\"").append(cp.getUsername()).append("\",");

sb.append("\"realname\":\"").append(cp.getRealname()).append("\",");

sb.append("\"matchage\":").append(cp.getMatchage()).append(',');

sb.append("\"borth\":\"").append(cp.getBorth()).append("\",");

sb.append("\"address\":\"").append(cp.getAddress()).append("\",");

sb.append("\"sex\":\"").append(cp.getSex()).append("\",");

sb.append("\"password\":\"").append(cp.getPassword()).append("\",");

sb.append("\"id\":").append(cp.getId());

sb.append("}]");*/

json= AppInterface.toJson(1,"success" , cp);

         //这部分是字自己写的封装的类,将一些信息封装到json数据里面了
}else {json= AppInterface.toJson(0,"failed" , "The password id wrong !");}out.write(json);out.flush();out.close();} catch (Exception e) {// TODO: handle exceptionSystem.out.println(this.getServletName()+"#########"+e.getStackTrace());}out = response.getWriter();out.write(sb.toString());out.flush();out.close();}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值