Android studio 通过以servlet搭建的服务器访问 PC端 mysql数据库(一)

从零构建校园导览APP:Android+SpringBoot+高德地图全栈开发实战 在移动应用开发领域,地图服务集成与路径规划是构建LBS(基于位置服务)应用的核心技术。其原理在于通过GPS、网络定位获取设备坐标,并利用地图SDK提供的API进行地理信息可视化与路线计算。这项技术的价值在于能够将抽象的坐标数据转化为直观的导航指引,极大提升了用户在陌生环境中的空间感知与移动效率。其应用场景广泛,从商业外卖配送、共享出行到智慧城市管理均离不开它。本文聚焦于一个具体的工程实践——校园导览系统开发,详细阐述了如何整合Android客户端、SpringBoot后端与高德地图服务,实现从定位、地图展示 阅读详情

前记:Android真机访问PC端MySQL等数据库时,一般的思路为:开通mysql远程连接,andriod直接通过pc的ip地址访问mysql,也就是android直连mysql。本人本想也通过此方法实现,无奈android开发平台是基于Android Studio的,其不可导入mysqk的jdbc.jar包,出现如Android Studio已有sql资源包,不可再导入此类jar包的错误。查找了半天也没找出解决的办法。而且此方法虽符合逻辑,但是存在不少漏洞,不安全。

最后我选择了一种基于servlet为服务器的中转实现方式,其主要的思路为:通过servlet搭建的服务器将mysql中需要的数据取出来发布在以tomcat为支持的网页上,android端直接访问该网页,将网页中的数据全部取出。当然也可以通过webservice实现中转。。。本文主要讲解服务器代码,客户端详解请看本人下一篇博文!!!

话不多说,直接上代码:

1、服务器端主要webtest.Java代码(在eclipse中新建Dynamic Web Project工程,工程名为webtt)

