Rechercher : dans
Par :

Appel d'un fichier class avec JSP

Dernière réponse le 11 déc 2008 à 19:26:22 titfofol, le 9 déc 2008 à 20:35:19 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Appel d'un fichier class avec JSP » dans :
Voir le contenu d'un fichier .jar VoirRien de plus facile que de voir ce que contient un fichier .jar: Renommez-le en .zip et ouvrez-le ! Si vous voulez voir ce que contiennent les programmes java compilés .class, vous devrez utiliser un décompilateur Java tel que JAD:...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...

1

Marco la baraque, le 9 déc 2008 à 20:44:18

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, rtfm and jfgi

Répondre à Marco la baraque

2

titfofol, le 9 déc 2008 à 21:39:22

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

Répondre à titfofol

3

Marco la baraque, le 9 déc 2008 à 23:00:29

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, rtfm and jfgi

Répondre à Marco la baraque

4

titfofol, le 9 déc 2008 à 23:59:32

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

Répondre à titfofol

5

Marco la baraque, le 10 déc 2008 à 00:08:59

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 :
http://lfe.developpez.com/Java/TomCat/?page=page_4#L3

Cordialement, rtfm and jfgi

Répondre à Marco la baraque

6

titfofol, le 10 déc 2008 à 00:57:01

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

Répondre à titfofol

7

Marco la baraque, le 10 déc 2008 à 01:09:34

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. rtfm and jfgi

Répondre à Marco la baraque

8

titfofol, le 10 déc 2008 à 01:29:01

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

Répondre à titfofol

9

titfofol, le 10 déc 2008 à 20:19:57

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...

Répondre à titfofol

10

Marco la baraque, le 11 déc 2008 à 00:29:26

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, rtfm and jfgi

Répondre à Marco la baraque

11

titfofol, le 11 déc 2008 à 00:52:55

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 ;)

Répondre à titfofol

12

titfofol, le 11 déc 2008 à 01:00:33

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

Répondre à titfofol

13

Marco la baraque, le 11 déc 2008 à 01:11: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 : http://www.commentcamarche.net/contents/javascript/jsstring.php3

Cordialement, rtfm and jfgi

Répondre à Marco la baraque

14

titfofol, le 11 déc 2008 à 01:26:43

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

Répondre à titfofol

15

titfofol, le 11 déc 2008 à 01:54:16

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

Répondre à titfofol

16

titfofol, le 11 déc 2008 à 02:01:43

Bon bha il é 15h et j'ai terminé la je vais rentré a demain

Titfofol

Répondre à titfofol

17

Marco la baraque, le 11 déc 2008 à 02:09:43

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, rtfm and jfgi

Répondre à Marco la baraque

18

titfofol, le 11 déc 2008 à 18:22:32

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

Répondre à titfofol

19

Marco la baraque, le 11 déc 2008 à 18:30:33

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, rtfm and jfgi

Répondre à Marco la baraque

20

 titfofol, le 11 déc 2008 à 19:26:22

Merci de m'avoir aider

Bonne soirée ;)

Titfofol

Répondre à titfofol