Appel d'un fichier class avec JSP

Résolu/Fermé
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 - 9 déc. 2008 à 20:35
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 - 11 déc. 2008 à 19:26
Bonjour,
Je suis étudiante en BTS info DAIGL et suis en stage... Aujourd'hui je suis bloquée... Je ne sais pas comment pourrai-je appeller ma servlet à partir de mon fichier JSP... il faut surement faire un import dans le JSP mais je ne connais pas la syntaxe... Pouvez-vous m'aider SVP....

Merci d'avance

Titfofol
A voir également:

14 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
9 déc. 2008 à 20:44
Bonsoir,
Ca dépend de ce que tu appelles "faire appel à ma servlet".
Si tu veux accéder aux objets définis dans ta servlet, il faut utiliser les différents scopes (en général la request, parfois la session, rarement plus global), et ne pas faire appel à la servlet directement.
Si tu veux simplement envoyer des informations à une servlet, il faut créer un formulaire html défini tel que l'action est l'uri de la servlet (tu dois spécifier l'uri de la servlet dans le web.xml en général).

Bien cordialement,
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
9 déc. 2008 à 21:39
Bonjour,

Oui, effectivement j'ai créé un fichier, non pas HTML mais JSP (où il y a du HTML mais bon, bref...). On m'a dit de mettre 'action="" ' dans ma balise de formulaire, mais je ne sais pas vraiment l'utiliser dans mon fichier web.xml. j'ai déjà écrit ça, en m'aidant d'autre fichier web.xml que j'ai trouvé... mais bon, je n'arrive pas encore à bien saisir à quoi correspond tout ce code:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<web-app>
<display-name>Produit pharmaceutique</display-name>
<servlet>
<servlet-name>MenuDataSemp</servlet-name>
<servlet-class>pf.cps.datasemp.Menu</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MenuDataSemp</servlet-name>
<url-pattern>/classes/pf/cps/datasemp/Menu</url-pattern>
</web-app>

Mais après on m'a dit de mettre dans mon fichier jsp une sorte d'importe, qui commence par <%@ mais ensuite, je ne sais pas quel est sa syntaxe. Peux-tu m'aider...??? ;D

Titfofol
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
9 déc. 2008 à 23:00
Bonsoir,
Oui oui, ton fichier c'est une jsp, on est d'accord. Je veux dire que dans ta jsp, tu as deux choses :
- le code html (la plupart du code)
- des scriptlets java pour créer ta page dynamiquement

Concernant ton fichier, voici l'explication :
<?xml version="1.0" encoding="ISO-8859-1" ?> <!-- c'est un fichier xml écrit avec des caractères français :D-->

<web-app>
<display-name>Produit pharmaceutique</display-name> <!-- Notre application JEE s'appelle comme ça -->

<servlet> <!-- Ici on déclare une nouvelle servlet -->
<servlet-name>MenuDataSemp</servlet-name> <!-- l'identifiant de la servlet -->
<servlet-class>pf.cps.datasemp.Menu</servlet-class> <!-- la classe java qui la définit -->
</servlet>

<servlet-mapping> <!-- ici on défini le mapping -->
<servlet-name>MenuDataSemp</servlet-name> <!-- notre servlet qui a pour identifiant MenuDataSemp -->
<url-pattern>/classes/pf/cps/datasemp/Menu</url-pattern> <!-- sera accessible via cet url -->
</web-app>


En principe, ton formulaire ressemblera à ça :
<form action="/classes/pf/cps/datasemp/Menu">
...
</form>

Et quand tu feras un submit de ton formulaire, ça appellera une méthode de la servlet sur le serveur (en fonction du type de requête que tu choisis, post ou get, ça sera doPost(...) ou doGet(...)).

En ce qui concerne les directives <%@ ... il faut que tu lises des tutoriaux sur les jsp pour comprendre comment ça marche.
Grosso modo, une jsp va être compilée en servlet par ton serveur d'application et pour toi ça va être transparent, mais ça te permet d'écrire du code java entre ces balises (pour que ce soit propre, il faut que ton code ne soit utilisé que pour faire de l'affichage).
Par exemple tu vas définir un itérateur sur une liste passée dans la request, et tu vas utiliser tout ça pour écrire un tableau dynamiquement. Il te faut alors importer les classes java.util.List, java.util.Iterator pour que ça fonctionne. C'est à ça que servent toutes ces balises.

Cordialement,
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
9 déc. 2008 à 23:59
Ok Merciiiiiiiii...

Mais dit moi, pourquoi quand je veux tester mon code sous tomcat il ne veux pas? Il ne veux pas mettre en marche mon application. Elle rèste sur Démarrer (c'est lui qui est souligné). Et quand je clic sur lui il ne veux pas il m'affiche "ECHEC - L'application pour le chemin de contexte /Menu_DataSemp n'a pas puêtredémarrée" comme message d'erreur.

Et pourtant dans le webapp de tomcat, j'ai bien mis dans mon dossier
Menu_DataSemp
|-Menu.js
|-Menu.jsp
|-WEB-INF
|-web.xml
|-classes
|-pf
|-cps
|-Menu.class

Titfofol
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
10 déc. 2008 à 00:08
Euh franchement je n'ai pas d'appli JEE sous les yeux, je suis bien incapable de te lire ce qui ne va pas.
Le mieux pour toi c'est de regarder un petit tuto de base pour voir si tout ce que tu as fait est bien, comme ici :
https://lfe.developpez.com/Java/TomCat/?page=page_4#L3

Cordialement,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
10 déc. 2008 à 00:57
Ok merci, j'avais déjà trouvé ce tutoriel, bon c'est pas grave je vai essayé de me débrouilé toute seul. Merci de m'avoir donné un peu de ton temps...

Mais au fait tu t'y connais un peu en javascript?! parce que j'ai fait mon javascript et normallement lorsque ma condition est fausse il ne devrait pas continuer mais là il continue qd même... je ne comprend pas. J'appelle ma fonction dans mon formulaire avec un onsubmit

Titfofol
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
10 déc. 2008 à 01:09
Je fais un peu de javascript en ce moment, alors donnes moi un peu ton code que j'y jette un coup d'oeil.
Par contre ce sera demain soir...

Bonne nuit.
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
10 déc. 2008 à 01:29
A merciiiiiiiii...

Bha en fait' moi j'ai bientot terminé chez moi il n'est pas minuit mais 14h26 je suis en polynésie française bref... ce n'était qu'une parenthèse...

Bon alors mon code en javascript:
Je pense que les return non pas lieu d'être mais bon, c'était juste un teste
// JavaScript Document
function ControleSaisie(){
Saisie = window.document.Frm_CIP.Ed_Rech_CIP.value;
MessErreur = "";
if (Saisie == ""){
MessErreur = "Veuillez saisir un code CIP svp";
}
if (isNaN(Saisie)){
MessErreur = "'" + Saisie + "'" + " n'est pas un chiffre";
}

if (MessErreur != "") {
alert (MessErreur);
return false;
}
else{
return true;
}
}

et voila mon code en jsp

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script language="javascript" src="Menu.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Consultation du DataSemp</title>
</head>
<body>
<table border="1">
<form name="Frm_CIP" method="get" onSubmit="ControleSaisie()" action="/classes/pf/cps/datasemp/Menu">
<td>Recherche par CIP</td>
<td><input options type="text" name="Ed_Rech_CIP"/></td>
<td><input options type="submit" name="Bt_Rech_CIP_Ok" value="Ok"/></td>
<td></td>
</form>
<form name="Frm_Version" method="get">
<td>Version</td>
<td><select>
<option></option>
<option>Avril 2008</option>
<option>Mai 2008</option>
<option>Juin 2008</option>
</select>
</td>
<td><input options type="submit" name="Bt_Version_Ok" value="Ok"/></td>
</form>
</table>
</body>
</html>

mais bon il n'y pas beaucoup de JSP je sais!!! hhihi

merci et bonne soirée

titfofol
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
10 déc. 2008 à 20:19
Bonjour, alors bien travaillé?!

Bon, bha voila mon maître de stage m'a un peu aidé, il m'a montré comment il fallait faire sur son poste, mais voila, le truc c'est que je pense ne pas avoir tout vu, comme je prennais des notes en même temps... Mais apparemment ma faute ne viens pas de mon javascript mais de ma jsp ainsi que de mon xml.

il m'a dit que pour mon formulaire, syntaxiquement, n'est pas vrai... pas juste... donc j'ai changé, je pense que c'est comme ça qu'il le veut je ne sais pas vraiment...

Bon voila mon nouveau code...

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script language="javascript" src="menu.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Consultation du DataSemp</title>
</head>
<body>
<table border="1">
<td><form name="Frm_CIP" method="get" onSubmit="ControleSaisie()" action="/datasemp/menu">
Recherche par CIP
<input options type="text" name="Ed_Rech_CIP"/>
<input options type="submit" name="Bt_Rech_CIP_Ok" value="Ok"/>
</form></td>
<td><form name="Frm_Version" method="get">
Version
<select>
<option></option>
<option>Avril 2008</option>
<option>Mai 2008</option>
<option>Juin 2008</option>
</select>

<input options type="submit" name="Bt_Version_Ok" value="Ok"/>
</form></td>
</table>
</body>
</html>


et mon code en xml...

<?xml version="1.0" encoding="ISO-8859-1" ?>

<web-app>
<display-name>Produit pharmaceutique</display-name>
<servlet>
<servlet-name>MenuDataSemp</servlet-name>
<servlet-class>pf.cps.datasemp.Menu</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MenuDataSemp</servlet-name>
<url-pattern>/datasemp/menu</url-pattern>
</servlet-mapping>
</web-app>

Au fait', je ne sais pas si je te l'avais dit mais je travail avec tomcat 5.5

j'espère que je finir dessus par ce que ça fait quand même trois jours que je suis dessus... et ça devient lassant...

Merci...

Titfofol...
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
11 déc. 2008 à 00:29
Bonsoir Titfofol !
Oui, bien travaillé, mais surtout bien dormi avant :)

J'ai regardé un peu ton code, et j'ai quelques commentaires :
- pour ce que tu fais actuellement, je ne vois pas pourquoi tu fais une jsp et non pas un html tout simple (mais bon, ça va peut-être se justifier par la suite)
- la balise html input c'est <input...> et non pas <input options...>. Où as-tu trouvé ça ?

Pour le javascript, c'est pratiquement ça je pense (je n'ai pas regardé les histoires de "" et de isNaN, ça tu dois pouvoir tester toute seule).
Personnellement je préfère donner un identifiant à mon formulaire et à mes éléments et utiliser document.getElementById, car je pense (peut-être à tord) que la notation pointée (window.document.Frm_CIP.Ed_Rech_CIP.value par exemple) n'est pas forcément comprise par tous les navigateurs, mais surtout que si tu changes la structure de ton html, il faut vérifier tout ton javascript (alors qu'avec des identifiants tu n'as pas ce problème).

Ce que je te conseille de faire, c'est quelque chose du genre :
Dans le html :
...
<form id="formulaire" name="Frm_CIP" method="get" onSubmit="ControleSaisie()" action="/datasemp/menu">
Recherche par CIP
<input id="champ" type="text" name="Ed_Rech_CIP"/>
<input type="button" name="Bt_Rech_CIP_Ok" value="Ok" onClick="ControleSaisie()" />
</form>
...

Et dans le js :
...
<!--
function ControleSaisie(){
 var form = document.getElementById("formulaire");
 var ed = document.getElementById("champ");
 var saisie = ed.value;
 messErreur = "";
 if (saisie == ""){
  messErreur = "Veuillez saisir un code CIP svp";
 }
 if (isNaN(saisie)){
  messErreur = "'" + saisie + "'" + " n'est pas un chiffre";
 }

 if (messErreur != "") {
  alert (messErreur);
 }
 else{
  form.submit();
 }
} 
//-->
...


Voilà, j'espère que c'est clair.
En gros on retire le bouton submit du formulaire, on met un bouton simple qui appelle la méthode de validation javascript. Si la méthode confirme que les données sont correctes, alors c'est elle-même qui va faire l'envoi à ta servlet.

Cordialement,
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
11 déc. 2008 à 00:52
Kikooooooooooo...

Heu je peut te poser une question?! pourquoi tu fait le contrôle de saisie dans le formulaire avec le onSubmit et tu en fait un autre sur le bouton avec le onClick. Tu répètes la même information inultilement non?!

Titfofol

PS: ne te vexe pas hein!!! c'est juste une question, je ne suis qu'une étudiante moua ;)
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
11 déc. 2008 à 01:00
A oui, au fait, j'ai oublié de te dire que ce n'est pas grave que les autres exploreur ne comprenne pas ce langage car cette application sera utilisé pour le réseau intranet de l'entreprise...