[java]  view plain  copy
  1. <span style="font-size:14px;">package com.tt;  
  2. import java.io.IOException;  
  3. import java.io.PrintWriter;  
  4. import java.sql.DriverManager;  
  5. import java.sql.ResultSet;  
  6. import java.sql.SQLException;  
  7. import javax.servlet.ServletException;  
  8. import javax.servlet.http.HttpServlet;  
  9. import javax.servlet.http.HttpServletRequest;  
  10. import javax.servlet.http.HttpServletResponse;  
  11.   
  12. import com.mysql.jdbc.Connection;  
  13. import com.mysql.jdbc.PreparedStatement;  
  14. import com.mysql.jdbc.Statement;  
  15. import com.tt.Deviceinformation;  
  16. public class webtest extends HttpServlet {  
  17.   
  18.   
  19.     private String idAndstatement,sqlqurey,sqlupdate,deviceid,statement;  
  20.     private Connection conn;  
  21.     private Statement stm=null;  
  22.     private ResultSet result=null;  
  23.     private PrintWriter outPrintWriter;  
  24.     private PreparedStatement pstm=null;  
  25.     private static final long serialVersionUID = 1L;          
  26.     /** 
  27.      * @param args 
  28.      */  
  29.     public webtest(){  
  30.         super();  
  31.     }  
  32.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  33.         //sex="男";  
  34.               
  35.             try {  
  36.                                   
  37.             Class.forName("com.mysql.jdbc.Driver").newInstance();  
  38.             conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/自己的数据库名称?" +  
  39.                     "user=root&password=123456&useUnicode=true&characterEncoding=utf-8");   
  40.             stm=(Statement) conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);  
  41.             sqlqurey="select * from deviceif  ";//查询表语句                  
  42.             result = stm.executeQuery(sqlqurey);  
  43.                   
  44.             if (result!=null) {//下面用到servlet  
  45.             response.setContentType("text/html;charset=UTF-8");//这句必须放在下一句之前  
  46.             outPrintWriter =response.getWriter();  
  47.             //<span style="font-family: Arial, Helvetica, sans-serif;">idAndstatement为android返回给服务器的字段,里面包含的信息,自己自定义</span>  
  48.             idAndstatement=new String(request.getParameter("idAndstatement").getBytes("ISO-8859-1"),"UTF-8");  
  49.                       
  50.             //对<span style="font-family: Arial, Helvetica, sans-serif;">idAndstatement进行拆解(以“,”为分界)</span>  
  51.             String [] splitStrings=idAndstatement.split("\\,");  
  52.             for(int i=0;i<splitStrings.length;i++){  
  53.                         //System.out.println(splitStrings.length);  
  54.             }  
  55.                 deviceid=splitStrings[0];  
  56.                 statement=splitStrings[1];  
  57.                       
  58.                     //更新数据  
  59.                     if(!deviceid.equals("t")){  
  60.                         sqlupdate="update deviceif set 仪表状态=? where 设备号=?";  
  61.                         pstm=(PreparedStatement) conn.prepareStatement(sqlupdate);  
  62.                       
  63.                             //改变数据库记录性别  
  64.                             pstm.setString(1, statement);  
  65.                             pstm.setString(2, deviceid);  
  66.                             pstm.executeUpdate();  
  67.                             //outPrintWriter.print("性别:"+sex);  
  68.                           
  69.                     }                                                                                                 
  70.                     while(result.next()){//从mysql选取数据  
  71.                         //获得客户端发来的参数信息  
  72.                           
  73.         <span style="font-family: Arial, Helvetica, sans-serif;">/*outPrintWriter.write("用户名:"+name+"的账户密码为:"+result.getString(1)+""+result.getString(2));*/</span>  
  74.       
  75.                               
  76.                         //<span style="font-family: Arial, Helvetica, sans-serif;">outPrintWriter.write()用于向网页写数据</span>  
  77.       
  78.                           
  79.         outPrintWriter.write(result.getString(1)+"   "+result.getString(2)+"   "+result.getString(3)+"   "+  
  80.         result.getString(4)+"   "+"   "+result.getString(5)+"   "+"   "+result.getString(6)+"   ");  
  81.                         outPrintWriter.println();  
  82.                                                                                                   
  83.                     }                     
  84.                                       
  85.                 }  
  86.                   
  87.               
  88.             } catch (InstantiationException e) {  
  89.                 e.printStackTrace();  
  90.             } catch (IllegalAccessException e) {  
  91.                 e.printStackTrace();  
  92.             } catch (ClassNotFoundException e) {  
  93.                 e.printStackTrace();  
  94.             } catch (SQLException e) {  
  95.                 e.printStackTrace();  
  96.             }  
  97.             outPrintWriter.flush();  
  98.             outPrintWriter.close();  
  99.               
  100.               
  101.               
  102.             //response.getWriter().write("link sucessfully!");  
  103.         }  
  104.     public void Json(){  
  105.           
  106.     }  
  107.     //释放资源  
  108.     public void destroy() {  
  109.         super.destroy();   
  110.         try{  
  111.             if(result!=null){  
  112.                  result.close();//关闭数据库  
  113.                  result=null;  
  114.             }  
  115.           
  116.             if(stm!=null){  
  117.                 stm.close();  
  118.                 stm=null;  
  119.             }  
  120.             if(pstm!=null){  
  121.                 pstm.close();  
  122.                 pstm=null;  
  123.             }  
  124.             if(conn!=null){  
  125.                  conn.close();//关闭后Statement,PreparedStatement也会关闭  
  126.                  conn=null;  
  127.             }  
  128.              
  129.         }catch(Exception ex){  
  130.             System.out.println("Error : " + ex.toString());  
  131.         }  
  132.     }  
  133.           
  134.           
  135.     protected void doPost(HttpServletRequest request, HttpServletResponse response)   
  136.             throws ServletException, IOException {  
  137.           
  138.         }   
  139.   
  140.   
  141. }</span>  
2、服务器端web.xml需要做响应修改,可直接替换本来web.xml(说明,HelloWorld任意取的,com.tt.webtest为在工程webtt下src下创建com.tt包,在包下新建webtest文件,如上)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <servlet>
  <servlet-name>HelloWorld</servlet-name>
  <servlet-class>com.tt.webtest</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>HelloWorld</servlet-name>
  <url-pattern>/HelloWorld</url-pattern>
  </servlet-mapping>
  
</web-app>
3、tomcat 安装并调试成功后,通过tomcat发布之后在浏览器输入http://localhost:8080/webtt/HelloWorld 即可等待android端的访问请求,从而自启动webtest中的doget()函数

