OVH Cloud OVH Cloud

JSP appelant son servlet.

5 réponses
Avatar
SR
Salut,

J'ai un petit soucis lors d'un exercice =E0 but exp=E9rimentale
uniquement :

J'ai un formulaire HTML qui appel un servlet
(action=3D/exo/servlet/MonServlet). Ce servlet s'ajoute ensuite lui m=EAme
dans les attributs de la requete:

req.setAttribute("le_servlet",this);

Je redirige ensuite la requette vers une jsp avec un
dispatcher.forward().

Mon probl=E8me est le suivant:

Je n'arrive pas a r=E9cup=E9rer une r=E9f=E9rence sur mon servlet =E0 partir
du jsp pour la raison suivante : j'obtient une erreur de tomcat me
disant qu'il ne connais pas le symbole MonServlet.

Pourtant, MonServlet.class est bien dans mon repertoire
.=2E/exo/WEB-INF/classes/, dois je faire autre chose pour que mon jsp
"connaisse" la classe MonServlet ?


Merci d'avance

Sylvain (http://ross.fr/)

5 réponses

Avatar
Lionel
SR wrote:
Pourtant, MonServlet.class est bien dans mon repertoire
../exo/WEB-INF/classes/, dois je faire autre chose pour que mon jsp
"connaisse" la classe MonServlet ?


L'importer ou utiliser le full qualified name ?

Avatar
Simon OUALID
Oui, il faut que tu le déclares et que tu le map sur une URL dans ton
web.xml... :)


SR wrote:
Salut,

J'ai un petit soucis lors d'un exercice à but expérimentale
uniquement :

J'ai un formulaire HTML qui appel un servlet
(action=/exo/servlet/MonServlet). Ce servlet s'ajoute ensuite lui même
dans les attributs de la requete:

req.setAttribute("le_servlet",this);

Je redirige ensuite la requette vers une jsp avec un
dispatcher.forward().

Mon problème est le suivant:

Je n'arrive pas a récupérer une référence sur mon servlet à partir
du jsp pour la raison suivante : j'obtient une erreur de tomcat me
disant qu'il ne connais pas le symbole MonServlet.

Pourtant, MonServlet.class est bien dans mon repertoire
../exo/WEB-INF/classes/, dois je faire autre chose pour que mon jsp
"connaisse" la classe MonServlet ?


Merci d'avance