et pour le input option j'ai vu ça sur un site... mais je ne savais pas si c'était juste ou pas... hhihi

Et si j'ai fait une page jsp, c'est parce que mon maître de stage me l'a demandé peut etre que c'est parce qu'après on va faire une connexion jdbc avec oracle en java... je ne sais pas aussi.... :(

A oui, heu, tu ne connaîtrai pas une fonction qui me permettrai de compter le nombre de lettre d'une chaîne de caractère avec javascript?! c'est quoi?! c'est length?! (je ne pense pas car après plus rien ne fonctionne...

Titfofol
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
11 déc. 2008 à 01:11
Au temps pour moi, le premier appel (dans le form) doit être supprimé (j'ai fait un copié-collé de ton code et comme d'habitude j'ai oublié de retirer des trucs) :
...
<form id="formulaire" name="Frm_CIP" method="get" action="/datasemp/menu">
Recherche par CIP
<input id="champ" type="text" name="Ed_Rech_CIP"/>
<input type="button" name="Bt_Rech_CIP_Ok" value="Ok" onClick="ControleSaisie()" />
</form>
...


Pour la portabilité, c'est toujours mieux quand ça marche sur tout (surtout que c'est pas du tout plus long de bien faire). Et mon second argument est que si tu modifies ton html, ton javascript ne marchera plus, alors que le mien si.

