Servlet 和 Web 服务之间的区别

2022-08-31 11:23:59

这两者之间有什么区别?我在谷歌上发现的结果很少,没有什么确凿的。

这是一个后续问题:

假设我创建了spring mvc Web应用程序,用@Controller注释来注释几个类,并创建一些可以成功从前端传输一些信息的东西 - >后端,反之亦然,也许后端可能涉及一些数据库。

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


答案 1

Web 服务是使用 REST 编程范例或 SOAP 协议进行通信向其客户端提供服务方法的服务。有几种方法可以实现 Web 服务。编写 Web 服务的最简单方法是编写一个类,并使用 和 的注释对其进行注释,然后使用以下方法从 -方法启动它:@WebService@WebMethodjavax.jwsmain

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

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

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

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

要使用 servlet 技术编写 Web 服务,例如,您可以使用 JAX-WS(例如,对于 SOAP)。为了编写RESTful服务,你可以使用JAX-RS(参考实现是泽西岛),或者你可以使用Spring WebMVC,但据我所知,这不是这个框架的主要目的,泽西岛相当容易使用。

关于第二个问题:注释是Spring特定的刻板印象注释,它告诉Spring一些关于你的豆子应该做什么的事情。控制器的方法究竟会返回什么取决于方法的实际实现,您可以将Spring配置为返回纯文本,HTML,JSON,XML,二进制数据或任何您想要的内容。@Controller

侧面的注释,用注释的类还不是 servlet,它只是一个 bean。如何使用 servlet 主要取决于您使用的框架。例如,当您使用Spring时,servlet工作由Springs完成,然后Springs将请求转发到正确的bean。如果您使用Tomcat,那么您可以通过简单地对类进行子类化并覆盖必要的方法(例如响应来自浏览器的HTTP GET请求)来直接编写自己的servlet。@ControllerDispatcherServletjavax.servlet.http.HttpServletdoGet


答案 2

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

Web服务是软件系统使用HTTP和XML或JSON相互通信的一种方式,无需任何人员参与。

servlet 是一种特定于 Java 的编写软件的方式,用于响应 HTTP 请求。Spring MVC抽象出了很多实现细节,使编写Web应用程序更容易,但在幕后使用了servlet。