Quand utilisez-vous un JSP et quand un Servlet? [dupliquer]
cette question a déjà une réponse ici:
j'ai une application qui envoie le client à un autre site pour gérer les paiements. L'autre site, en dehors du client, appelle une page sur notre serveur à laissez-nous savoir ce que le statut du paiement. La page appelée vérifie les paramètres donnés par l'application de paiement et vérifie si la transaction est connue de nous. Il met ensuite à jour la base de données pour refléter l'état. Tout cela est fait sans aucune interaction avec le client.
j'ai personnellement choisi de mettre en œuvre cette fonctionnalité en tant que JSP car il est plus facile de simplement déposer un fichier dans le système de fichiers que de compiler et empaqueter le fichier et ensuite ajouter une entrée dans un fichier de configuration.
compte tenu de la fonctionnalité de la page, je présume qu'un servlet serait l'option préférée. La question(s) sont:
13 réponses
un JSP est compilé dans un servlet la première fois qu'il est lancé. Cela signifie qu'il n'y a pas de vraie différence entre eux.
cependant, la plupart ont une tradition d'utiliser des servlets pour les contrôleurs et JSPs pour les vues. Puisque les controllers ne sont que des classes java, vous pouvez obtenir le support complet de l'outil (code completion etc.) de tous les IDEs. Cela donne une meilleure qualité et des délais de développement plus rapides par rapport à JSPs. Quelques IDE plus avancés (IntelliJ idée ressort à l'esprit) ont grand JSP support, ce qui rend cet argument obsolète.
si vous fabriquez votre propre cadre ou que vous le fabriquez simplement avec des JSPs simples, alors vous devriez vous sentir libre de continuer à utiliser les JSPs. Il n'y a pas de différence de performances et si vous pensez que les JSP sont plus faciles à écrire, continuez.
JSPs: pour présenter des données à l'utilisateur. Aucune logique commerciale ne devrait être ici, et certainement pas d'accès à la base de données.
Servlets: pour gérer l'entrée d'un formulaire ou D'une URL spécifique. Habituellement, les gens utiliseront une bibliothèque comme Struts/Spring sur le dessus des Servlets pour clarifier la programmation. Quoi qu'il en soit, le servlet devrait simplement valider les données entrées, puis les transmettre à une implémentation backend business layer (contre laquelle vous pouvez coder des cas de test). Il faut ensuite mettre le les valeurs résultantes sur la requête ou la session, et appelez un JSP pour les afficher.
Modèle: Un modèle de données qui contient vos données structurées que le site gère. Le servlet peut prendre les arguments, les mettre dans le modèle et ensuite appeler la couche business. Le modèle peut alors s'interfacer avec les OAD de l'arrière-plan (ou L'hibernation) pour accéder à la base de données.
tout projet non négligeable devrait mettre en œuvre une structure MVC. Il est, bien sûr, exagéré pour trivial fonctionnalité. Dans votre cas, j'implémenterais un servlet qui appellerait un DAO pour mettre à jour le statut, etc, ou ce qui est requis.
JSPs devrait être utilisé dans la couche de présentation, servlets pour la logique d'affaires et le code de fin (habituellement couche de base de données).
Je ne sais pas pourquoi vous ne pouvez pas utiliser un JSP comme vous le décrivez (il est compilé à un servlet par le containter de toute façon), mais vous avez raison, la méthode préférée est d'en faire un servlet en premier lieu.
JSPs sont un raccourci pour écrire un servlet. En fait, ils sont traduits en code Java servlet avant la compilation. (Vous pouvez le vérifier en vertu de certains tomcat subdir dont je ne me souviens pas le nom).
pour choisir entre servlet et JSP j'utilise une règle simple: si la page contient plus de code html que de code java, allez pour JSP, sinon il suffit d'écrire un servlet. En général, cela se traduit par: utiliser JSPs pour la présentation du contenu et servlets pour le contrôle, la validation, etc.
aussi, il est plus facile d'organiser et de structurer votre code à l'intérieur d'un servlet, car il utilise la syntaxe simple de la classe java. Les JSP ont tendance à être plus monolithiques, bien qu'il soit possible de créer des méthodes à l'intérieur.
il y a 2 règles assez simples:
- chaque fois que vous voulez écrire du code Java (business logic), faites-le dans une classe Java (so, Servlet).
- chaque fois que vous voulez écrire du code HTML/CSS/JS (voir/template logic), faites-le dans un JSP.
question connexe:
JSP sont essentiellement des markup qui sont compilés automatiquement en servlet par le conteneur servlet, de sorte que l'étape de compilation se produit dans les deux cas. C'est pourquoi un conteneur servlet qui supporte JSP doit avoir le JDK complet disponible au lieu de n'avoir besoin que du JRE.
donc la raison principale de JSP est de réduire la quantité de code nécessaire pour rendre une page. Si vous n'avez pas à rendre une page, un servlet est mieux.
je sais que ce n'est pas la réponse populaire aujourd'hui, mais: quand je conçois une application à partir de zéro, j'utilise toujours JSPs. Quand la logique n'est pas triviale, je crée des classes Java ordinaires pour faire le travail grognon que j'appelle du JSP. Je n'ai jamais compris l'argument que vous devriez utiliser les servlets parce que, en tant que classes Java pures, ils sont plus supportables. Un JSP peut facilement appeler une classe Java pure, et bien sûr une classe Java ordinaire est aussi maintenable que n'importe quel servlet. Il est plus facile de formater un page dans un JSP parce que vous pouvez mettre tout le markup en ligne au lieu d'avoir à écrire un tas de println's. Mais le plus grand avantage de JSPs est que vous pouvez simplement les laisser tomber dans un répertoire et qu'ils sont directement accessibles: vous n'avez pas besoin de jouer avec la mise en place de relations entre L'URL et le fichier de classe. La sécurité est facilement gérée en demandant à chaque JSP de commencer par une vérification de sécurité, qui peut être une simple déclaration d'appel, de sorte qu'il n'est pas nécessaire de mettre la sécurité dans une couche de répartition.
la seule raison que je vois pour utiliser un servlet est si vous avez besoin d'une correspondance complexe entre les URLs et la classe d'exécution résultante. Comme, si vous voulez examiner L'URL et ensuite appeler l'une des nombreuses classes en fonction de l'état de la session ou une telle. Personnellement, je n'ai jamais voulu faire cela, et les applications que j'ai vu qui le font ont tendance à être difficile à maintenir parce que avant même que vous pouvez commencer à faire un changement, vous devez comprendre ce code est vraiment exécuté.
la plupart des applications java de nos jours sont construites sur le modèle MVC... Côté controller (servlet), vous implémentez business logic. Le contrôleur servlet transmet habituellement la requête à un jsp qui générera la réponse html réelle (la vue dans MVC). L'objectif est de séparer les préoccupations... Des milliers de livres ont été écrits sur ce sujet.
dans une architecture MVC, les servlets sont utilisés comme controller et les JSPs comme view. Mais les deux sont techniquement identiques. JSP sera traduit en servlet, soit en temps de compilation (comme dans JDeveloper), soit lorsqu'il est consulté pour la première fois (comme dans Tomcat). La vraie différence est dans la facilité d'utilisation. Je suis assez sûr que vous aurez du mal à rendre une page HTML en utilisant servlet; mais à l'opposé du bon sens, vous trouverez en fait assez facile de coder même une logique assez complexe tout à l'intérieur JSP (avec l'aide d'une classe d'aide préparée peut-être). Les PHP font ça tout le temps. Et donc ils tombent dans le piège de créer des codes spaghetti. Donc, ma solution à votre problème: si vous trouvez qu'il est plus facile de coder dans JSP et qu'il n'implique pas trop de code, n'hésitez pas à coder dans JSP. Sinon, utilisez servlet.
est D'accord avec tous les points ci-dessus concernant les différences entre les JSPs et les Servlets, Mais voici quelques considérations supplémentaires. Vous écrivez:
j'ai une application qui envoie le client à un autre site pour gérer le paiement. L'autre site, à l'extérieur de le client appelle une page sur notre serveur pour nous faire savoir quel est l'état est de le de paiement. La page appelée vérifie les paramètres donnés par la demande de paiement et vérifie pour voir si l'opération est connu pour nous. Il met ensuite à jour le base de données pour refléter l'état. Ce tout est fait sans aucune interaction avec le client.
votre application consomme le service de paiement d'une autre application. Votre solution est fragile car si le service de paiement dans les autres applications change, cela casse votre page JSP. Ou si vous voulez changer d'application de politiques de paiement, votre page sera changer. La réponse courte est que votre application devrait consommer le service de paiement de l'application via un service web. Ni une page servlet ni une page JSP ne conviennent à votre logique de consommation.
deuxièmement, dans ce sens, la plupart des utilisations des pages servlets/JSP au cours des dernières années ont été placées dans le contexte d'un cadre tel que le ressort ou les entretoises. Je recommande Spring, car il vous offre la pile complète de ce dont vous avez besoin des pages du serveur au web logique de passerelle de service vers les OAD. Si vous voulez comprendre les écrous et les boulons du ressort, je recommande Spring in Action . Si vous avez besoin de mieux comprendre comment mettre à niveau une architecture d'entreprise écrite dans un langage comme Java (ou C#), je recommande de Fowler modèles de L'Architecture D'Application D'entreprise .
oui, ça devrait être un servlet. Un JSP peut être plus facile à développer, mais un servlet sera plus facile à entretenir. Imaginez avoir à corriger un bug aléatoire en 6 mois et essayer de se rappeler comment ça a fonctionné.
dans java servlet les balises HTML sont intégrées dans le codage java. Dans JSP, les codages java sont incorporés dans des balises HTML.
Pour grande demande pour les grands problème de la servlet est complexe à lire,à comprendre,debug,etc en raison de l'illisibilité de embeding plus des balises html à l'intérieur de la java..nous utilisons Donc des jsp.En jsp, il est facile à comprendre, - debug, - etc.
Merci Et Salutations, Sivakumar.j
ça dépend de vous? parce JSP est Java à L'intérieur de HTML et Servlet est un Java qui peut faire le HTML à l'intérieur de
hmmm... servlet est plus sercure que jsp parce que si vous soumettez à Servlet et faites suivre à un autre JSP il n'y a pas d'extension de fichier et vous ne pouvez pas voir quelle Page c'est..
mais L'avantage de JSP est que vous pouvez y coder facilement.