【问题标题】:Android application database connectivity with web app using Jsp使用 Jsp 与 Web 应用程序的 Android 应用程序数据库连接
【发布时间】:2014-03-09 17:07:44
【问题描述】:

我正在用 JSP 开发一个 Web 应用程序。对于同一个项目,我正在开发一个 Android 应用程序。 Web 应用程序使用 Apache Tomcat 和 MySQL。现在我想通过从 MySQL 数据库中检索数据来从 Android 应用程序登录。但是怎么做呢?

我确实找到了很多教程,但都使用 PHP 脚本。我对这两个应用程序都使用 Eclipse。

【问题讨论】:

  • 您使用的是 JDBC 吗?我认为大多数与 DB 相关的项目都在 Java 中使用它们。那有教程:docs.oracle.com/javase/tutorial/jdbc你想在Android上使用DB,还是在jsp中使用?
  • 是的,我正在使用 JDBC,并且我已经使用 mySql 在 jsp 上创建了整个数据库,我只想在 android 应用程序中使用该数据库
  • 我不明白你的问题是什么。对我来说,您似乎有 2 个选项:通过 JDBC (stackoverflow.com/questions/15732853/…) 连接到 mysql 数据库或在 JSP 中创建接口并从 android 调用该接口。你在尝试别的吗?

标签: java android mysql jsp


【解决方案1】:

对于安卓试试这个。

           private static HttpClient getHttpClient() {
        if (mHttpClient == null) {
            mHttpClient = new DefaultHttpClient();
            final HttpParams params = mHttpClient.getParams();
            HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT);
            HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT);
            ConnManagerParams.setTimeout(params, HTTP_TIMEOUT);
        }
        return mHttpClient;     
    }   

然后

                public static String sendFirst(String requestString) throws Exception {
        BufferedReader in = null;
        try {
            HttpClient client = getHttpClient();
            HttpPost request = new HttpPost(universal_URL_MENU+"?request_menu="+start_menu);


            HttpResponse response = client.execute(request); 
            System.out.println("response in class"+response);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) {
                sb.append(line + NL);
            }
            in.close();

             result = sb.toString();
   //     }
        }catch(Exception e){
            e.printStackTrace();  
            System.out.println("catch");  
        }

        finally {
            if (in != null) {  
                try {
                    in.close();   
                } catch (IOException e) {   
                    e.printStackTrace();    
                }
            }
        }
        return result;    
    }

在哪里

      public static String universal_URL_MENU = "http://192.***.1.@:9999/my_Project/ReqFromTabFor.do";

现在适用于 Jsp 或 Servlet

      try{ 
      PrintWriter out=res.getWriter();
     String subcategory=req.getParameter("request_menu");
     System.out.println("Receive : "+subcategory); 
    JSONObject jobj=UserDelegate.reqFromTabForMenuBySCatg(subcategory);
       }
     if(jobj!=null){
     out.println(jobj); 
    }else{ 
   out.print("Sorry Not Available");
    }
    }catch(Exception e){ e.printStackTrace(); }

【讨论】:

    【解决方案2】:

    客户端(您的 Android 应用)和 服务器 之间发生的事情是松散耦合的,这意味着它们除了通信的协议之外没有任何关系,对于 Web 服务,它是 HTTP。

    通常客户端(应用程序或网络浏览器)使用 POST 或 GET 方法发出 HTTP 请求发送参数(例如登录名、密码)。服务器获取这些参数并根据需要对其进行处理。

    这听起来很明显,但你说所有教程都使用 php 脚本,所以你似乎很困惑:你在 Android 上的问题?还是你的问题出在服务器上?

    无论服务器技术(asp、cgi、jsp、php...)和数据库(MySql、Oracle...)如何,您在 Android 应用程序中所需的代码都是完全相同的,因为 HTTP 协议是标准的。

    这是我从here 复制的示例,用于使用两个 POST 参数发出简单的 HTTP 请求。

    public void postData() {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");
    
        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("id", "12345"));
            nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
    
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
    } 
    

    【讨论】:

      猜你喜欢
      • 2019-07-24
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      相关资源
      最近更新 更多