Quelle est la différence entre ces 2? J'ai trouvé quelques résultats sur google rien de concluant.
Voici une question complémentaire:
Supposons que je crée une application Web Spring mvc, annote deux classes avec l'annotation @Controller et crée quelque chose qui transférera avec succès certaines informations du front-end -> back-end et vice versa et peut-être qu'une base de données pourrait être impliquée du côté back-end.
Comment appelleriez-vous ça? Reste un service Web ou un servlet ou autre chose?
java
web-services
spring
rest
terminology
Gandalf StormCrow
la source
la source
Réponses:
Un service Web est un service qui fournit des méthodes de service à ses clients en utilisant le paradigme de programmation REST ou le protocole SOAP pour la communication. Il existe plusieurs façons de mettre en œuvre un service Web. La façon la plus simple d'écrire un service Web serait d'écrire une classe et de l'annoter avec les annotations
@WebService
et@WebMethod
dejavax.jws
, puis de la lancer à partir d'unemain
méthode avec:Le résultat est que vous pouvez afficher le WSDL à l'URL enregistrée et si vous avez SoapUI ou tout autre client SOAP, vous pouvez également tester et utiliser votre service Web.
Un servlet , d'autre part, est utilisé pour transporter les requêtes et réponses HTTP . Il peut être utilisé pour écrire une application Web avec des JSP et HTML, ou pour servir des réponses XML et JSON (comme dans un service RESTful) et bien sûr aussi pour recevoir et renvoyer des messages SOAP. Vous pouvez le considérer comme une couche sous les services Web . Les servlets ont leur propre standard qui est actuellement la version 4.0 de la spécification de servlet Java
Une approche plus complète et pratique consiste à écrire un service Web avec un framework et à le publier sur un serveur d'application ou un conteneur de servlet tel que Tomcat ou JBoss. Dans ce cas, vous utiliseriez un servlet pour gérer le transport des requêtes HTTP qui transmettent vos messages SOAP ou REST.
Pour écrire un service Web avec la technologie de servlet, vous pouvez par exemple utiliser JAX-WS (par exemple pour SOAP). Pour écrire des services RESTful, vous pouvez soit utiliser JAX-RS (avec l'implémentation de référence étant Jersey ), soit vous pouvez utiliser Spring WebMVC , mais pour autant que je sache, ce n'est pas l'objectif principal de ce framework et Jersey est considérablement plus facile à utiliser.
Concernant la deuxième question: l'
@Controller
annotation est une annotation stéréotypée spécifique à Spring qui dit quelque chose à Spring sur ce que votre bean est censé faire. Ce que retournera exactement une méthode d'un contrôleur dépend de l'implémentation réelle de vos méthodes, vous pouvez configurer Spring pour renvoyer du texte brut, HTML, JSON, XML, des données binaires ou ce que vous voulez.Une note sur le côté, une classe qui est annotée
@Controller
n'est pas encore une servlet, c'est simplement un bean. La façon dont vous utilisez les servlets dépend principalement du Framework que vous utilisez. Par exemple, lorsque vous utilisez Spring, le travail de servlet est effectué par SpringsDispatcherServlet
qui à son tour transmet les requêtes aux beans appropriés. Si vous utilisez Tomcat, vous pouvez directement écrire vos propres servlets en sous-classant simplement lajavax.servlet.http.HttpServlet
classe et en écrasant les méthodes nécessaires telles quedoGet
qui répond aux requêtes HTTP GET de votre navigateur.la source
Ce que vous décrivez est une application Web , dans laquelle un humain utilise un navigateur pour interagir avec un système logiciel.
Un service Web est un moyen pour les systèmes logiciels de communiquer entre eux en utilisant HTTP et XML ou JSON, sans intervention humaine.
Un servlet est une manière spécifique à Java d'écrire un logiciel qui répond aux requêtes HTTP. Spring MVC résume une grande partie des détails de l'implémentation pour faciliter l'écriture d'applications Web, mais utilise des servlets sous les couvertures.
la source
Mon point de vue serait que le service Web définit une abstraction de niveau supérieur, telle que certaines fonctionnalités spécifiques à l'entreprise. Alors que Servlet n'est qu'un composant d'implémentation logicielle responsable du transport des données.
L'implémentation du service Web repose généralement sur un servlet pour recevoir des données. Cependant, il peut également utiliser sa couche personnalisée de traitement des données de protocole.
@Controller est probablement plus lié au Web Service qu'au servlet qui est, encore une fois, un moyen d'implémenter le transport.
la source
@Controller
fait partie du framework Spring Web MVC (c'est le C), donc ce n'est certainement pas une chose de service Web, mais il n'est pas non plus étroitement lié aux servlets.La différence la plus évidente entre le servlet et le service Web est: Vous accédez au servlet via HTTP tout en accédant au service Web via SOAP (Simple Object Access Protocol). Mais, en fait, vous ne pouvez pas appeler directement un servlet, vous ne pouvez ouvrir la connexion URL et mettre un paramètre au servlet que si l'appelant est hors de votre application. Et vous ne pouvez pas restreindre les paramètres que l'appelant peut mettre. L'appelant ne sait pas non plus quels paramètres votre servlet peut recevoir. Donc, vous feriez mieux d'utiliser le service Web pour fournir une API à d'autres applications, le fichier WSDL de votre service Web peut donner à l'appelant suffisamment d'informations pour appeler votre service Web.
la source
Un servlet est un gestionnaire de requêtes HTTP. Vous pouvez faire ce que vous voulez avec vos requêtes entrantes. Un servlet exécuté sur la JVM.
Un service web est lié à un protocole plus ou moins rigide: une interface (API) est définie avec les méthodes disponibles et leurs arguments et valeurs de retour pour le service.
Cette interface est exposée en utilisant les mécanismes du protocole. Ces protocoles sont indépendants de l'hôte qui exécutera le service: vous pouvez définir le même service Web en utilisant PHP, Java, C # ou votre propre langage. Vous avez seulement besoin d'un morceau de code capable de comprendre les requêtes pour le protocole et capable de produire des réponses lisibles par le client.
Par exemple, SOAP est un protocole de service Web: définition de Wikipedia:
la source
Les services Web fonctionnent à un niveau plus élevé que les servlets. Les servlets sont des API simples et offrant des capacités pour écrire des composants côté serveur.
Par exemple, RESTfull est un service Web qui contient de nombreuses autres «fonctionnalités» avec un servlet. Pour déployer, nous pouvons définir le web.xml comme -
qui n'est autre qu'une servlet
la source
Le service Web utilise la classe ServletContainer qui est à nouveau une classe Servlet, qui gère la demande de manière propre et structurée. Le REST signifie REpresentational STateless Protocol. Ici, la demande ne stockera aucune donnée.
Le service Web REST prend en charge les méthodes HTTP
Nous pouvons mapper n'importe quel nombre d'URL à la classe de service Web qui peut avoir n'importe quel type de méthodes HTTP.
D'un autre côté, il ne peut y avoir qu'un seul mappage d'URL pour chaque servlet. Bien que l'exigence finale puisse être atteinte à l'aide de conditions de paramètres de requête, l'utilisation de servlet de nos jours ne fournira pas un moyen propre.
Dans le service Web, nous pouvons définir le chemin de l'URL au niveau de la classe ainsi qu'au niveau de la méthode , ce qui nous permet de coder de manière plus structurée.
la source