2017-02-05 2 views
1

Ich erstelle ein Login-Formular mit JSP, Java und einer Datenbank. Ich habe die DateienLogin-Formular mit JSP und DBMS

  • index.jsp
  • loginprocess.jsp

    und die folgenden Java-Dateien in einem Paket
  • LoginBean.java
  • LoginDao.java 'Bean'
  • ConnectionProvider.java
  • Provider.java

index.jsp

<form action="loginprocess.jsp" method="post"> 
    E-mail:<input type="text" name="email" /> <br/ <br/> 
    Password:<input type="password" name="password"/><br/><br/> 
    <input type="submit" value="login"/>" 
</form> 

loginprocess.jsp

<%@page import="bean.LoginDao"%> 
<jsp:useBean id="obj" class="bean.LoginBean"/> 
<jsp:setProperty property="*" name="obj"/> 
<% 
    boolean status = LoginDao.validate(obj); 
    if (status) { 
     out.println("Your'e successfully logged in"); 
     session.setAttribute("session", "TRUE"); 
    } else { 
     out.print("Sorry, email or password error"); 
%> 
<jsp:include page="index.jsp"></jsp:include> 
<% 
    } 
%> 

LoginBean.java

package bean; 

public class LoginBean { 

    private String email, pass; 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getPass() { 
     return pass; 
    } 

    public void setPass(String pass) { 
     this.pass = pass; 
    } 
} 

LoginDao.java

bean Paket;

import java.sql. *;

public class LoginDao { 

    public static boolean validate(LoginBean bean) { 
     boolean status = false; 
     try { 
      Connection con = ConnectionProvider.getCon(); 

      PreparedStatement ps = con.prepareStatement("select * from user5 where email=? and pass=?"); 

      ps.setString(1, bean.getEmail()); 
      ps.setString(2, bean.getPass()); 

      ResultSet rs = ps.executeQuery(); 
      status = rs.next(); 

     } catch (Exception e) { 
     } 

     return status; 

    } 
} 

Ich laufe dies auf einem Tomcat-Server und läuft außer, dass ich immer die gleiche Leistung („Sorry, E-Mail oder Passwort-Fehler“), egal wie oft Login validiert.

Ich habe auch einen Datensatz in der db hinzugefügt (ich benutze Oracle 10g) Ich weiß nicht richtig über den Code, da ich online verwiesen.

Der boolesche "Status" wird als false immer von der LoginDao-Klasse zurückgegeben.

Bitte führen Sie mich, wie dieses Programm funktioniert.

Antwort

0

Lösung für Ihr Problem

In index.jsp Änderung <input type="password" name="password"/> zu <input type="password" name="pass"/>

Explaination

Da dieser Linie in <jsp:setProperty property="*" name="obj"/> in Ihrem Code würde jeweilige Setter nennen. Mit Blick auf Ihren Code kann ich Ihnen versichern, dass setEmail ans anruft, da es in LoginBean keine 10 gibt, die pass wird null.

Anregung

An eine weitere Sache, die ich möchte ist vermuten, dass es besser wäre, wenn Sie scope im <jsp:useBean> definieren.

ZB: -

<jsp:useBean id="obj" class="bean.LoginBean" scope="request"/>

Und in scriptlet Sie es nennen wie

<% 
LoginBean loginBean = (LoginBean) request.getAttribute("obj"); 
LoginDao.validate(loginBean); 
%> 

Es wäre viel klarer so sein.

+0

Ich habe versucht, Ändern Sie das Namensattribut im Tag zu "pass", aber es ist immer noch dasselbe. Ich habe die Vorschläge aber mit LoginDao.validate (request.getAttribute ("obj")); Ich erhalte einen HTTP-Antwortcode: 500 –

+0

@Natrajan Haben Sie den Umfang als Anfrage behalten? – BeginnersSake

+0

Wenn Sie den Bereich als Anfrage festgelegt haben und immer noch 500 erhalten haben, dann tun Sie dies 'LoginBean loginBean = (LoginBean) request.getAttribure ("obj"); 'Senden Sie nun diese Referenz in' validate' Methode als 'LoginDao.validate (loginBean) ; ' – BeginnersSake

0

kann nicht beantworten, indem Sie auf den Code suchen, aber hier ist das, was Sie tun sollten, - Zuerst versuchen, herauszufinden, ob das Problem in UI/Businesslogik oder in DB Seite ist - Hard-Code und gibt true zurück, wo Sie die abfragen db. Dies würde Ihnen sagen, ob das Problem in DB/Abfragen oder in anderen Teilen Ihres Programms - Machen Sie die gleiche und diesmal hart Code und geben Sie wahr von Ihrem Servlet.

0

Ihre E-Mail und Passwort ist immer null, weil Sie nicht von ihnen tun bekommen führen, so dass Sie immer mit nullnull überprüfen Ihr Problem zu lösen, sollten Sie ein Objekt und setEmail und setPassword zu erstellen:

<jsp:useBean id="obj" class="bean.LoginBean"/> 
<jsp:setProperty property="*" name="obj"/> 
<% 
String email = request.getParameter("email"); 
String pass = request.getParameter("password"); 
obj.setEmain(email); 
obj.setEmain(pass); 
boolean status=LoginDao.validate(obj);