使用jsp与MySql进行Android连接

时间:2016-01-02 10:46:46

标签: java android jsp

我正在JSP中开发一个Web应用程序。对于同一个项目,我正在开发一款Android应用。 Web应用程序使用Apache Tomcat和MySQL。现在我想制作与同一MySQL数据库接口的Android应用程序的注册表和登录表。但是如何?

我找到了很多教程,但都使用PHP脚本。我使用Eclipse进行Web开发,使用Android Studio进行Android应用。

1 个答案:

答案 0 :(得分:0)

这将涉及至少4个步骤

  1. 创建一个代表您数据的POJO。

    public class LoginData implements Serializable{
    
    public String loginName;
    public String loginPassword;
    //all other attributes that you need to send over HTTP
    }
    
  2. 创建简单的HTTP客户端(使用Java API,Apache HTTP客户端或其他一些库)。我的例子是使用Apache

    //您只需要一个客户端,因此请将其设为静态

    public static DefaultHttpClient getHttpClient(int timeout) {
    
     DefaultHttpClient client = null;
     SchemeRegistry Current_Scheme = new SchemeRegistry();
     Current_Scheme.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
     HttpParams Current_Params = new BasicHttpParams();
     //set initial params
     HttpConnectionParams.setConnectionTimeout(Current_Params, timeout);
     HttpConnectionParams.setSoTimeout(Current_Params, timeout);
     ThreadSafeClientConnManager Current_Manager = new ThreadSafeClientConnManager(Current_Params, Current_Scheme);
     client = new DefaultHttpClient(Current_Manager, Current_Params);
     return client;
    } 
    
  3. 为了发送你的POJO,你应该先将它序列化(第一个参数是Object,这样它就可以接受任何类型,而不仅仅是LoginData) //数据将以这种方式格式化为application / x-www-form(BTW,Web应用程序默认使用此方式)

    HttpEntity serializePOJO(Object o,String encoding)
    List<NameValuePair> postParams = new ArrayList<NameValuePair>();
    Map<String, Object> maps=objectMapper.convertValue(o, Map.class);
    Set<String> keys=maps.keySet();
    Iterator<String> itr=keys.iterator();
    while(itr.hasNext()){
        String key=itr.next();
        Object value=maps.get(key);
        if(value!=null){
            postParams.add(new BasicNameValuePair(key, value.toString()));
        }
    }
    UrlEncodedFormEntity data=null;
    try {
        data = new UrlEncodedFormEntity(postParams,encoding);//e.g.UTF-8
    
    } catch (UnsupportedEncodingException e) {
        throw e;
    }
    return data;
    

    }

  4. 发出HTTP请求

    public void checkLogin(LoginData data)throws Exception 
    {
     String url = "localhost:8080/myApp/login";
     HttpPost request=null;
     try{
        request=new HttpPost(url);
        request.setEntity(serializePOJO(data));
    
        HttpResponse response=getHttpClient(10000).execute(hg);
        if(response.getStatusLine().getStatusCode()!=200){
            //handle exception
        }
    }finally{
        if(request!=null){
            request.releaseConnection();
        }
    }
    }
    
  5. 您可以将objectMapper初始化为

        objectMapper=new ObjectMapper();
        objectMapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    

    您的servlet应该连接到数据库并执行所有处理,而不是JSP页面。