2016-07-13 5 views

答えて

1

これは、AndroidでMySQLデータベースを使用するサンプルログインアプリケーションです。 Androidデバイス/エミュレータからMySQLデータベースに接続するには、JSON経由で処理されるアプリケーションからServletにHTTPリクエストを送信しています。したがって、ここには2つの異なるプロジェクトがあります。 あなたがプロジェクトのクラスパスに配置されるように次の二つのjarファイルを必要とする必要があります:MySQLデータベース

CREATE TABLE `users` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `uname` varchar(45) NOT NULL, 
    `password` varchar(45) NOT NULL, 
    PRIMARY KEY (`id`) 
); 

INSERT INTO `users` (`id`,`uname`,`password`) VALUES 
(1,'admin','123'); 

ノートを作成するための クエリ。 1. JSON-シンプル-1.1.1.jar 2のmysql-コネクタ-javaの-5.xxx-bin.jarを LoginServlet.java

import dbConnection.DBConnectionHandler; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.sql.*; 
import java.util.Enumeration; 
import org.json.simple.JSONObject; 

public class LoginServlet extends HttpServlet { 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
    /** 
    * Handles the HTTP <code>GET</code> method. 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     //response.setContentType("text/html;charset=UTF-8"); 
     JSONObject json = new JSONObject(); 


     //ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream()); 
     Enumeration paramNames = request.getParameterNames(); 
     String params[] = new String[2]; 
     int i = 0; 
     while (paramNames.hasMoreElements()) { 
      String paramName = (String) paramNames.nextElement(); 

      //System.out.println(paramName); 
      String[] paramValues = request.getParameterValues(paramName); 
      params[i] = paramValues[0]; 

      //System.out.println(params[i]); 
      i++; 

     } 

     String sql = "SELECT uname, password FROM users where uname=? and password=?"; 
     Connection con = DBConnectionHandler.getConnection(); 

     try { 
      PreparedStatement ps = con.prepareStatement(sql); 
      ps.setString(1, params[0]); 
      ps.setString(2, params[1]); 
      ResultSet rs = ps.executeQuery(); 
      if (rs.next()) { 
       json.put("info", "success"); 
      } else { 
       json.put("info", "fail"); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     //System.out.println(json); 
     response.setContentType("application/json"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(json.toString()); 
    } 

    /** 
    * Handles the HTTP <code>POST</code> method. 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     doGet(request, response); 
    } 
} 

DBConnectionHandler.java

public class DBConnectionHandler { 

    Connection con = null; 

    public static Connection getConnection() { 
     Connection con = null; 
     try { 
      Class.forName("com.mysql.jdbc.Driver");//Mysql Connection 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(DBConnectionHandler.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     try { 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "root", "pass");//mysql database 

     } catch (SQLException ex) { 
      Logger.getLogger(DBConnectionHandler.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     return con; 
    } 

} 

activity_main

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:padding="10dip" > 
     <!-- View Title Label --> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="10dip" 
      android:text="LOGIN" 
      android:textSize="25dip" 
      android:textStyle="bold" /> 
     <!-- User Name Label --> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="User Name" /> 
     <!-- User Name TextField --> 
     <EditText 
      android:id="@+id/txtUser" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 

     <!-- Password Label --> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="15dip" 
      android:text="Password" /> 
     <!-- Password TextField --> 
     <EditText 
      android:id="@+id/txtPass" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:password="true" /> 

     <!-- Login Button -->  
     <Button 
      android:id="@+id/button1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dip" 
      android:text="Login" /> 
     </LinearLayout> 

</ScrollView> 

全体のチュートリアルとソースコードの.xmlあなたがここにhttp://www.javaknowledge.info/sample-login-app-in-android-using-servlet-and-json-parsing/

を見つけることができます
+0

ありがとうございました!誰かが私を正しい方向に向けることを望んでいました。私はチュートリアルを見て、 "サーブレットプロジェクト"のために、私はアンドロイドスタジオプロジェクト内のJavaファイルとしてそれを作成できますか? – TheLearner

+0

ya私は "javaknowledge.com"のブログからすべてのファイルがプロジェクトsrcフォルダ内にあるので、私はあなたと共有していたチュートリアルを実行して、チュートリアルの正確な手順に従ってからプロジェクトに使用してください。 –

+0

このアプリケーションには何らかのセキュリティを追加することを忘れないでください。開いているWebから取得した要求は信頼できないことに注意してください。 –

関連する問題