Pour la connexion JDBC, c'est pas la peine d'utiliser des jsp. Ta connexion à ta BD se fera via tes servlets, c'est-à-dire côté serveur. Par contre, quand tu devras afficher les résultats, tu auras besoin de faire des jsp (mais pas dans notre fichier actuel).

Pour le nombre de caractère, c'est bien length : https://www.commentcamarche.net/contents/586-javascript-l-objet-string

Cordialement,
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
11 déc. 2008 à 01:26
ok c'est bon sa fonctionne pour le length!!!!

Bon attend je vais faire les modifications que tu m'as conseillé et je reviens, enfin... si tu ne dors pas encore (quoi que chez nous il n'est que 14h21 mais je pique déjà du nez!!! ca promet!!!)

Bon j'essaye de vite faire.

Au fait', juste avant que je voye ton message mon maitre de stage m'a montré mon erreur, sur le fait qu'il n'affiché pas l'autre page que j'appellé (ma servlet)... Mais bon je ne comprend pas que dans tout les cas il passe à l'autre page, normellement il devrait se bloqué!!!

Je te tiendrais au courant de la suite, j'espère que ton code va résoudre mon problème ;)

a tout de suite

Titfofol
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
11 déc. 2008 à 01:54
Re...

Désolé, mais voila ton code ne fonctionne pas... lorsque je fait entré, il m'envois sur la servlet (dans tout les cas) et lorsque je clic sur le bouton ok la il me dit qu'il y a un problème avec le javascript (dans tout les cas...)

