android+eclipse+mysql+servlet(Android与mysql建立链接)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原创地址 、作者信息和本声明。http://www.cnblogs.com/zhu520/p/7724524.html
经过两天的时间我终于把Android studio与eclipse和mysql进行了链接!!!因为是自学,哪个大神看到有问题指点一下。
一:eclipse的配置
服务器:配置你的项目的tomca
tomcat弄好之后不要着急点击 完成, 点击 下一步
不要着急点击 完成, 点击 下一步
你也可不改,对比一下差别:
需要的jar包
MySQL创建数据库和表
创建数据库
create database printing character set utf8 collate utf8_general_ci;
创建表:
use jdbc01;
create table sys_staff (
StaffID int primary key auto_increment,
Account varchar(40),
Password varchar(40)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
表创建好之后,给一条数据 。
我给账号和密码都为111
二:代码
1): eclipse与MySQL的链接
ToolMySQLConnection类
package zhu.printing.unit; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class ToolMySQLConnection {
public static final String URL="jdbc:mysql://localhost:3306/printing";
public static final String NAME = "root";
public static final String PASSWORD = "root";
public static final String DREIVER = "com.mysql.jdbc.Driver"; static {
try {
//加载驱动器
Class.forName(DREIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} public static Connection getConnection() {
try {
return DriverManager.getConnection(URL, NAME, PASSWORD);//创建与数据库的链接
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//设置一个公共的关闭链接、释放资源的方法 . 因为每次只要进行了增,删,查,改 之后 都必须要 事件, 那么就设置一个公共的方法
//而关闭资源要从 ResultSet先关闭-->,再到 PreparedStatement-->,最后到 Connection关闭
public static void Close(ResultSet rs, PreparedStatement ps, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
} if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2):创建Servlet的类
package zhu.printing.servlet; import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import zhu.printing.unit.ToolMySQLConnection; public class LoginServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String ID = request.getParameter("ID"); //用于接收android前台的输入的值,此处参数必须要与你前台的值相对应
String PW= request.getParameter("PW");
boolean type=false;//用于判断账号和密码是否与数据库中查询结果一致
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
Connection con=null;
JSONObject json = new JSONObject();
// JsonConfig jsonConfig = new JsonConfig();
// jsonConfig.registerJsonValueProcessor(java.sql.Date.class,new JsonDateValueProcessor());
try
{
con=ToolMySQLConnection.getConnection();
Statement stmt=con.createStatement();
String sql="select * from printing.sys_staff where Account="+ID+" and Password="+PW;
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
type=true;
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
ToolMySQLConnection.Close(null, null, con);
json.put("msg", type );
//json.put("msg", JSONArray.fromObject(type,jsonConfig));
response.getWriter().write(json.toString());
out.flush();
out.close();
}
} }
3):配置servlet
去WEB-INF文件夹下的web.xml配置刚刚新建的LoginServlet
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>zhu.printing.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/zhu/LoginServlet</url-pattern>
</servlet-mapping>
4):创建jsp
Test1.jsp的代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!-- c标签要使用,那么就必须要有它 ${pageContext.request.contextPath}--> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set scope="page" var="url"
value="${pageContext.request.contextPath }"></c:set>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'MyJsp.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<form action=" ${url}/zhu/LoginServlet" method="post">
<table>
<tr><td>用户名</td><td><input type="text" name="ID"></td></tr>
<tr><td>密码</td><td><input type="text" name="PW"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="登陆"></td></tr>
</table>
</form>
</body>
</html>
5):运行
我把数据设置为json的格式,因为这样容易在Android studio那边获取数据,
二:Android studio
代码
1):创建一个a_login.xml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="zhu.com.printitem.LoginActivity"
android:background="@drawable/background_login"> <RelativeLayout
android:id="@+id/kj_ct"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:layout_marginTop="120dip"
android:background="@drawable/background_login_radius"
android:padding="15dip">
<!-- 账号 -->
<TextView
android:id="@+id/kj_accountnumber_lb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"
android:text="账号" /> <EditText
android:id="@+id/kj_accountnumber_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/kj_accountnumber_lb"
android:hint=" "
android:inputType="text"
android:singleLine="true" />
<!-- 密码 text -->
<TextView
android:id="@+id/kj_password_lb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/kj_accountnumber_edittext"
android:layout_marginTop="3dp"
android:text="密码" /> <EditText
android:id="@+id/kj_password_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/kj_password_lb"
android:hint="请输入账号"
android:inputType="textPassword"
/>
<Button
android:id="@+id/kj_register_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/kj_password_edittext"
android:text="注册" />
<!-- 登录button -->
<Button
android:id="@+id/kj_login_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/kj_password_edittext"
android:layout_below="@id/kj_password_edittext"
android:text="登陆" />
</RelativeLayout> </RelativeLayout>
2):创建一个HttpUtil类
==》这个类 我是看这个文章的 http://blog.csdn.net/wangwei_cq/article/details/9453345
package zhu.com.printitem.util; import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.BinaryHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams; /**
* Created by XiaoZhu on 2017/10/24.
*/ public class HttpUtil {
//实例话对象
private static AsyncHttpClient client =new AsyncHttpClient();
static {
client.setTimeout(11000); //设置链接超时,如果不设置,默认为10s
} //用一个完整url获取一个string对象
public static void get(String urlString,AsyncHttpResponseHandler res) {
client.get(urlString, res);
}
//url里面带参数
public static void get(String urlString, RequestParams params, AsyncHttpResponseHandler res)
{
client.get(urlString, params,res);
}
//不带参数,获取json对象或者数组()
public static void get(String urlString,JsonHttpResponseHandler res)
{
client.get(urlString,res);
}
//带参数,获取json对象或者数组()
public static void get(String urlString,RequestParams params,JsonHttpResponseHandler res)
{
client.get(urlString, params,res);
}
//下载数据使用,会返回byte数据
public static void get( String uString, BinaryHttpResponseHandler bHandler)
{
client.get(uString, bHandler);
}
public static AsyncHttpClient getClient()
{
return client;
}
}
3):登录界面LoginActivity类
package zhu.com.printitem; import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast; import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams; import org.json.JSONException;
import org.json.JSONObject; import cz.msebera.android.httpclient.Header;
import zhu.com.printitem.util.HttpUtil; public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
Button btn_login,btn_register;
EditText et_accountnumber,et_passwrod;
AsyncHttpClient m_HttpClient; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_login);
m_HttpClient = new AsyncHttpClient();
btn_login= (Button) findViewById(R.id.kj_login_btn);
btn_register= (Button) findViewById(R.id.kj_register_btn);
et_accountnumber= (EditText) findViewById(R.id.kj_accountnumber_edittext);
et_passwrod= (EditText) findViewById(R.id.kj_password_edittext);
btn_login.setOnClickListener(this);
btn_register.setOnClickListener(this);
}
public void connectionURL(String id, String pw){
/*这里192.168.191.2==》表示你当前使用的网络ip,还有如果是真机运行那么手机必须要链接你自个的电脑的wifi,这样才能保证在同一个网络ID地址
* 171023_printting==》你在eclipse创建的项目名称
* zhu/LoginServlet==》表示在eclipse的web.xml配置servlet的地址
* */
String url="http://192.168.191.2:8080/171023_printting/zhu/LoginServlet";
RequestParams params = new RequestParams(); // 绑定参数
params.put("ID",id);
params.put("PW",pw);
HttpUtil.get(url,params,new JsonHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
if (statusCode==200){
try {
if(response.getBoolean("msg")==true){
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(LoginActivity.this, "登录失败!", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}); } @Override
public void onClick(View v) {
switch (v.getId()) {
//登陆
case R.id.kj_login_btn:
Intent it0=new Intent();
it0.setClass(LoginActivity.this,MainInterfaceActivity.class);
String uid=et_accountnumber.getText().toString().trim();
String pw=et_passwrod.getText().toString().trim();
connectionURL(uid,pw);
// startActivity(it0);
break;
case R.id.kj_register_btn:
Intent it=new Intent();
it.setClass(LoginActivity.this,RegisterActivity.class);
startActivity(it);
break;
} ;
} }
//子进程
/* new Thread(new Runnable() {
@Override
public void run() {
}
}).start();*/ /*
HttpUtil.get(url,params, new AsyncHttpResponseHandler(){ @Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
try {
JSONObject jsonObject = new JSONObject(new String(responseBody));
JSONArray jsonArray = jsonObject.getJSONArray("msg");
Log.v("Code",jsonArray+"");
} catch (JSONException e) {
e.printStackTrace();
}
} @Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Toast.makeText(LoginActivity.this, "链接eclipse失败", Toast.LENGTH_SHORT).show();
}
});
* */
4):运行Android studio之前必须要运行eclipse的项目
源码:http://pan.baidu.com/s/1bppnmLT
android+eclipse+mysql+servlet(Android与mysql建立链接)的更多相关文章
- Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决
在eclipse中导入android项目,项目正常没有任何错误,但是运行时候会报错,(clean什么的都没用了.....)如图: 百度大神大多说是jdk的问题,解决: 右键项目-Properties如 ...
- [Android]Eclipse 安装 ADT[Android Development Tooling] 失败的两种解决办法
原因 最近想在新装的 Win7 里搭建一下 Android 的开发环境,虽然现在有 Android Studio 了,不过还是习惯 Eclipse 一点.众所周知的原因,Eclipse 直接安装 AD ...
- 开发环境安装 Java Mysql MyEclipse Android Adt
一.安装 JDK 1.官网下载JDK最新版本,下载地址如下: http://www.oracle.com/technetwork/java/javase/downloads/index.html 这里 ...
- 连接MySQL数据库(android、php、MySQL)
管理MySQL数据库最简单和最便利的方式是PHP脚本.运行PHP脚本使用HTTP协议和android系统连接.我们以JSON格式编码数据,因为Android和PHP都有现成的处理JSON函数. 下面示 ...
- 使用 Eclipse PhoneGap 构建 Android 应用程序入门
Eclipse 是一种支持多种技术的开源集成开发环境 (IDE),但本文重点介绍 Java 支持,这也是 Android 应用程序的“母语”.Android 是 Google 发布的开源移动操作系统. ...
- Eclipse中调试Android技巧
Android eclipse中程序调试 一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的. 步骤如下. 1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键 ...
- 导入Eclipse工程 到 Android Studio
一.从Eclipse导入工程到Android Studio 根据官方的介绍,Android Studio可以兼容Eclipse的现有工程,但需要做一些操作: 首先升级ADT到最新版本,目前为版本号为2 ...
- [安卓][转]Android eclipse中程序调试
一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...
- Android eclipse中程序调试
一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...
随机推荐
- 全面了解Android热修复技术
WeTest 导读 本文探讨了Android热修复技术的发展脉络,现状及其未来. 热修复技术概述 热修复技术在近年来飞速发展,尤其是在InstantRun方案推出之后,各种热修复技术竞相涌现.国内大部 ...
- MXNet--DMLC-Core代码解读与宏
MXNet--DMLC-Core代码解读与宏 dmlc-core是Distributed (Deep) Machine Learning Community的一个基础模块,这个模块用被应用到了mxne ...
- Quartz源码——scheduler.start()启动源码分析(二)
scheduler.start()是Quartz的启动方式!下面进行分析,方便自己查看! 我都是分析的jobStore 方式为jdbc的SimpleTrigger!RAM的方式类似分析方式! Quar ...
- 【Kafka】
KafkaProducer Kafka消息发布客户端. 线程安全,跨线程共享单个生产者实例通常比拥有多个实例的速度更快. 例子,使用生产者发送包含序列号的字符串作为键/值对的记录: Propertie ...
- hdu 4778 Gems Fight! 状态压缩DP
Gems Fight! Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 327680/327680 K (Java/Others)T ...
- Java历程-初学篇 Day06 循环结构
前记:永远不要写死循环 一,while循环 先判断,再执行 while(条件){ //代码块; 迭代; } 示例: 二,do while语句 先执行一次,再判断 do{ //代码块; 迭代; }whi ...
- hadoop各个名词的理解
Hadoop家族的各个成员 hadoop这个词已经流行好多年了,一提到大数据就会想到hadoop,那么hadoop的作用是什么呢? 官方定义:hadoop是一个开发和运行处理大规模数据的软件平台.核心 ...
- 关于http与https区别
http与https: http叫超文本传输协议,信息为明文传输.https是具有安全性的传输协议,是由http+ssl层,需要到ca申请证书,一般需要费用.信息为加密传输,需要验证用户身份.二者的端 ...
- JavaWeb之response响应中文乱码问题
response向页面响应中文乱码问题 字节流 * 有可能乱码,与中文转换成字节数组.浏览器打开的默认字符编码有关 * 解决方式:将中文转成字节数组的时候和浏览器默认打开的时候采用的字符集一致 re ...
- Intel Core Microarchitecture Pipeline
Intel微处理器近20年从Pentium发展到Skylake,得益于制作工艺上的巨大发展,处理器的性能得到了非常大的增强,功能模块增多,不过其指令处理pipeline的主干部分算不上有特别大的变化, ...