Sylvain (http://ross.fr/)



Avatar
Fabien Bergeret
SR wrote:
Salut,

J'ai un petit soucis lors d'un exercice à but expérimentale
uniquement :

J'ai un formulaire HTML qui appel un servlet
(action=/exo/servlet/MonServlet). Ce servlet s'ajoute ensuite lui même
dans les attributs de la requete:

req.setAttribute("le_servlet",this);

Je redirige ensuite la requette vers une jsp avec un
dispatcher.forward().

Mon problème est le suivant:

Je n'arrive pas a récupérer une référence sur mon servlet à partir
du jsp pour la raison suivante : j'obtient une erreur de tomcat me
disant qu'il ne connais pas le symbole MonServlet.

Pourtant, MonServlet.class est bien dans mon repertoire
../exo/WEB-INF/classes/, dois je faire autre chose pour que mon jsp
"connaisse" la classe MonServlet ?


Merci d'avance

Sylvain (http://ross.fr/)

<%@page import="exo.servlet.MonServlet"%> dans la jsp (si MonServlet est

dans le package exo.servlet)

Avatar
SR
A vrai dire c'est là que j'ai du mal à suivre.

Mon servlet (qui s'appel en fait Prepair) est déjà déclaré sous la
forme suivante dans mon web.xml :

<servlet>
<servlet-name>Prepair</servlet-name>
<servlet-class>Prepair</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Prepair</servlet-name>
<url-pattern>/servlet/Prepair</url-pattern>
</servlet-mapping>

De plus, j'ai dans un repertoire ../WEB-INF/classes/tp deux classes
(JavaBeans) du package "tp" qui sont "compris" sans problemes depuis ma
.jsp.

Je ne suis pas super à l'aise en ce qui concerne les packages. Je ne
vois pas trop dans quel package serait mon servlet Prepair (je n'ai
rien mis au début de Prepair.java concernant son package) donc je vois
pas trop quoi importer!

A moins que vous connaissiez une méthode d'importer des classe via une
url absolu "import /home/sr/.../WEB-INF/classes/Prepair" !


SR wrote:
Salut,

J'ai un petit soucis lors d'un exercice à but expérimentale
uniquement :

J'ai un formulaire HTML qui appel un servlet
(action=/exo/servlet/MonServlet). Ce servlet s'ajoute ensuite lui
même


dans les attributs de la requete:

req.setAttribute("le_servlet",this);

Je redirige ensuite la requette vers une jsp avec un
dispatcher.forward().

Mon problème est le suivant:

Je n'arrive pas a récupérer une référence sur mon servlet à
partir


du jsp pour la raison suivante : j'obtient une erreur de tomcat me
disant qu'il ne connais pas le symbole MonServlet.

Pourtant, MonServlet.class est bien dans mon repertoire
../exo/WEB-INF/classes/, dois je faire autre chose pour que mon jsp
"connaisse" la classe MonServlet ?


Merci d'avance

Sylvain (http://ross.fr/)

<%@page import="exo.servlet.MonServlet"%> dans la jsp (si MonServlet

est

dans le package exo.servlet)



Avatar
Fabien Bergeret
SR wrote:
A vrai dire c'est là que j'ai du mal à suivre.

Mon servlet (qui s'appel en fait Prepair) est déjà déclaré sous la
forme suivante dans mon web.xml :

<servlet>
<servlet-name>Prepair</servlet-name>
<servlet-class>Prepair</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Prepair</servlet-name>
<url-pattern>/servlet/Prepair</url-pattern>
</servlet-mapping>

De plus, j'ai dans un repertoire ../WEB-INF/classes/tp deux classes
(JavaBeans) du package "tp" qui sont "compris" sans problemes depuis ma
.jsp.

Je ne suis pas super à l'aise en ce qui concerne les packages. Je ne
vois pas trop dans quel package serait mon servlet Prepair (je n'ai
rien mis au début de Prepair.java concernant son package) donc je vois
pas trop quoi importer!

A moins que vous connaissiez une méthode d'importer des classe via une
url absolu "import /home/sr/.../WEB-INF/classes/Prepair" !



SR wrote:

Salut,

J'ai un petit soucis lors d'un exercice à but expérimentale
uniquement :

J'ai un formulaire HTML qui appel un servlet
(action=/exo/servlet/MonServlet). Ce servlet s'ajoute ensuite lui



même

dans les attributs de la requete:

req.setAttribute("le_servlet",this);

Je redirige ensuite la requette vers une jsp avec un
dispatcher.forward().

Mon problème est le suivant:

Je n'arrive pas a récupérer une référence sur mon servlet à



partir

du jsp pour la raison suivante : j'obtient une erreur de tomcat me
disant qu'il ne connais pas le symbole MonServlet.

Pourtant, MonServlet.class est bien dans mon repertoire
../exo/WEB-INF/classes/, dois je faire autre chose pour que mon jsp
"connaisse" la classe MonServlet ?


Merci d'avance

Sylvain (http://ross.fr/)



<%@page import="exo.servlet.MonServlet"%> dans la jsp (si MonServlet


est

dans le package exo.servlet)



Le Java n'est pas du C. On importe pas un fichier, on importe une classe.

Des que l'on veut utiliser le nom court d'une classe (sans son nom de
package, comme MonServlet), on doit faire un import de cette classe en
ecrivant import exo.servlet.MonServlet en debut de code, apres la
declaration de package. L'equivalent JSP est <%@page
import="exo.servlet.MonServlet"%>
Pour connaitre le package d'une classe, il suffit de regarder dans le
code ce qu'il y a apres package xxxxx, sur la premiere ligne du fichier
source