Help jsp

farotide Messages postés 6 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 6 juin 2004 - 31 mai 2004 à 13:01
farotide Messages postés 6 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 6 juin 2004 - 6 juin 2004 à 20:05
je suis sur le developpement d'une identification avec login et mdp.ceux ci sont recuperez dans un fichier.
pour cela j'utilise une page jsp, deux class qui se compile sans erreur et bien entendu un formulaire pour envoyer les informations a la page jsp.
mais lors de l'execution sous tomcat j'ai le message d'erreur suivant:
Error: 500
Location: /ident/ControleUtilisateurBean.jsp
Erreur interne de servlet:

javax.servlet.ServletException:  Cannot create bean of class Utilisateur
at ControleUtilisateurBean_1._jspService(ControleUtilisateurBean_1.java:100)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:78)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:534)
at org.apache.tomcat.core.Handler.invoke(Handler.java:280)
at org.apache.tomcat.core.Handler.service(Handler.java:193)
at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:445)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:874)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:790)
at org.apache.coyote.tomcat3.Tomcat3Adapter.service(Tomcat3Adapter.java:64)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:534)
Raison principale:
java.lang.ClassNotFoundException: class Utilisateur : java.lang.IllegalAccessException: Class java.beans.Beans can not access a member of class Utilisateur with modifiers ""
at java.beans.Beans.instantiate(Beans.java:208)
at java.beans.Beans.instantiate(Beans.java:48)
at ControleUtilisateurBean_1._jspService(ControleUtilisateurBean_1.java:98)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:78)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:534)
at org.apache.tomcat.core.Handler.invoke(Handler.java:280)
at org.apache.tomcat.core.Handler.service(Handler.java:193)
at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:445)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:874)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:790)
at org.apache.coyote.tomcat3.Tomcat3Adapter.service(Tomcat3Adapter.java:64)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:534)


et voila le code de la class incriminer (utilisater.class):

import java.io.*;
//import javax.servlet.*;
//import javax.servlet.http.*;
//import java.lang.*;

class Utilisateur
{

private Connexion tabUtilisateurs[]= new Connexion[10];
private int nbUtilisateurs=0;

public void init() // lit le fichier et initialise les variables privées
throws  IOException
{
final String monFichier=new String("C:\\tomcat\\webapps\\admin\\mdp.dat");
String tps[]=new String[5];
String tmp[]=new String[2];
int i=0;
try
{
File Fichier=new File(monFichier);
FileReader fluxL=new FileReader(Fichier);
BufferedReader tamponL=new BufferedReader(fluxL);
tps[i]=tamponL.readLine();
tmp=tps[i].split(" ");
tabUtilisateurs[i]=new Connexion();
tabUtilisateurs[i].setLogin(tmp[0]);
tabUtilisateurs[i].setPass(tmp[1]);
while(tps[i]!=null)
{
i=i+1;
nbUtilisateurs++;
tps[i]=tamponL.readLine();
if (tps[i]!=null)
{
tabUtilisateurs[i]=new Connexion();
tmp=tps[i].split(" ") ;
tabUtilisateurs[i].setLogin(tmp[0]);
tabUtilisateurs[i].setPass(tmp[1]);
}
}
tamponL.close();
fluxL.close();

}
catch(IOException e)
{
System.out.println(e);
}
}
public boolean chercheUtilisateur(Connexion uneConnexion)
{
String nom=uneConnexion.getLogin();
String mdp=uneConnexion.getPass();
int i=0;
boolean tr=false;
while((i<nbUtilisateurs)&&(!tr))
{		if(((tabUtilisateurs[i].getLogin()).compareTo(nom)==0)&&((tabUtilisateurs[i].getPass()).compareTo(mdp)==0))
tr=true;
i++;
}
return tr;

}

}


et enfin voila le code de la page jsp:

<%@ page import="java.io.*,java.lang.*,java.nio.*,java.text.*,java.util.*" %>

<HTML>
<HEAD>
<TITLE>Identification bean</TITLE>
</head>

<jsp:useBean id="Connex" scope="page" class="Connexion" >
</jsp:useBean>
<jsp:useBean id="Utili" scope="page" class="Utilisateur">
</jsp:useBean>

<%
try
{Utili.init();}
catch(IOException e)
{out.println(e);}

