android+eclipse+mysql+servlet(Android与mysql建立链接)

我自横刀向天笑,去留肝胆两昆仑。这篇文章主要讲述android+eclipse+mysql+servlet(Android与mysql建立链接)相关的知识,希望能为你提供帮助。
原创作品,允许转载,转载时请务必以超链接形式标明文章  原创地址  、作者信息和本声明。http://www.cnblogs.com/zhu520/p/7724524.html
 
经过两天的时间我终于把android studio与eclipse和mysql进行了链接!!!因为是自学,哪个大神看到有问题指点一下。
 
一:eclipse的配置
服务器:配置你的项目的tomca

android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
   
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
tomcat弄好之后不要着急点击 完成, 点击   下一步
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

  不要着急点击 完成, 点击   下一步
 
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

你也可不改,对比一下差别:
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
         
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
   
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
需要的jar包
【android+eclipse+mysql+servlet(Android与mysql建立链接)】 
 
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
 
MySQL创建数据库和表
android+eclipse+mysql+servlet(Android与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的链接
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
ToolMySQLConnection类
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
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 finalString 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 { returnDriverManager.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(); } } } }

View Code    2):创建Servlet的类
 
 
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
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(); } }}

View Code 
 
3):配置servlet
 
去WEB-INF文件夹下的web.xml配置刚刚新建的LoginServlet
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
< 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>

View Code 
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
 
4):创建jsp
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

  Test1.jsp的代码
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
< %@ 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="https://www.songbingjia.com/android/${pageContext.request.contextPath }"> < /c:set> < !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html> < head> < base href="https://www.songbingjia.com/android/< %=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="https://www.songbingjia.com/android/登陆"> < /td> < /tr> < /table> < /form> < /body> < /html>

View Code  5):运行
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

  我把数据设置为json的格式,因为这样容易在Android studio那边获取数据,
二:Android studio
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
 
 
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
代码
  1):创建一个a_login.xml文件   
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
< ?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>

View Code
2):创建一个HttpUtil类
==》这个类 我是看这个文章的 http://blog.csdn.net/wangwei_cq/article/details/9453345

android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
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; } }

View Code 
3):登录界面LoginActivity类

android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片
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(); } }); * */

View Code 
4):运行Android studio之前必须要运行eclipse的项目


   
android+eclipse+mysql+servlet(Android与mysql建立链接)

文章图片

 
 
源码:http://pan.baidu.com/s/1bppnmLT
 

    推荐阅读