Android实现与Apache Tomcat服务器数据交互(MySql数据库)

需求:Android客户端连接服务器端MySQL数据库中的内容

环境部署

服务器:apache-tomcat-8.5.9

语言版本:Java 1.8.0_101

编译环境:Eclipse

android Studio

调用jar包:httpclient-4.2.5,httpcore-4.2.4 //HttpClient父类

mysql-connector-java-5.1.40-bin //用于连接mysql数据库

思路:涉及到服务器端mysql数据库安装、web应用部分开发和Android客户端开发三个部分

步骤:

1、mysql数据库安装

a、先安装mysql-installer-community-5.7.17.0,其中在Setup Type上选择“Server only”,然后记住数据库端口号和账号(例如:root)密码(例如:123456),如下图:

b、安装成功验证。命令行窗口输入密码,然后输入显示所有数据库命令:show databases; 一定要有分号,并按回车。

c、NavicatforMySQL下载及使用。注册,然后连接数据库,输入密码后,能够看到已存在的数据库,可以在其中进行相关数据库和数据表的创建操作。

(具体以参考资料中的内容为主)

2、web应用部分开发

a、新建servlet,并且配置好web.xml中的相应信息(在WebContent下的WEB-INF文件夹下加入web.xml文件来连接servlet与jsp前端),此外还需在libs中添加mysql-connector-java-5.1.37-bin.jar文件,代码如下:

package com.Servlet;

 import java.io.IOException;
 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 java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
 import com.DBTool.DBUtil;

 @WebServlet("/Servlet")
 public class Login extends HttpServlet {
   private static final long serialVersionUID = L;

   /**
   * @see HttpServlet#HttpServlet()
   */
   public 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());
   }

   /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     String ID = request.getParameter("ID");
     String PW= request.getParameter("PW");
     boolean type=false;
     response.setContentType("text/html; charset=UTF-8");
     PrintWriter out = response.getWriter();
     try
     {
       Connection con=DBUtil.getConnection();
       Statement stmt=con.createStatement();
       //mysql数据库中的数据表,表名叫:demotable ,需要自己预先在数据库中进行创建,包含相应的字段和记录。
       String sql="select * from mysql.demotable where uid="+ID+" and pwd="+PW;
       ResultSet rs=stmt.executeQuery(sql);
       while(rs.next())
       {
         type=true;
       }
     }
     catch(Exception ex)
     {
       ex.printStackTrace();
     }
     finally
     {
       DBUtil.Close();
       out.print(type);
       out.flush();
       out.close();
     }
   }

 }

web.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   <display-name>web</display-name>
   <servlet>
     <display-name>Login</display-name>
     <servlet-name>Login</servlet-name>
     <servlet-class>com.Servlet.Login</servlet-class>
   </servlet>
   <servlet-mapping>
     <servlet-name>Login</servlet-name>
     <url-pattern>/Login</url-pattern>
   </servlet-mapping>
   <welcome-file-list>
     <welcome-file>index.html</welcome-file>
     <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
 </web-app>

b、前端界面设计(TestPage.jsp)如下:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Insert title here</title>
 </head>
 <body>
 <form id="from" action="Login" method="post">
 <table>
 <tr><td>用户名</td><td><input type="text" name="ID"></td></tr>
 <tr><td>密码</td><td><input type="password" name="PW"></td></tr>
 <tr><td colspan="2" align="center"><input type="submit" value="登陆"/></td></tr>
 </table>
 </form>
 </body>
 </html>

c、在java Resources下的src文件夹中新建com.DBTool包,用作数据池来连接数据库,在包中建立DBUtil类实现功能,代码如下:

package com.DBTool;

 import java.sql.*;

 public class DBUtil {
   //其中mysql是数据库名称,在mysql57版本的数据库中已经预先新建完成;3306是mysql数据库的端口号。
   private static String url="jdbc:mysql://localhost:3306/mysql";
   //com.mysql.jdbc.Driver是mysql-connector-java-5.1.40中的驱动包路径
   private static String driverClass="com.mysql.jdbc.Driver";
   //mysql的账号和密码是在安装mysql中进行设置的,这里拿来用即可。
   private static String username="root";
   private static String password="123456";
   private static Connection conn;
   //装载驱动
   static{
     try{
       Class.forName(driverClass);
     }
     catch(ClassNotFoundException e){
       e.printStackTrace();
     }
   }
   //获取数据库连接
   public static Connection getConnection(){
     try{
       conn=DriverManager.getConnection(url,username,password);
     }
     catch(SQLException e){
       e.printStackTrace();
     }
     return conn;
   }
   //建立数据库连接
   public static void main(String[] args){
     Connection conn=DBUtil.getConnection();
     if(conn!=null){
       System.out.println("数据库连接成功");
     }
     else{
       System.out.println("数据库连接失败");
     }
   }
   //关闭数据库连接
   public static void Close(){
     if(conn!=null){
       try{
         conn.close();
       }
       catch(SQLException e){
         e.printStackTrace();
       }
     }
   }
 }

d、运行服务器,测试是否成功搭建。

3、Android部分开发

仅附上核心部分代码,如下:

 public void SendByHttpClient(final String id, final String pw){
     new Thread(new Runnable() {
       @Override
       public void run() {
         try {
           HttpClient httpclient=new DefaultHttpClient();
           HttpPost httpPost=new HttpPost("http://web应用部署服务器上的IP地址:/HttpClientDemo/Login");//服务器地址,指向Servlet
           List<NameValuePair> params=new ArrayList<NameValuePair>();//将id和pw装入list
           params.add(new BasicNameValuePair("ID",id));
           params.add(new BasicNameValuePair("PW",pw));
           final UrlEncodedFormEntity entity=new UrlEncodedFormEntity(params,"utf-8");//以UTF-8格式发送
           httpPost.setEntity(entity);
           HttpResponse httpResponse= httpclient.execute(httpPost);
           if(httpResponse.getStatusLine().getStatusCode()==200)//在200毫秒之内接收到返回值
           {
             HttpEntity entity=httpResponse.getEntity();
             String response=EntityUtils.toString(entity1, "utf-8");//以UTF-8格式解析
             Message message=new Message();
             message.what=USER_LOGIN;
             message.obj=response;
             handler.sendMessage(message);使用Message传递消息给线程
           }
         }
         catch (Exception e) {
           e.printStackTrace();
         }
       }
     }).start();
   }

最终,测试结果图,如下:

参考资料:

http://transcoder.tradaquan.com/from=1017649e/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%401320_2001%2Cta%40iphone_1_9.2_3_601/baiduid=3B77D44CFFB44688FD602EAD8A663022/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=9684581900815139314&order=2&fm=alhm&h5ad=1&srd=1&dict=32&tj=h5_mobile_2_0_10_title&w_qd=IlPT2AEptyoA_ykzv39b7vOxASxPcYSfDwWEKKelwb6TYslhS_&sec=22021&di=4d89010ccd0ca0f7&bdenc=1&tch=124.133.103.675.1.561&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRAUSD8L7qYZpPPtCPQpxkCwnWh_7YskNYWgK&eqid=86668bed7c43800010000003594fbeac&wd=&clk_info=%7B%22srcid%22%3A%221599%22%2C%22tplname%22%3A%22h5_mobile%22%2C%22t%22%3A1498398423079%2C%22sig%22%3A%2242687%22%2C%22xpath%22%3A%22div-a-h3%22%7DMySQL数据库安装与配置详解

