Я хочу сделать приложение для входа в Android с использованием Java в качестве веб-сервера и передать значения элементов управления в Java без строки запроса - PullRequest
0 голосов
/ 17 октября 2018

Я хочу создать страницу входа в Android, для веб-сервисов я выбрал Java, поэтому я хочу получать данные в формате JSON (я написал код в Java), теперь для входа я хочу сохранить успех, если вход успешныйВ противном случае проблема fail.my заключается в том, что я хочу передать имя пользователя и пароль от элементов управления в Android на Java, как я должен это делать, что я всегда получаю "сбой", потому что каждый раз, когда вызываемые пустые значения isUser () передаются внутри functoion, хотя мои учетные данныеправильно

MyClass.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONString;

class MyClass {
   Connection con = null;
     Statement stmt = null;
     ResultSet rs = null;
int mobno;String passwd;
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DATABASE_URL = 
"jdbc:mysql://localhost/psamajdb";
private static final String USERNAME = "root";
private static final String PASSWORD = "";
MyClass(){
    this.passwd=passwd;
    this.mobno=mobno;       
   try {
        Class.forName(JDBC_DRIVER);
        con = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD);
    stmt=con.createStatement();

   } catch (Exception e) {
        System.out.println("Exception e  = " + e);
    }}

   public JSONArray convertToJson(ResultSet rs) throws Exception{
               JSONArray jsonArray = new JSONArray();
    while (rs.next()) {
        int total_rows = rs.getMetaData().getColumnCount();
        for (int i = 0; i < total_rows; i++) {
            JSONObject obj = new JSONObject();
            obj.put(rs.getMetaData().getColumnLabel(i + 1)
                    .toLowerCase(), rs.getObject(i + 1));
            jsonArray.put(obj);
        }
    }
    return jsonArray;
   }
   public String[] jsonToString(JSONArray arr){
       if(arr==null)
       {
           return null;
       }
       String[] str1=new String[arr.length()];
       for (int i = 0; i < str1.length; i++) {
           str1[i]=arr.optString(i);

       }
       return str1;

   }

public JSONObject  isUser(int Mobno,String Passwd){
Mobno=mobno;
Passwd=passwd;
System.out.println(mobno);
    System.out.println(passwd);
JSONObject obj=new JSONObject();
     String qry="select id from info where mobno="+Mobno+" and 
    passwd="+"'"+Passwd+"'";
        PreparedStatement pst;
      try {
                  stmt=con.createStatement();
                 rs=stmt.executeQuery(qry);

        if(rs.next())
        {
            System.out.println("Successful");
            String msg="success";
            String value="Success";
           obj=generateJson(msg,value);
        }else
        {
            System.out.println("Failed");
            String msg="failed";
            String value="Failed";
            obj=generateJson(msg,value);

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

}

private JSONObject generateJson(String msg, String value) {
     JSONObject obj=new JSONObject();
    if(value.equals("Success"))
    {
        try {
            obj.put(msg, value);
        } catch (JSONException ex) {
            Logger.getLogger(MyClass.class.getName()).log(Level.SEVERE, 
null, ex);
        }
    }else{

           try {
            obj.put(msg, value);
        } catch (JSONException ex) {
            Logger.getLogger(MyClass.class.getName()).log(Level.SEVERE, 
null, ex);
        }
    }
    return obj;  
}
}

MyServlet.java

import java.io.IOException;
import java.io.PrintWriter;
 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.sql.*;
import java.util.logging.Level;
 import java.util.logging.Logger;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONString;
@WebServlet(urlPatterns = {"/MyServlet"})
public class MyServlet extends HttpServlet {
String data;
  private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DATABASE_URL = 
"jdbc:mysql://localhost/testdb";
private static final String USERNAME = "root";
private static final String PASSWORD = "";
protected void processRequest(HttpServletRequest request, 
HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {
        /* TODO output your page here. You may use following sample code. */
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet MyServlet</title>");            
        out.println("</head>");
        out.println("<body>");
        doPost(request, response);         
        out.println("</body>");
        out.println("</html>");
    }
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse 
response)
        throws ServletException, IOException {
    processRequest(request, response);
}


@Override
protected void doPost(HttpServletRequest request, HttpServletResponse 
response)
        throws ServletException, IOException {
                 PrintWriter out = response.getWriter();
     int mobno;
     String passwd;          
     Connection con = null;
     Statement stmt = null;
     ResultSet rs = null;
     try{   
           MyClass obj=new MyClass();
           mobno=obj.mobno;
           passwd=obj.passwd;
           System.out.println("here");
           JSONObject jobj=obj.isUser(mobno, passwd);
       out.println(jobj);
         System.out.println(jobj);
     }catch(Exception e){
      out.println(e);
     }    
}
@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>



}

1 Ответ

0 голосов
/ 17 октября 2018

Конструктор для MyClass в настоящее время выглядит следующим образом:

MyClass()    {
    this.passwd = passwd;  // logic error
    this.mobno = mobno;    // logic error

    ... other lines omitted
}

В контексте конструктора this.passwd и passwd ссылаются на один и тот же объект.Поскольку он находится внутри конструктора, значение равно нулю.Проверьте вашу IDE или компилятор на наличие предупреждений.То же самое с другой строкой.

Таким образом, вы, вероятно, захотите сделать passwd и mobno в качестве параметров для конструктора следующим образом:

MyClass(String passwd, int mobno)    {
    this.passwd = passwd;
    this.mobno = mobno;

    ... other lines omitted
}

, чтобы правильно присвоить значения.Чтобы получить эти значения, нужно будет опросить request, чтобы правильно создать новый экземпляр MyClass.Запрос на запрос зависит от того, как значения были отправлены из приложения.

...