Java开发环境一站式搭建指南:从JDK到Maven的完整配置流程 Java开发环境是构建企业级应用的基础设施,其核心在于工具链的协同与配置。理解环境搭建的原理,关键在于掌握各组件间的依赖关系与配置逻辑:JDK提供运行时与编译能力,IDE集成开发环境提升编码效率,而构建工具如Maven则通过依赖管理实现项目标准化。这些技术的价值在于为开发者提供稳定、高效的工程实践基础,减少环境差异导致的问题,从而专注于业务逻辑实现。在应用场景上,无论是微服务架构、Web应用开发还是后端系统构建,一个配置完善的Java环境都是项目成功的前提。本文聚焦于JDK安装、IDEA配置、Git集成、M 阅读详情

相关推荐

Android 应用通过Servlet与PC端MySQL数据库交互:服务端代码详解

在深入理解Servlet之前,我们需要搭建一个适合Servlet运行的开发环境。通常Servlet被用在Java Web项目中,因此我们需要配置Java开发工具包(JDK)、服务器(如Tomcat)以及集成开发环境(IDE),例如Eclipse或IntelliJ IDEA。以下为基本搭建步骤:安装Java开发工具包(JDK):确保JDK版本与开发需求相匹配。安装和配置服务器(Tomcat):下载Tomcat服务器,设置环境变量并启动。

weixin_42518874的博客 876

Android调用webservice总结

Web Services 是应用程序组件,使用开放协议进行通信,是独立的(self-contained)并可自我描述,可通过使用UDDI来发现,可被其他应用程序使用(跨平台性),XML 是 Web Services 的基础。

唐诺 935

Android智能招聘系统设计拆解:从项目结构到实战避坑

移动互联网时代,招聘场景加速向移动端迁移,Android成为求职招聘应用的重要载体。面对此类App的开发需求,需要从角色权限、职位流转、数据存储等方面构建完整业务闭环。基于Android的智能招聘系统设计正是围绕求职者、招聘者、管理员三条业务线展开,涵盖职位浏览、简历投递、状态跟踪等核心功能。在技术选型上,SQLite负责本地数据持久化,Retrofit+OkHttp构建网络层,RecyclerView实现列表展示与分页加载。这类项目不仅适合毕业设计作为综合实践,也为初级开发者提供了理解移动端业务逻辑的优质

weixin_33827731的博客 479

Android平台调用WebService详解

http://blog.youkuaiyun.com/lyq8479/article/details/6428288

DanielHan 551

android登录,webservice连接sql数据库,布局实现界面切换

android登录,webservice连接sql数据库,布局实现界面切换 c#用的vs2008,数据库自己看c#代码

Android通过webservice连接Sqlserver实例

Android连接SQLServer详细教程(数据库+服务器+客户端) 博客http://blog.youkuaiyun.com/zhyl8157121/article/details/8169172中的资源

Android实现访问Sqlserver

暑期实践要做一个校园通这样的东西,就是通过手机端访问数据库,然后查询成绩啊,绩点啊什么什么的。但是android本身是不支持访问sqlserver的,但可以增加一个桥梁来访问,增加的这个就是webservice。         很幸运的是找到了一个做过这方面东西的学长,他的毕设就是一个图书馆管理系统,可以实现从移动设备访问sql数据库。要来了源码研究了一通,大概差不多了,遇到了比较伤脑筋的问题

Bottle's Blog 9万+

Android开发直连SQL数据库

Android开发直连SQL数据库,无需搭建WEBserver,通过jtds直接连接SQL进行读写操作

android json servlet mysql_Android studio 通过以servlet搭建的服务器访问 PC端 mysql数据库(一)服务端源代码...

【实例简介】Android studio 通过以servlet搭建的服务器访问 PC端 mysql数据库(一)服务端源代码【实例截图】【核心代码】安卓端服务器└── SMSS源代码└── 安卓端└── 安卓端服务器├── webck│ ├── build│ │ └── classes│ │ └── com│ │ └── ck│ │ ...

weixin_39901077的博客 108

Android通过webservice连接SqlServer实例(Android4.0可运行)

