Witam wszystkich serdecznie, jestem początkującym użytkownikiem Javy, więc liczę na waszą wyrozumiałość (najpierw próbuję, zwyczajnie żeby mi Tomcat wyświetlił na ekran przeglądarki jakieś dane)
Mam do zrobienia projekt stronki JSP z logowaniem wykorzystując JavaBeans do połączenia z bazą danych Oracle.
Mam 2 koncepcje ale niestety coś w nich jest złego i nie wiem gdzie leży błąd, czy ktoś mógłby mi pomóc?
Oto jak wygląda sytuacja:
<font size="4">I koncepcja</span>
Stronka z logowaniem (index.jsp)
<body>
<h1>Witaj kliencie </h1>
<form action="zalogowany.jsp" method="POST">
LOGIN:<input type="text" name="login" value="" /><BR>
<input type="submit" value="ZALOGUJ" />
</form>
</body>
Tak u mnie wygląda kod java bean odpowiedzialny za zwrot hasła
package beany;
public class login {
private String login;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
}
A tak stronka zalogowany.jsp
<jsp:useBean id="logowanie" scope="session" class="beany.login" />
<jsp:setProperty name="logowanie" property="login" value="" />
<%
Class.forName("oracle.jdbc.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM","bazy1234");
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery("Select IMIE,NAZWISKO,ADRES, WIEK from KLIENCI where LOGIN ='"+logowanie.getLogin()+"'");
ResultSetMetaData md;
md=rs.getMetaData();
while(rs.next())
{
String imie=rs.getString("IMIE");
String nazwisko=rs.getString("NAZWISKO");
String adres=rs.getString("ADRES");
int wiek=rs.getInt("WIEK");
out.println("IMIE \tNAZWISKO \tADRES \t\t \tWIEK"+"<br>");
out.println(imie+" \t"+nazwisko+" \t"+adres+" \t\t\t" +wiek+"<BR>");
}
%>
Co najdziwniejsze jeżeli wszystko skompiluję nie ma błędów, wpiszę poprawny login (który jest dostępny w bazie w tabeli Klienci) wyskakuje mi pusty ekran przeglądarki dla strony Zalogowany :(
Gdy zmienię kod i uruchamiam samą stronkę zalogowany.jsp i polecenie SQL wygląda tak:
ResultSet rs=st.executeQuery("Select IMIE,NAZWISKO,ADRES, WIEK from KLIENCI");
wyświetla wszystko elegancko
<font size="4"> II koncepcja jest ze stronki</span>http://www.codetoad.com/java_jsp_id_verification.asp
Tylko tam w kodzie jest błąd dla słowa validate (wiem że gość podaje bazę danych MS Access)
<%@ page import="java.util.*" %>
<jsp:useBean id="idHandler" class="foo.Login" scope="request">
<jsp:setProperty name="idHandler" property="*"/>
</jsp:useBean>
<%
if (idHandler.validate()) {
%>
<jsp:forward page="success.jsp"/>
<%
} else {
%>
<jsp:forward page="retry.jsp"/>
<%
}
%>
I wiadomo, succes logujemy się, retry odrzut ;)
Java Bean tego gościa odnośnie logowania
package foo;
import java.sql.*;
public class Login {
private String username = "";
private String password = "";
public Login() {
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public boolean authenticate(String username2,
String password2) {
String query="select * from Registration;";
String DbUserName="";
String DbPassword="";
String finalUser="";
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection
con=DriverManager.getConnection("jdbc:odbc:register");
Statement stat=con.createStatement();
ResultSet rst=stat.executeQuery(query);
while(rst.next())
{
DbUserName=rst.getString("UserName");
DbPassword=rst.getString("password");
if (username2.equals(DbUserName) &&
password2.equals(DbPassword)) {
break;
}
}
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}}
Umiem przerobić to na Oracle'a ale nie wiem co należy wpisać w tym wyrazie "validate" żeby mi zwróciło wynik porównania.
POMOCY :( :-[ :/