Aide - Recherche - Membres - Calendrier
Version complète : [jsp/servlet] jsp -> servlet -> jsp
Forum Développeur - Administration serveur, programmation et base de données > Programmation > Java
wox-xion
Voilà, comme me l'a montré liguorien, en utilisant une servlet de ce type :

CODE
import javax.servlet.*;

import javax.servlet.http.*;



public class servletToJsp extends HttpServlet {



   public void doGet (HttpServletRequest request,

        HttpServletResponse response) {



try {

    // Set the attribute and Forward to hello.jsp

    request.setAttribute ("servletName", "servletToJsp");

    getServletConfig().getServletContext().getRequestDispatcher("/jsptoserv/hello.jsp").forward(request, response);

} catch (Exception ex) {

    ex.printStackTrace ();

}

   }

}


Je peux faire le chemin servlet -> jsp.

Mais j'aimerai savoir comment on fait le chemin inverse, donc jsp -> servlet.

Tout cela pour en arriver à faire ce que l'on veut, quand on le veut... ^^
En fait, je pense que l'utilisation d'un bean est plus appropriée dans mon cas... mais si j'ai un bean, puis-je lui faire passer des paramètres "assez long" comme des textes de news, donc imaginons au moins 2000 charactères :roll: il n'y a pas de problèmes en utilisant ceci ?

CODE
<jsp:useBean id="textBean" class="com.xion.text.textFormatter" scope="session" />

<jsp:setProperty name="textBean" property="textFormatted" value="${param.text}" />

<jsp:getProperty name="textBean" property="textFormatted" />


et bien sûr, entre temps, le texte à été formaté (smilies & co)... mais est-ce qu'un texte de 2000 charactère passe sans problème dans un paramètre, ... d'ailleurs, comment vérifier que la méthode est bien POST et non GET ? (depuis une jsp et une servlet)
liguorien
salut smile.gif [quote]Mais j'aimerai savoir comment on fait le chemin inverse, donc jsp -> servlet.[/quote] jsp à servlet ? et pourquoi faire ? La technique que je t'ai montré est une implémentation du pattern MVC. Donc il faut préparer l'information à afficher dans le Servlet et ensuite gérer l'affichage dans un JSP. (L'utilisation des tag et plus simple à montrer à un intégrateur que du code java brut). [quote]mais si j'ai un bean, puis-je lui faire passer des paramètres "assez long" comme des textes de news, donc imaginons au moins 2000 charactères icon_rolleyes.gif il n'y a pas de problèmes en utilisant ceci ? [/quote] non, il n'y a aucun limite. Lorsque tu fais une redirection Servlet -> JSP, tout est exécuté côté serveur en tant que code Java. (un JSP est nulle autre qu'un Servlet dont le code Java est généré et compilé à l'exécution) [quote]d'ailleurs, comment vérifier que la méthode est bien POST et non GET ? (depuis une jsp et une servlet)[/quote] Dans ton servlet, tu peux aussi utiliser la méthode doPost. Ou sinon si tu polymorphe la méthode service, tu peux le savoir avec request.getMethod() (idem pour le JSP) @++
wox-xion
dans le servlet, c'est simple, vu qu'il y a doPost et doGet... :wink: [quote]Ou sinon si tu polymorphe la méthode service, tu peux le savoir avec request.getMethod() (idem pour le JSP)[/quote] Tu veux dire quoi par "poly"morpher une méthode ?
wox-xion
en fait, je vois bien ce qu'est le polymorphisme, mais je ne vois pas dans quel sens dans cette exemple... aurais-tu un exemple concret ?

car en plus, tu parles de quelle méthode "service" ? il y a un truc qui doit m'échaper, là... :roll:
liguorien
je n'irai pas dans les détails, mais voici une brève explication :

à la base, un Servlet est une interface (javadoc) qui a particulièrement une méthode service. Cette méthode sera invoqué par un ServletContainer (cf. Tomcat).

La classe HttpServlet est une implèmentation standard de l'interface Servlet, la méthode service détermine le type de requête (GET, POST, PUT, DELETE, OPTIONS, etc...) et invoque la méthode approprié (doGet, doPost, doPut, doDelete, etc...).

Donc si le servlet doit invoquer le même bout de code peut importe le type de requête, il est possible de polymorpher la méthode service et faire ce que tu veux wink.gif (ou bien coder ta propre implémentaion de l'interface Servlet ! biggrin.gif)
wox-xion
donc je devrais toucher à la classe Servlet de base ou en hériter pour former ma propre classe de base... :roll:

Bon, bas, je crois que
CODE
request.getMethod()
me va beaucoup mieux... mais je m'y attarderai dès que j'ai le temps, car il faut toujours apprendre wink.gif

Merci beaucoup biggrin.gif
liguorien
[quote]donc je devrais toucher à la classe Servlet de base ou en hériter pour former ma propre classe de base... :roll:[/quote] je me répète... wink.gif - Servlet n'est pas une classe mais une interface... smile.gif - tu peux hériter de HttpServlet. (tu le fais déjà d'ailleur)
CODE
public class MonServlet extends HttpServlet {    protected void service(HttpServletRequest request, HttpServletResponse response) {                response.getWriter().print("Method : " + request.getMethod());          } }
@++
wox-xion
oups, désolé... j'avais oublié "interface" :oops:

oui, oui, là, c'est directement plus simple et clair :wink:

désolé encore mille fois pour la confusion que je me suis donnée, qui eût pu vous embêter...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.