Différence entre le service servlet et le service web

Quelle est la différence entre ces 2? J'ai trouvé quelques résultats sur google rien de concluant.

Voici une question de suivi:

dire que je crée le printemps MVC application web annoter quelques classes avec l'annotation @Controller et créer quelque chose qui transférera avec succès quelques informations de front end -> back end et vice versa et peut-être une base de données pourrait être impliqué sur le côté de l'arrière.

Que feriez-vous appeler qui? Rest web service ou servlet ou autre chose ?

78
demandé sur skaffman 2011-05-09 02:24:40

7 réponses

A web service est un service qui fournit des méthodes de service à ses clients en utilisant soit 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 manière la plus simple d'écrire un service web serait d'écrire une classe et de l'annoter avec les @WebService et @WebMethod annotations de javax.jws , puis de le lancer à partir d'une main - méthode avec:

Endpoint.publish("http://localhost:8089/myservice", new MyWebService());

le résultat est que vous pouvez voir 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.

A servlet d'autre part est utilisé pour le transport HTTP requêtes et résondes. Il peut être utilisé pour écrire une application web avec JSPs et HTML, ou pour servir des réponses XML et JSON (comme dans un service RESTful) et bien sûr aussi pour recevoir et retourner des messages SOAP. Vous pouvez le considérer comme une couche sous les services web . Les Servlets ont leur propre norme qui est actuellement la spécification Java Servlet version 4.0

une approche plus complète et pratique est d'écrire un service web avec un cadre et de le publier sur un serveur d'application ou un conteneur de servlets tels que Tomcat ou JBoss. Dans ce cas, vous utiliseriez un Servlet pour manipuler le transport des requêtes HTTP qui transmettent vos messages SOAP ou REST.

pour écrire un service web avec la technologie servlet, vous pouvez par exemple utiliser JAX-WS (par exemple pour SOAP). Afin d'écrire des services RESTful, vous pouvez soit utiliser JAX-RS (avec l'implémentation de référence étant Jersey ), soit utiliser Spring WebMVC , mais afaik qui n'est pas le but principal de ce cadre et le Maillot est beaucoup plus facile à utiliser.

sur la deuxième question: L'annotation @Controller est une annotation printemps stéréotype spécifique annotation qui dit printemps quelque chose sur ce que votre haricot est censé faire. Ce que retournera exactement une méthode d'un controller dépend de l'implémentation réelle de vos méthodes, vous pouvez configurer Spring pour retourner du texte brut, HTML, JSON, XML, des données binaires ou ce que vous voulez.

Une note sur le côté, une classe est annotée avec @Controller n'est pas encore une servlet, il est tout simplement un haricot. La façon dont vous utilisez les servlets dépend principalement du cadre que vous utilisez. Par exemple, lorsque vous utilisez le ressort, le travail de servlet est fait par des ressorts DispatcherServlet qui à son tour avant les demandes aux haricots corrects. Si vous utilisez Tomcat, alors vous pouvez écrire directement vos propres servlets en sous-classant simplement la classe javax.servlet.http.HttpServlet et en écrasant les méthodes nécessaires telles que doGet qui répond aux requêtes HTTP GET de votre navigateur.

76
répondu lanoxx 2018-08-28 10:14:47

ce que vous décrivez est une application web , où un humain utilise un navigateur pour interagir avec un système logiciel.

A web service est un moyen pour les systèmes logiciels de communiquer entre eux en utilisant HTTP et XML ou JSON, sans aucun humain impliqué.

A servlet est un logiciel spécifique à Java qui répond aux requêtes HTTP. Résumés des CVM du printemps supprimer beaucoup de détails d'implémentation pour faciliter l'écriture d'applications web, mais utilise des servlets sous les couvertures.

39
répondu artbristol 2014-11-12 10:50:06

mon point de vue serait que le service Web définit l'abstraction de haut niveau tel que certaines fonctionnalités spécifiques à l'entreprise. Alors que Servlet n'est qu'une composante logicielle chargée du transport des données.

Service Web de mise en œuvre s'appuient généralement sur la servlet pour la réception de données. Cependant, il peut aussi bien utiliser sa couche personnalisée de traitement des données du protocole.

@Controller est probablement plus lié au Service Web que servlet qui est, encore une fois, un moyen de mettre en œuvre le transport.

10
répondu Alex Gitelman 2011-05-08 22:31:52

la différence la plus évidente entre Servlet et Web Service est: Vous accédez à servlet via HTTP tout en accédant au service Web via SOAP (Simple Object Access Protocol). Mais, en fait, vous ne pouvez pas invoquer directement un servlet, vous pouvez seulement ouvrir URL connectez et mettez un paramètre au servlet si l'appelant n'est pas votre application. Et vous ne pouvez pas restreindre les paramètres que l'appelant peut mettre. L'appelant ne sait pas quels paramètres votre servlet peut recevoir soit. Donc, Vous feriez mieux de utiliser le service web pour fournir L'API à d'autres applications, le WSDL fichier de votre service web peut donner à l'appelant assez d'informations pour invoquez votre service web.

3
répondu Chinni 2013-08-22 11:34:26

un servlet est un gestionnaire de requêtes HTTP. Vous pouvez faire ce que vous voulez avec vos requêtes entrantes. Un servlet 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 agnostiques sur l'hôte qui va exécuter le service: vous pouvez définir le même service web utilisant PHP, Java, C# ou votre propre langue. Vous avez seulement besoin d'avoir 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 Wikipédia:

savon, défini à l'origine comme Simple Protocole D'accès aux objets, est un protocole spécification pour l'échange informations structurées dans le mise en œuvre de services Web en les réseaux informatiques.

2
répondu Guillaume 2011-05-09 10:13:31

Web services fonctionnent sur un niveau plus élevé que les servlets. Les Servlets sont des API simples qui permettent d'écrire des composants côté serveur.

par exemple RESTfull est un Service Web qui contient beaucoup d'autres" fonctionnalités " avec servlet. À déployer, nous pouvons définir le web.xml -

<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>jersey.rest.test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>

qui n'est rien d'autre qu'un servlet

2
répondu dgm 2012-12-14 09:05:02

Web Service utilise ServletContainer class qui est de nouveau une classe de Servlet, qui traite la demande de manière propre et structurée. Le reste représente le protocole de représentation des apatrides. Ici, la demande ne stockera aucune donnée.

le service REST Web supporte les méthodes HTTP

  1. GET - habituellement pour récupérer des données.
  2. POST - pour insérer un nouvel objet.
  3. PUT - pour mettre à jour l'objet existant.
  4. supprimer - pour supprimer l'objet.

nous pouvons mapper n'importe quel nombre D'URLs à la classe de Service Web qui peut avoir n'importe quel type de méthodes HTTP.

d'autre part, il ne peut y avoir qu'un mappage D'URL pour chaque servlet. Bien que l'exigence de fin puisse être atteinte avec l'aide des conditions de paramètre de demande, mais en utilisant de nos jours servlet ne fournira pas de manière propre.

dans webservice nous pouvons définir le chemin D'URL au niveau de classe ainsi que niveau de méthode , ce qui nous permet de coder de manière plus structurée.

2
répondu Kranti123 2016-01-28 11:33:28