http://blog.csdn.NET/qq_14923661/article/details/50461696  Android平台实现与Apache Tomcat服务器数据交互(MySql数据库)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Android客户端与服务器交互方式

    最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json.要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台.传输数据格式标准.交互方便. 为了与服务器通讯其实无非就两种协议HTTP和TCP,TCP的学习Socket,HTTP的话熟悉一下HTTP协议和相关Java API.而下面的几种方式就是从这两种协议扩展出来的:webservices soap.SSH的JSON(可参考:该链接

  • Android实现与Apache Tomcat服务器数据交互(MySql数据库)

    需求:Android客户端连接服务器端MySQL数据库中的内容 环境部署 服务器:apache-tomcat-8.5.9 语言版本:Java 1.8.0_101 编译环境:Eclipse android Studio 调用jar包:httpclient-4.2.5,httpcore-4.2.4 //HttpClient父类 mysql-connector-java-5.1.40-bin //用于连接mysql数据库 思路:涉及到服务器端mysql数据库安装.web应用部分开发和Android客户

  • Apache POI操作批量导入MySQL数据库

    目录 1.POI操作入门案例 1.1.从Excel文件读取数据1 1.2.从Excel文件读取数据2 1.3.向Excel文件写入数据 2.使用POI批量导入数据到MySQL数据库 2.1.创建导入数据的Excel模板文件 2.2.批量上传文件的后端代码编写 3.批量导入数据测试 poi介绍: Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操

  • .Net Core导入千万级数据至Mysql数据库的实现方法

    ​最近在工作中,涉及到一个数据迁移功能,从一个txt文本文件导入到MySQL功能. 数据迁移,在互联网企业可以说经常碰到,而且涉及到千万级.亿级的数据量是很常见的.大数据量迁移,这里面就涉及到一个问题:高性能的插入数据. 今天我们就来谈谈MySQL怎么高性能插入千万级的数据. 我们一起对比以下几种实现方法: 前期准备 订单测试表 CREATE TABLE `trade` ( `id` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',

  • PHP上传Excel文件导入数据到MySQL数据库示例

    最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里面的数据内容到MySQL数据库的小程序. 要用到的工具: ThinkPHP:轻量级国产PHP开发框架.可在ThinkPHP官网下载. PHPExcel:Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言.可在CodePlex官网下载.. 1.设计MySQL数据库product 创建product数据库 CREATE DATABASE product D

  • Python实现生成随机数据插入mysql数据库的方法

    本文实例讲述了Python实现生成随机数据插入mysql数据库的方法.分享给大家供大家参考,具体如下: 运行结果: 实现代码: import random as r import pymysql first=('张','王','李','赵','金','艾','单','龚','钱','周','吴','郑','孔','曺','严','华','吕','徐','何') middle=('芳','军','建','明','辉','芬','红','丽','功') last=('明','芳','','民','敏

  • 通过Shell脚本批量创建服务器上的MySQL数据库账号

    1.项目背景 因监控需要,我们需要在既有的每个MySQL实例上创建一个账号.公司有数百台 MySQL 实例,如果手动登入来创建账号很麻烦,也不现实.所以,我们写了一个简单的shell脚本,用来创建批量服务器的mysql 账号.  2.执行脚本内容; #!/bin/bash ## 此段shell 脚本的主要功能是实现在多个SQL Server IP实例上,创建账号.输入参数是两个,第一个是数据库所在的IPs,即多个Server IP构成的字符串,IP间用逗号隔开.第二个参数是 端口(3306 或

  • 88秒插入1000万条数据到MySQL数据库表的操作方法

    我用到的数据库为,mysql数据库5.7版本的 首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 > 4194304). You can change this value on the server by setting the max_allo

  • 教你用Django将前端的数据存入Mysql数据库

    目录 1.在app下的models.py中创建新的模板 2.数据迁移(用pycharm自带的Terminal工具即可) 3.在app下的views.py中创建新的视图 4.前端 5.效果 1.在app下的models.py中创建新的模板 具体代码如下: class Apply(models.Model): clas = models.CharField(max_length=32, verbose_name="班级") name = models.CharField(max_lengt

  • Excel数据导入Mysql数据库的实现代码

    首先做一下说明,为什么我要用Navicat,第一个原因,因为它是个不错的Mysql GUI工具,更重要的是,它可以将一些外部数据源导入Mysql数据库中.因为我的数据源是excel数据,所以想借助Navicat将其导入Mysql. 第一次运行,首先创建连接,主机名填写:localhost,端口为3306,然后填写用户名密码,OK.顺利的话,大家就可以看到名为localhost的连接图标了.双击点开它,一般Mysql默认有两个数据库,分别为mysql与test. 不用管它们,右键localhost

  • 抽取oracle数据到mysql数据库的实现过程

    在oracle数据库迁移至mysql数据库,除了oracle数据库模型移到mysql外,还一个重要环节就是要将oracle数据库的数据移到mysql数据库,本人尝试用过多款数据迁移程序,性能都不是很好的,于是自己动手写一个针对于oracle数据库数据迁移到mysql数据程序,其具体过程如下: 1.要抽取mysql表.字段及过滤条件的配制文件imp_data.sql 2.建立一个目录ETL_DIR 3.运行oracle数据库程序P_ETL_ORA_DATA,生成各表的csv数据文件,同时也生成一个

随机推荐