JSTL vs JSP Scriptlets
Je veux quelqu'un pour expliquer certains points de BlausC est incroyable de voir la réponse dans cette question.
Il a dit que les scriptlets avait quelques inconvénients, qui sont:
-
Réutilisabilité: vous ne pouvez pas réutiliser les scriptlets. Ma question : comment pourrais-je réutiliser JSTL code?
-
Remplacement: vous ne pouvez pas faire les scriptlets abstrait. Ce n'est abstrait, et comment pourrait JST devenir abstrait?
-
OO: vous ne pouvez pas faire usage de l'héritage et de composition. Comment pourrais-je l'utiliser OO paradigmes dans la JSTL?
-
Débogage: si un scriptlet déclenche une exception à mi-chemin, tout ce que vous obtenez est une page vierge.
-
Testabilité: les scriptlets ne peut pas être l'objet de tests unitaires. Ce que cela signifie, et comment peut-JSTL être l'objet de tests unitaires?
-
Maintenabilité: per saldo, plus de temps est nécessaire pour maintenir la mêlée/encombré/code dupliqué logique. Qu'est-ce que cela signifie?
La dernière chose est ce qu'il a cité la forme d'Oracle recommandation:
JSP scriptlets ne doit pas être utilisé pour l'écriture de la logique.
Dans le modèle MVC, j'utilise les scriptlets seulement dans la couche de présentation. Que veut-il dire par là?
- Je pensais exactement la même chose, quand j'ai vu BalusC réponse. Merci, j'ai trouvé ce post.
Vous devez vous connecter pour publier un commentaire.
Vous semblent concentrer uniquement sur la présentation et le contrôle du flux de la partie de la scriptlets comme dans l'utilisation de
if
,for
etswitch
états etout.print()
choses. Vous semblez comparer les scriptlets 1:1 avec de la JSTL. Ce qui est faux. Je ne parle pas du contrôle de flux de la partie (qui est, en effet, pour être remplacé par JSTL), mais sur l'écriture brute de code Java dans les pages JSP en général. I. e. collecte les paramètres de la demande, la validation et la conversion des valeurs, de l'interaction avec la base de données et d'autres classes Java/méthodes, etc. Toutes les choses que vous normalement (indirectement) à faire dans un Servlet ou de Filtre.Vous devriez pas ont scriptlet code dans les pages Jsp. Je le recommande à 100% JSTL et zéro scriplet code.
Jsp doit être purement présentation. C'est le caché bénéficier de l'écriture des pages Jsp en utilisant uniquement JSTL, car ils ont tous leur dynamique de données ailleurs. Laissez la couche de service ont la logique d'entreprise et de déterminer quelles sont les données les JSP besoins.
Cela répond à vos tests unitaires question, aussi. Vous ne devriez pas avoir de test de l'unité Jsp; ceux qui seraient Sélénium-comme l'INTERFACE utilisateur des tests. Si la logique est dans le niveau de service, il est évident comment le tester.
Jsp ne doit pas être héritée. Vous pouvez certainement composer ensemble en utilisant quelque chose comme SiteMesh, mais l'héritage ne fait pas partie de votre Jsp. Une fois qu'ils héritent de Servlet, la chaîne doit être terminé.
En outre, il est une fausse alternative. Ni l'un doit exiger de la réutilisation, de l'héritage, ou des tests unitaires. Mais cela ne signifie pas qu'il n'y a pas un gagnant clair: c'est de la JSTL. Personne ne devrait être en utilisant les scriptlets dans les Jsp, sauf pour de très rares one-liners. Les Scriptlets sont la mendicité pour les problèmes.
Ces jours je préfère la Vitesse de mon INTERFACE web modèle de solution pour Java, beaucoup plus que les Jsp. Juste mon avis.
Je ne peux pas parler pour BalusC mais en général, je crois qu'il était arriver à l'idée que ces sortes de choses doivent être accomplies par votre ordinaire de code Java (dans le Contrôleur et le Modèle calques si vous êtes dans l'ensemble de la MVC chose).
Vous ne pouvez pas littéralement la réutilisation de balises JSP à un niveau individuel, mais vous pouvez réutiliser les classes, ils l'appeler.
JSTL ne peut pas être abstraite, mais ordinaire de code Java (que vous pouvez peut-être appeler à partir de JSTL) peut être.
De nouveau, vous ne pouvez pas rendre les objets utilement dans la jstl, mais vous pouvez dans toutes les classes qui sont appelés.
JSTL par lui-même n'est pas l'unité-testable. Mais les classes et les méthodes que vous appelez par son intermédiaire sont.
Cela dépend du modèle que vous utilisez. À l'aide de la MVC (spring, struts, ...), vous devez éviter l'utilisation des scriptlets dans votre JSP, parce qu'il représentent le point de vue, il doit contenir pur XHTML balises. JSTL est un langage déclaratif une sorte de XML, tandis que scriplet ne l'est pas.
En particulier, j'ai utilisé JSTL en combinaison avec l'AJAX via prototype pour générer de la RIA, sans avoir à mettre en œuvre un autre modèle. Récemment, j'ai vu ce genre de programmation avec ExtJS et DWR. Dans mon cas, j'ai trouvé qu'Il était nécessaire de combiner les deux JSTL et scriplets toujours préférant JSTL lorsque cela est possible.
Je ne vois que scriplets est trop mauvais, spécialement si vous suit modèle de conception en elle, je travaille beaucoup sur spring mvc, dans ma jsp je viens d'obtenir le modèle de données dans scriplits, et je la montre à l'utilisateur à l'aide de java simple code html, je sens qu'il me donner plus de liberté que la JSTL.
Voici un tableau comparant les JSP et les Facelets qui peut éventuellement être utile à quelqu'un, quelque part:
Source