if(Utili.chercheUtilisateur(Connex))
out.println("
 L'identification a reussie 
");
else
out.println("
L'identifcation a echouee
");
%>

</HTML>


si quelqu'un peut m'aider se serait bien charitable car je ne comprend vraiment pas d'ou peut venir l'erreur.
je vous donne en plus le code de la class connexion:

//import java.io.*;
//import javax.servlet.*;
//import javax.servlet.http.*;

public class Connexion
{

private String login;
private String pass;

public String getLogin()
{
return login;
}
public  String getPass()
{
return pass;
}
public void setLogin(String monLogin)
{
login =monLogin;
}
public void setPass( String monPass)
{
pass=monPass;
}
}



merci de vos reponses
@+enjoy

4 réponses

HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
1 juin 2004 à 09:07
Bonjour,

Je viens de copier coller tes lignes de code, j'ai modifié quelques trucs et il ne met plus de message d'erreur.

J'ai mis un constructeur vide pour l'utilisateur.
J'ai enlevé le Throws Exception car tu as mis un Try Catch (et j'ai mis Exception et non pas IOException).
J'ai aussi mis public devant le nom de la classe Utilisateur.

Normalement avec ça ça devrait fonctionner.

PS : je suppose que tes classes sont bien dans WEB-INF/classes ?

Fanny
0
farotide Messages postés 6 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 6 juin 2004
1 juin 2004 à 15:58
tout d'abord
merci a toi pour la reponse.
je voudrait savoir se que tu entend par constucteur vide
(juste la declaration)?
j'ai fait ce que tu m'a indiquer (je me demande encore comment je n'ait pas vu l'oubli de public :) ) et maintenant j'ai une nouvelle erreur:

Error: 500
Location: /ident/ControleUtilisateurBean.jsp
Erreur interne de servlet:

javax.servlet.ServletException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:412)
at ControleUtilisateurBean_3._jspService(ControleUtilisateurBean_3.java:138)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:78)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:534)
at org.apache.tomcat.core.Handler.invoke(Handler.java:280)
at org.apache.tomcat.core.Handler.service(Handler.java:193)
at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:445)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:874)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:790)
at org.apache.coyote.tomcat3.Tomcat3Adapter.service(Tomcat3Adapter.java:64)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:534)
Raison principale:
java.lang.NullPointerException
at java.lang.String.compareTo(String.java:727)
at Utilisateurs.chercheUtilisateur(Utilisateurs.java:52)
at ControleUtilisateurBean_3._jspService(ControleUtilisateurBean_3.java:125)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:78)
at javax.servlet.http.HttpServlet.service(HttpServlet.java)
at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:534)
at org.apache.tomcat.core.Handler.invoke(Handler.java:280)
at org.apache.tomcat.core.Handler.service(Handler.java:193)
at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:445)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:874)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:790)
at org.apache.coyote.tomcat3.Tomcat3Adapter.service(Tomcat3Adapter.java:64)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:534)


a et oui mes class sont bien dans le repertoire voulu
encore merci
@+enjoy
0
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
2 juin 2004 à 08:40
Oui donc là cette erreur provient du fait que tu essaies de comparer une chaine vide avec une autre :
NullPointerException ... avec compareTo()

En fait, c'est la question que je me posais, je ne vois nulle part la récupération des paramètres du formulaire HTML qui permet la saisie du login et du mdp.

En fait, tu passes une connexion (que tu devrais appeler autrement car ce n'est pas une connexion ;) ) à ta méthode chercheUtilisateur(), mais dans ta jsp, tu lui passes le Bean connex qui n'a aucune valeur (login et mdp null).

Donc il ne peut pas comparer ton tableau de couples login/mdp avec null ... d'où l'erreur.

Il faut que tu récupères les paramètres de ton formulaire HTML et que tu remplisses ton bean Connex avec avant d'utiliser la méthode chercheUtilisateur :

<jsp:useBean id="Connex" scope="page" class="Connexion" >
</jsp:useBean>
<jsp:useBean id="Utili" scope="page" class="Utilisateur">
</jsp:useBean>

<%
Connex.setLogin(request.getParameter("login"));
Connex.setMdp(request.getParameter("mdp"));

try
{Utili.init();}
catch(IOException e)
{out.println(e);}

if(Utili.chercheUtilisateur(Connex))
out.println("
L'identification a reussie
"); 
else
out.println("
L'identifcation a echouee
");
%>



Enfin, il faut que tu fasses qqchose de ce genre :) .

J'espère que j'ai été claire dans mes explications car je n'en suis pas très sûre ...
Dis moi si ce n'était pas clair.

Fanny

PS : Une classe Connexion qui ne se connecte à rien ... c'est pas un peu étrange ça ;) ?
0
farotide Messages postés 6 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 6 juin 2004
6 juin 2004 à 20:05
merci a toi pour toute les explications. en effet il fallait que je recupere les parametres du formulaire (defois je me demande ou je suis quand je programme :) ).
ps: tout marche. et pour la class connexion qui se connecte a rien en faite cest normal c'est un exercice pour commencer a essayer de maitriser le javabean

en tout cas merci pour toute tes reponses
@+enjoy
0
Rejoignez-nous