A ou, pitié a moi!!! On dirait que mon maître de stage est désespéré!!!! Je suis trop lente cette année par rapport à l'an dernier...

Titfofol
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
11 déc. 2008 à 02:01
Bon bha il é 15h et j'ai terminé la je vais rentré a demain

Titfofol
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
11 déc. 2008 à 02:09
Effectivement, pour la redirection en appuyant sur Entrée, j'avais zappé. Regarde ici, ça pourra t'aider : http://www.commentcamarche.net/forum/affich 32550 desactiver la touche enter pour un formulaire

Pour l'erreur javascript qui est levée à 100%, ça ne vient pas de mon code. Je l'ai testé avec ie et firefox sans problème.
Voici l'intégralité de mes fichiers de test (je fais ça avec un script php, pas avec une servlet, mais c'est pareil):
Fichier test.html :
<html>
	<head>
		<title>Test CCM</title>
		<script language="javascript" src="menu.js"></script> 
	</head>
	<body>
		<form name="formulaire" method="get" action="redirect.php">
			<input id="champ" type="text" name="chaine"/>
			<input type="button" onClick="validation();"/>
		</form>
	</body>
</html>

Fichier menu.js : 
<!--
function validation(){
 var form = document.getElementById("formulaire");
 var ed = document.getElementById("champ");
 var saisie = ed.value;
 messErreur = "";
 if (saisie == ""){
  messErreur = "Veuillez saisir un code CIP svp";
 }
 if (isNaN(saisie)){
  messErreur = "'" + saisie + "'" + " n'est pas un chiffre";
 }

 if (messErreur != "") {
  alert (messErreur);
 }
 else{
  form.submit();
 }
} 
//-->

Fichier redirect.php : 
<?php
echo 'redirection ok';
?>


Cordialement,
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
11 déc. 2008 à 18:22
Kikoo...

Merci!!!! En fait' ton code était juste, l'erreur venait tout simplement de moi... hhihi j'avais oublié de fermer mon if pfff quelle erreur bête...

Merci encore pour ton aide... ;)

Mais si j'ai encore un probleme tu pourra m'aider s'il te plaît...

Amicallement Titfofol
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
11 déc. 2008 à 18:30
Bonsoir,
Si tu as encore besoin d'aide crée un nouveau topic (parce que là on s'égare vraiment du sujet initial). Si le titre est pertinent j'y jetterai sans doute un œil (et donc si je suis en mesure de t'aider je le ferai).

Je passe ton post en résolu.

Cordialement,
0
titfofol Messages postés 172 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 14 décembre 2010 9
11 déc. 2008 à 19:26
Merci de m'avoir aider

Bonne soirée ;)

Titfofol
0