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

发布时间 - 2026-01-11 02:04:17    点击率:

需求: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=22025&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数据库)

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


# android和服务器交互  # android与服务器交互  # 安卓与服务器数据交互  # Android连接MySQL数据库详细教程  # Android连接MySQL数据库并进行增删改查操作示例讲解  # Android连接MySQL数据库实现方法详解  # 数据库中  # 参考资料  # 输入密码  # 客户端  # 端口号  # 连接数据库  # 是在  # 涉及到  # 还需  # 命令行  # 并按  # 大家多多  # 如下图  # 来用  # 返回值  # 包中  # 之内  # 器上  # 先安装  # 夹中 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  JavaScript如何实现继承_有哪些常用方法  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何在阿里云虚拟主机上快速搭建个人网站?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Laravel如何使用Service Container和依赖注入?(代码示例)  如何快速登录WAP自助建站平台?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  郑州企业网站制作公司,郑州招聘网站有哪些?  Laravel如何使用查询构建器?(Query Builder高级用法)  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Java垃圾回收器的方法和原理总结  网站制作报价单模板图片,小松挖机官方网站报价?  网易LOFTER官网链接 老福特网页版登录地址  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  简单实现jsp分页  BootStrap整体框架之基础布局组件  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel如何处理文件下载请求?(Response示例)  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Android自定义控件实现温度旋转按钮效果  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何基于PHP生成高效IDC网络公司建站源码?  手机软键盘弹出时影响布局的解决方法  Laravel如何升级到最新版本?(升级指南和步骤)  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Swift中循环语句中的转移语句 break 和 continue  HTML 中动态设置元素 name 属性的正确语法详解  Python文件操作最佳实践_稳定性说明【指导】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  深入理解Android中的xmlns:tools属性  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  如何快速启动建站代理加盟业务?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?