Bonjour,
Je suis un débutant en J2EE, mais j’ai un vécu de pas mal d’années en développement web open source.
Ayant passé pas mal de temps à chercher sur le forum, je n’ai pas trouvé de réponses satisfaisantes aux questions que je me pose. Je pense comprendre les mécanismes jsp + servlets dans leur globalité (enfin à mon avis…), mais certaines affirmations que j’ai peu lire ici et là m’interpellent, peut être pourrez vous m’aider.
- « Les servlets et les JSP ont de nombreux points communs puisque qu'une JSP est finalement convertie en une servlet. »
Je trouve ça assez surprenant car si on met en place une architecture mvc en jsp + servlets, c’est la servlet qui joue le rôle d’objet contrôleur donc qui génère ou inclus la vue qui sera elle du jsp (soit par écriture dans le flux out.println(«<table border… »), soit par inclusion ou forward d’un fichier .jspx)
Donc pourquoi dit on que jsp génère la servlet, pour moi ce serait plutôt l’inverse non ?
Apparemment lorsque le jsp est compilé par le conteneur (TomCat en l'occurrence), cela cré une servlet. Mais est-ce différent de la servlet que l'on cré explicitement, cad une classe qui implémente HttpServlet.
- « L'usage des servlets est obligatoire si celles ci doivent communiquer directement avec une applet ou une application et non plus avec un serveur web. »
Je ne comprends pas non plus cette affirmation. Pour moi on peut tout à fait communiquer avec une autre appli (par exemple accès BDD) avec un Tag Handler + class liée.
_________________________________________________________________________________________________________
En ce qui concerne les tags handler, je trouve le mécanisme très pratique. Mais j’ai du mal à « sentir » quand l’utiliser à bonne escient. Par exemple je trouve que si on utilise des classes métier java + servlet + jspx cela couvre l’ensemble de mes besoins en développement (pour l’instant…)
En fait je trouve que j2ee met à notre disposition beaucoup d’outils différents (ce qui est plutôt positif, mais quand on débute c’est un peu déstabilisant) pour faire un peu la même chose. Par exemple pour les interactions entre un objet java métier et une vue jsp, je vois 3 solutions :
- utiliser directement une balise « <jsp:useBean id=… » et utiliser jstl pour les petits traitements internes à la vue
- utiliser une servlet qui inclurait des objets métiers pour ensuite renvoyer la vue
- utiliser un Tag Handler et faire les traitements dans la classe liée pour ensuite renvoyer la vue
Il est vrai que toutes ces techniques peuvent s’utiliser parallèlement, mais il est assez difficile de voir quand utiliser l’une plutôt que l’autre.
_________________________________________________________________________________________________________
Autre interrogation :
Lorsque l’utilisateur veut passer des informations à l’application (submit de formulaire ou clic sur un lien), j’utilise une servlet pour traiter la requête http. Y a t’il au autre moyen que la servlet. Par exemple peut-on accéder à une page de traitement java d'une requête http qui ne serait pas une servlet ?
Je demande cela car j'ai lu dans certains bouquins qu'on pouvait faire des sites dits dynamiques en utilisant uniquement des jsp, sans servlet. Comment dans ce cas traite t'on les requêtes http ?
Voilà j'espère avoir été clair et que vos réponses pourront également aider ceux qui se posent les mêmes questions que moi.
Message édité par jamesbond2 le 29-04-2010 à 16:54:48