2017-02-05 5 views
1

Я создаю форму для входа с помощью jsp, java и базы данных. У меня есть файлыФорма входа с использованием JSP и СУБД

  • index.jsp
  • loginprocess.jsp

    и следующие Java-файлы в пакете 'Bean'
  • LoginBean.java
  • LoginDao.java
  • ConnectionProvider.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

пакет фасоли;

импорт 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; 

    } 
} 

Я бегу это на сервере Tomcat и работает за исключением того, что я всегда получаю тот же результат («К сожалению, по электронной почте или ошибка пароля») независимо от того, сколько раз проверяется Логин.

Я также добавил запись в db (я использую oracle 10g) Я не знаю правильно о коде, так как я обращался в Интернете.

Логическое «состояние» возвращается как false всегда из класса LoginDao.

Просьба указать, как работает эта программа.

ответ

0

Решение вашей проблемы

В index.jsp изменения <input type="password" name="password"/> к <input type="password" name="pass"/>

Explaination

В этой строке в <jsp:setProperty property="*" name="obj"/> в коде бы назвать соответствующие сеттеров. Глядя на ваш код, я могу заверить вас, что звонит setEmail ans setPassword, так как нет setPassword в LoginBean pass становится null.

Предложение

еще одна вещь, которую я хотел бы предложить, что было бы лучше, если бы вы определили scope в <jsp:useBean>.

Например: -

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

И скриптлете вы называете это как

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

Было бы гораздо понятнее таким образом.

+0

Я пытался изменив атрибут name в теге на «pass», но он все тот же. Я пробовал предложения, но с LoginDao.validate (request.getAttribute ("obj")); , Я получаю код ответа HTTP: 500 –

+0

@Natrajan Вы сохранили область как запрос? – BeginnersSake

+0

Если вы задали область действия как запрос и все еще получаете 500. Затем выполните это 'LoginBean loginBean = (LoginBean) request.getAttribure (« obj »);' Теперь отправьте эту ссылку в метод 'validate' как' LoginDao.validate (loginBean) ; ' – BeginnersSake

0

Не можете ответить, посмотрев на код, но вот то, что вы должны сделать, - Сначала попытайтесь выяснить, если проблема заключается в UI/BusinessLogic или DB стороны - Hard код и возвращает истину, где вы запрашивая дб. Это скажет вам, есть ли проблема в DB/queries или в другой части вашей программы. . Сделайте то же самое и на этот раз жесткий код и верните true из своего сервлета.

0

Ваш адрес электронной почты и пароль всегда пустой, потому что вы не получите результат от них, так что вы всегда проверить с nullnull, чтобы решить вашу проблему Вам необходимо создать объект и setEmail и SetPassword:

<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); 
Смежные вопросы