servlet和Web服务之间的区别

Gan*_*row 84 java rest spring web-services terminology

这两个有什么区别?我在google上找到的结果很少,没有结论.

这是一个跟进问题:

假设我使用@Controller注释创建spring mvc web app注释几个类,并创建一些将成功从前端传输一些信息的东西 - >后端,反之亦然,也许某些数据库可能涉及到后端端.

你会怎么称呼它?休息Web服务或servlet或其他什么?

lan*_*oxx 85

web服务是使用任一REST编程范例或用于通信的SOAP协议提供的服务的方法为客户的服务.有几种方法可以实现Web服务.编写Web服务最简单的方法是编写一个类并使用@WebService@WebMethod注释来注释它javax.jws,然后从main-method 启动它:

Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
Run Code Online (Sandbox Code Playgroud)

结果是您可以在注册的URL上查看WSDL,如果您有SoapUI或任何其他SOAP客户端,您还可以测试和使用您的Web服务.

的servlet另一方面用于传送HTTP请求和resonses.它可用于编写带有JSP和HTML的Web应用程序,或用于提供XML和JSON响应(如在RESTful服务中),当然也可用于接收和返回SOAP消息.您可以将其视为Web服务下面的一层.Servlet有自己的标准,目前是Java Servlet Specification Version 4.0

更全面和实用的方法是使用框架编写Web服务并将其发布到应用程序服务器或servlet容器(如Tomcat或JBoss)上.在这种情况下,您将使用Servlet来处理传输SOAP或REST消息的HTTP请求的传输.

要使用servlet技术编写Web服务,您可以使用例如JAX-WS(例如,用于SOAP).为了编写RESTful服务,你可以使用JAX-RS(参考实现是Jersey),或者你也可以使用Spring WebMVC,但是afaik并不是这个框架的主要目的,而且Jersey更容易使用.

关于第二个问题:@Controller注释是一个Spring特定的构造型注释,告诉Spring一些关于你的bean应该做什么.控制器的确切方法将返回取决于方法的实际实现,您可以将Spring配置为返回纯文本,HTML,JSON,XML,二进制数据或者您想要的任何内容.

旁边的注释,一个注释的类@Controller还不是一个servlet,它只是一个bean.您如何使用servlet主要取决于您使用的框架.例如,当您使用Spring时,Servlet作业由Springs完成,而Springs DispatcherServlet又将请求转发给正确的bean.如果您使用Tomcat,那么您可以直接编写自己的servlet,只需子javax.servlet.http.HttpServlet类化并覆盖必要的方法,例如doGet响应来自浏览器的HTTP GET请求.

  • "REST或SOAP作为其协议"......但REST不是协议!! (3认同)
  • 强调它不是,它是一种编程范式.我纠正了我的表述以反映这一点. (3认同)

art*_*tol 41

您所描述的是一个Web应用程序,人类使用浏览器与软件系统进行交互.

一个Web服务是软件系统相互使用HTTP和XML或JSON通信,而无需任何人的方式.

一个servlet的是编写响应HTTP请求软件的特定Java的方式.Spring MVC抽象了很多实现细节,使编写Web应用程序变得更容易,但是使用了servlet.


Ale*_*man 10

我对此的看法是Web Service定义了更高级别的抽象,例如某些特定于业务的功能.而Servlet只是一个负责数据传输的软件实现组件.

Web Service实现通常依赖于servlet来接收数据.但是,它也可以使用它处理协议数据的自定义层.

@Controller可能与servlet更相关,而servlet也是实现传输的一种方式.