Android通过webservice连接SqlServer实例(Android4.0可运行)从原博http://blog.youkuaiyun.com/zhyl8157121/article/details/8169172下载下来的demo,看了评论和其它文章后修改,解决了Android2.3以上StrictMode模式下不能查询、添加、删除数据的问题

AndroidStudio版登陆界面加直连Sqlserver

AndroidStudio版登陆界面加直连Sqlserver,包含了简单的登陆界面变化。

Android studio 通过以servlet搭建的服务器访问 PC端 mysql数据库(二)

上一篇文章我们已经讲解了Android studio 通过以servlet搭建的服务器访问 PC端 mysql数据库 的服务器端的实现步骤和方法 。 网址为:http://blog.youkuaiyun.com/snadijssajskkj/article/details/50554903 本文将继续讲解客户端(android)的实现。首先先说下几个注意点: (类此网络可以查看本人之前写过的博文,htt

ww32133的博客 1万+

Android通过Webservice操作sqlserver数据库实例代码

主要介绍了Android通过Webservice操作sqlserver数据库的相关知识,对webservice操作数据库相关知识感兴趣的朋友一起学习吧

SpringBoot音乐推荐系统实战:从环境搭建到算法集成与调试

推荐系统作为信息过滤的核心技术,其基本原理是通过分析用户历史行为与物品特征,预测用户偏好并实现个性化内容分发。在工程实践中,SpringBoot凭借其快速启动、生态完整和易于部署的特性,成为构建此类系统的热门后端框架。结合协同过滤、基于内容推荐等算法,开发者能够高效实现个性化推荐功能,广泛应用于音乐、电商、资讯等场景。本文聚焦于SpringBoot音乐推荐系统的实战开发,详细解析了在IDEA、Eclipse等主流IDE中进行环境配置、数据库设计、核心算法集成以及前后端联调的关键步骤与常见问题排查,为毕业设计

weixin_30267785的博客 316

SAP CKMLCP 月结7大常见报错:从“未找到成本核算运行”到“物料占用”的完整解决方案

本文深入解析SAP CKMLCP月结过程中的7大常见报错,从权限问题到数据一致性错误,提供系统化的解决方案。重点解决'未找到成本核算运行'和'物料占用'等典型问题,帮助财务人员高效完成成本核算月结,确保数据准确性。

weixin_30299709的博客 417

2025软考中级《数据库系统工程师》案例模拟题合集

1.【说明】某销售企业正在实施电商平台项目,主要功能模块包括用户中心、商品中心、交易中心、支付中心、营销中心等。其中支付中心模块包括了一个账户表:Account (ano, aname, balance),其中属性含义分别为:账户号,账户名称和账户余额。 假设现在存在事务Ti对账户表Account进行余额的修改,系统记录了修改账户表的日志记录,假设更新日志记录表示为 <Ti,A,V1,V2>,表明事务Ti对账户A执行了一个写操作,写操作前账户A的余额是V1,写操作后账户A的余额为V2。<Ti,D

2301_76902257的博客 2329

SpringBoot音乐推荐系统:从协同过滤算法到全栈开发实践

个性化推荐系统是现代互联网应用的核心技术之一,其核心原理是通过分析用户历史行为数据,挖掘用户偏好与物品特征之间的关联,从而预测并推送用户可能感兴趣的内容。在技术实现上,协同过滤算法是其中经典且广泛应用的方法,它通过计算用户或物品之间的相似度来生成推荐。这种技术对于提升用户体验、增加平台粘性具有重要价值,广泛应用于电商、内容平台及流媒体服务等场景。本文以音乐推荐系统为例,结合SpringBoot后端框架与MySQL、Redis等主流技术栈,详细阐述了如何从零构建一个具备完整前后端功能的推荐系统,并重点解析了用

weixin_30416871的博客 457

使用 Python 获取实时港股行情数据

在本教程中,你将学习如何通过 Infoway API 获取港股实时行情数据,具体以腾讯控股(0700.HK)和汇丰控股(0005.HK)为例,使用 Python 进行数据请求和解析。

kk_stoper的博客 1518
上一篇: Android访问网络常见问题之一
下一篇: Android studio 通过以servlet搭建的服务器访问 PC端 mysql数据库(二)
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值