Je suis intermixing JSPS et servlets dans l'application Web Je bâche et je commence à constater que mes JSP plus complexes finissent par contenant beaucoup de code, qui vole face à toutes les leçons MVC qui ont été pilonné en moi. Je sais que je peux le faire en transférant juste au JSP, mais cela semble être un piratage stupide.
Ce que j'aimerais faire, c'est utiliser un servlet pour traiter, puis envoyer un ensemble de valeurs au JSP pour rendre le HTML et renvoie la réponse. Quelque chose le long des lignes de: p> Je manipule la documentation du soleil et j'ai trouvé ceci: http://java.sun.com/developer/technicalArticles/javaserverpages/servlets_jsp/
Il semble que l'architecture JSP modèle 2 est exactement ce que je veux mettre en œuvre, mais je ne trouve pas d'exemple de la manière dont on peut définir cela. Pour des raisons techniques, je ne peux pas utiliser l'un des cadres de modèles les plus avancés tels que des jambes de force. p> est-ce possible ou une cause perdue? p> p>
3 Réponses :
Vous décrivez le transfert au JSP en tant que pirate de hack, mais vraiment, c'est exactement ce que les cadres MVC font (printemps MVC et Struts, au moins). P>
Le "modèle" est les attributs de demande que le servlet remplit; Ensuite, le JSP les récupérit simplement à montrer. Vous pouvez envelopper cela dans une "modelandview" comme le printemps MVC, mais c'est vraiment à ce sujet. P>
Vous pouvez obtenir plus sophistiqué sur le JSP, bien sûr, des paramètres de demande d'analyse, des attributs de session ou du contexte de servlet ("Global"). En général, j'ai trouvé, en général, il est plus propre de laisser le contrôleur d'avance / servlet Marshall tous ceux-ci dans les attributs de demande et que la page vous tire simplement. Si vous utilisez JSTL, la différence entre la demande et la session peut être même florale. P>
Absolument vrai. J'ai fait environ 4 applications Web de taille décente avec le printemps, ce qui n'est certainement pas un piratage, le servlet (ou le printemps, le contrôleur) définit toutes les données de la vue et le JSP ne contient que la logique pour afficher les données fournies à par le contrôleur. Cela fonctionne bien et est vraiment facile à entretenir, vous voulez certainement aller à cet itinéraire, ce n'est pas un hack.
Mettez des objets Java dans la requête code> réponse code> /
session code> et utilisez un JAVAX.SERVLET.RQUESTDISPATTER Dans votre servlet, quelque chose comme ça:
RequestDispatcher dispatcher = request.getRequestDispatcher("/test.jsp");
dispatcher.forward(request,response);
Est-ce que Dispatcher.Forward () envoie-t-il réellement un 302 au client ou gère-t-il tout le serveur? Je pense que je peux obtenir ma terminologie HTML surchargée.
J'ai mis à jour ma réponse pour couvrir les deux cas (côté serveur et côté client)
Mettez l'objet (s) dans la demande, transmettez la demande à la page JSP, puis utilisez l'objet (s) dans le JSP pour rendre la réponse.
dans votre servlet, P>
<% MyObject obj = (MyObject) request.getAttribute("myObject"); %>
RD.Forward envoie-t-il 302 retour au client ou le gère-t-il sur le côté serveur? Je peux juste être confondu de ma terminologie.
@San Lynch - Le répertoire avant est le côté serveur. C'est pourquoi vous pouvez accéder à des pages JSP dans le répertoire Web-INF à l'utiliser.
"Pour des raisons techniques, je ne peux pas utiliser l'un des cadres de modèles les plus avancés tels que des jambes de force." - Donc, vous allez essentiellement la mettre en œuvre juste pour votre application ...
Je sais que c'est une déclaration naïve, mais cela n'a vraiment pas envie de réinventer tout un cadre. Je suis juste à la recherche d'un moyen d'attacher deux technologies existantes ensemble dans ce que, dans mon esprit, est un cas d'utilisation très évident.