2 Replies - 3575 Views - Last Post: 16 April 2013 - 10:29 AM

#1 mekbib  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 15-April 13

mobile application

Posted 15 April 2013 - 10:04 PM

Hello, I made a program where I enter username and password from midlet and send them to servlet which checks the username and password in a mysql database. The servlet is to send a response “valid” to the midlet if the username and password exist or “invalid” if they don’t. But when I run the program the response recieved on the midlet side that I get on the emulator is always “valid” even with wrong username and password and displays empty MainMenu. Please help me find out what could be wrong with either my midlet code or servlet code that makes my reponse not be as would be.


here is the midlet for login:




import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
public class LoginScreen implements CommandListener,Runnable,ItemCommandListener
{
Form login;
static TextField un;
TextField pwd;
Command Submit;
view plaincopy to clipboardprint?
Note: Text content in the code blocks is automatically word-wrapped

      


Command Cancel,Exit;
StringItem submit,cancel;
Alert alert;

Thread thr1;
static String name,gender;
Image invaliduser,warning;

public LoginScreen()
{
login=new Form("LOGIN FORM");
un=new TextField("LOGINID","",30,TextField.ANY);
un.setLayout(3);
submit=new StringItem("","SUBMIT",StringItem.BUTTON);
cancel=new StringItem("","CLEAR",StringItem.BUTTON);
pwd=new TextField("PASSWORD","",30,TextField.PASSWORD);
Submit=new Command("SUBMIT",Command.ITEM,1);
Cancel=new Command("CLEAR",Command.ITEM,1);
Exit=new Command("Exit",Command.BACK,0);
try
{
invaliduser=Image.createImage("/invaliduser.png");
warning=Image.createImage("/warning.png");
}
catch (Exception e)
{
e.printStackTrace();
}
}
public Form loginFormMethod()
{
login.append(un);
login.append(pwd);
login.addCommand(Exit);
login.append(submit);
submit.setDefaultCommand(Submit);
submit.setItemCommandListener(this);
login.append(cancel);
cancel.setDefaultCommand(Cancel);
cancel.setItemCommandListener(this);
login.setCommandListener(this);
return login;
}

public void commandAction(Command cmd,Item item)
{
if(item==submit)
{
String sid1=un.getString();
String password1=pwd.getString();
if(sid1.equals(""))
{
alert=new Alert("confirmation");
alert.setImage(warning);
alert.setString("Please enter username");
Login.dis.setCurrent(alert);
}
else if(password1.equals(""))
{
alert=new Alert("confirmation");
alert.setImage(warning);
alert.setString("Please enter password");
Login.dis.setCurrent(alert);
}
else
{
thr1=new Thread(this);
thr1.start();
}
}
if(item==cancel)
{
un.setString("");
pwd.setString("");
}

}

public void commandAction(Command cmd,Displayable disp)
{

if(cmd==Exit)
{
Login.destroy.destroyMethod();
}

}

public void run()
{
String result="";
try
{
String sid=un.getString();
System.out.println("name"+sid);

String password=pwd.getString();
System.out.println("pwd"+password);
String url="http://localhost:4040/web/LoginServlet?un="+sid+"&pwd="+password;
System.out.println("Query "+url);
StreamConnection sc=(StreamConnection) Connector.open(url.replace(' ','+'));
DataInputStream dis=sc.openDataInputStream();
int i=dis.read();
while(i!=-1)
{
//System.out.println("Value "+i);
result=result+(char)i;
i=dis.read();
}
}
catch(Exception e)
{
e.printStackTrace();
}
alert=new Alert("confirmation");
result=result.trim();
System.out.println(result.length());
if(result.equals("invalid"))
{
System.out.println("Invalid User");
alert.setImage(invaliduser);
alert.setString("Invalid User");
Login.dis.setCurrent(alert);
}
else
{
System.out.println("Valid User");
// alert.setImage(invaliduser);
alert.setString("Valid User");
Login.dis.setCurrent(alert);

MainMenuScreen mms=new MainMenuScreen();
Login.dis.setCurrent(mms.mainMenuMethod());

}

}
}







And Here is the servlets of Login:





import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;
public class LoginServlet extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{
try
{
System.out.println("Entered loginservlet");
String loginid=req.getParameter("un");
String password=req.getParameter("pwd");
System.out.println("name"+loginid);
System.out.println("pwd"+password);
PrintWriter pw=res.getWriter();
//pw.println("Name "+loginid);
//pw.println("Password "+password);

Class.forName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mobile","root","root");

Statement st=con.createStatement();

ResultSet rs=st.executeQuery("select * from login where loginid='"+loginid+"' and password='"+password+"'");

if(rs.next())
{
System.out.println(rs.getString(1));
pw.println("Valid User");
}
else
{
pw.println("invalid");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
} 





Is This A Good Question/Topic? 0
  • +

Replies To: mobile application

#2 tlhIn`toq  Icon User is offline

  • Please show what you have already tried when asking a question.
  • member icon

Reputation: 5436
  • View blog
  • Posts: 11,656
  • Joined: 02-June 10

Re: mobile application

Posted 16 April 2013 - 06:35 AM

This is out of my area of experience but..

Quote

28 if(rs.next())


How do you think this checks the content of the server response against either "valid" or "invalid"?
I assume rs.next() just returns a bool saying it was or was not able to get a next response set, but nothing about its content.
I would expect you need something to the effect of
if (response == "valid")

Also, just a little experience here... REturning valid or invalid tells you something but isn't all that useful in the real world. I tend to return a permissions object/class of my own coding. That way I can allow the logging-in user to MakeChanges, EditUser, VoidSales etc. as they are allowed to do at their permissions level. That way a manager can do more than a clerk etc.
Was This Post Helpful? 0
  • +
  • -

#3 mekbib  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 15-April 13

Re: mobile application

Posted 16 April 2013 - 10:29 AM

View PosttlhIn`toq, on 16 April 2013 - 06:35 AM, said:

This is out of my area of experience but..

Quote

28 if(rs.next())


How do you think this checks the content of the server response against either "valid" or "invalid"?
I assume rs.next() just returns a bool saying it was or was not able to get a next response set, but nothing about its content.
I would expect you need something to the effect of
if (response == "valid")

Also, just a little experience here... REturning valid or invalid tells you something but isn't all that useful in the real world. I tend to return a permissions object/class of my own coding. That way I can allow the logging-in user to MakeChanges, EditUser, VoidSales etc. as they are allowed to do at their permissions level. That way a manager can do more than a clerk etc.


Quote

Thank you ur help bro !The main problem here is that not about rs.next() but the midlets and servlets cant communicate with each other. HOw do i make them communicate with one another first.

Was This Post Helpful? 0
  • +
  • -

Page 1 of 1