安卓连接服务器数据库mysql数据库_Android实现与Apache Tomcat服务器数据交互(MySql数据库)...

本文详细介绍了如何实现在Android客户端连接到Apache Tomcat服务器上的MySQL数据库,包括服务器环境部署、web应用开发和Android客户端代码实现,涉及servlet、jdbc连接以及HttpClient请求。
摘要由CSDN通过智能技术生成

需求: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),如下图:

cdc6209bee0f70f888d1f50de68f076f.png

6664c077222342216579c0ef11ff8121.png

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

7c363841b34fb57d2bce1beef981598d.png

979be05bc142283b460c7a00c6e2b1a5.png

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

8ef6635ce05c57833faf6d935fa0e70e.png

5b9586fd437a513c2880e61e699e0821.png

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

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内容如下:

web

Login

Login

com.Servlet.Login

Login

/Login

index.html

index.jsp

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

Insert title here
用户名
密码

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、运行服务器,测试是否成功搭建。

a5a4a231d69adb1db30fc31949b7695f.png

71abe7fa75a387307022ba51a97fb80b.png

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 params=new ArrayList();//将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();

}

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

57e2c9acc6d4acd51cc5dee6375145a3.png

参考资料:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值