서블릿과 웹 서비스의 차이점
이 2 개의 차이점은 무엇입니까? 나는 Google에서 결정적인 결과를 거의 찾지 못했습니다.
다음은 후속 질문입니다.
@Controller 주석을 사용하여 몇 개의 클래스에 주석을 달고 Spring mvc 웹 앱을 만들고 프런트 엔드-> 백 엔드에서 일부 정보를 성공적으로 전송하고 그 반대의 경우에도 일부 데이터베이스가 백 엔드 측에 포함될 수 있습니다.
그걸 뭐라고 부르 겠어요? 나머지 웹 서비스 또는 서블릿 또는 다른 무엇입니까?
웹 서비스는 나머지 프로그래밍 패러다임이나 통신을위한 SOAP 프로토콜을 사용하여 고객에 대한 서비스 방법을 제공하는 서비스입니다. 웹 서비스를 구현하는 방법에는 여러 가지가 있습니다. 웹 서비스를 작성하는 가장 간단한 방법은 클래스를 작성하고에서 @WebService
및 @WebMethod
주석으로 주석을 단 javax.jws
다음 다음을 사용하여 main
-method 에서 시작하는 것입니다.
Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
그 결과 등록 된 URL에서 WSDL 을 볼 수 있으며 SoapUI 또는 다른 SOAP 클라이언트가있는 경우 웹 서비스를 테스트하고 사용할 수도 있습니다.
반면에 서블릿 은 HTTP 요청 및 응답 을 전송하는 데 사용됩니다 . JSP 및 HTML을 사용하여 웹 애플리케이션을 작성하거나 RESTful 서비스에서와 같이 XML 및 JSON 응답을 제공하고 물론 SOAP 메시지를 수신 및 반환하는 데 사용할 수 있습니다. 웹 서비스 아래의 한 계층 으로 생각할 수 있습니다 . 서블릿에는 현재 Java 서블릿 사양 버전 4.0 인 자체 표준이 있습니다.
보다 포괄적이고 실용적인 접근 방식은 프레임 워크로 웹 서비스를 작성하고이를 Tomcat 또는 JBoss와 같은 애플리케이션 서버 또는 서블릿 컨테이너에 게시하는 것입니다. 이 경우 Servlet을 사용하여 SOAP 또는 REST 메시지를 전송하는 HTTP 요청의 전송을 처리합니다.
서블릿 기술로 웹 서비스를 작성하려면 예를 들어 JAX-WS (예 : SOAP)를 사용할 수 있습니다. RESTful 서비스를 작성하려면 JAX-RS (참조 구현이 Jersey )를 사용하거나 또는 Spring WebMVC를 사용할 수 있지만 내가 아는 한 이것이이 프레임 워크의 주요 목적이 아니며 Jersey는 상당히 사용하기 쉽습니다.
두 번째 질문과 관련하여 @Controller
어노테이션은 Spring 에게 bean이 수행해야하는 작업에 대해 알려주 는 Spring 특정 스테레오 타입 어노테이션입니다. 컨트롤러의 메서드가 정확히 무엇을 반환 할 것인지는 메서드의 실제 구현에 따라 다르며, 일반 텍스트, HTML, JSON, XML, 바이너리 데이터 또는 원하는 것을 반환하도록 Spring을 구성 할 수 있습니다.
주석이 달린 클래스 @Controller
는 아직 서블릿이 아니며 단순히 빈입니다. 서블릿을 사용하는 방법은 주로 사용하는 프레임 워크에 따라 다릅니다. 예를 들어, Spring을 사용할 때 서블릿 작업은 Springs에 의해 수행되어 DispatcherServlet
올바른 Bean에 요청을 전달합니다. Tomcat을 사용하는 경우 클래스를 서브 클래 싱하고 브라우저의 HTTP GET 요청에 응답하는 javax.servlet.http.HttpServlet
것과 같은 필요한 메소드를 덮어 쓰는 방식으로 직접 서블릿을 작성할 수 있습니다 doGet
.
당신이 설명하고있는 것은 웹 애플리케이션입니다 . 인간이 브라우저를 사용하여 소프트웨어 시스템과 상호 작용하는 곳입니다.
웹 서비스는 소프트웨어 시스템이 포함 된 어떤 인간 않고, HTTP와 XML 또는 JSON 사용하여 서로 통신 할 수있는 방법입니다.
서블릿은 HTTP 요청에 응답하는 소프트웨어를 작성하는 자바 특정의 방법입니다. Spring MVC는 웹 애플리케이션을 더 쉽게 작성하기 위해 많은 구현 세부 사항을 추상화하지만 내부적으로 서블릿을 사용합니다.
내 생각은 웹 서비스가 일부 비즈니스 특정 기능과 같은 더 높은 수준의 추상화를 정의한다는 것입니다. Servlet은 데이터 전송을 담당하는 소프트웨어 구현 구성 요소 일뿐입니다.
웹 서비스 구현은 일반적으로 데이터 수신을 위해 서블릿에 의존합니다. 그러나 프로토콜 데이터를 처리하는 사용자 지정 계층을 사용할 수도 있습니다.
@Controller는 아마도 전송을 구현하는 방법 인 서블릿보다 웹 서비스와 더 관련이있을 것입니다.
서블릿과 웹 서비스의 가장 분명한 차이점은 HTTP를 통해 서블릿에 액세스하고 SOAP (Simple Object Access Protocol)를 통해 웹 서비스에 액세스한다는 것입니다. 그러나 실제로 서블릿을 직접 호출 할 수는 없으며 호출자가 응용 프로그램을 벗어난 경우 URL 연결을 열고 서블릿에 일부 매개 변수를 넣을 수만 있습니다. 그리고 호출자가 넣을 수있는 매개 변수를 제한 할 수 없습니다. 호출자는 서블릿이받을 수있는 매개 변수를 알지 못합니다. 따라서 웹 서비스를 사용하여 다른 응용 프로그램에 API를 제공하는 것이 좋습니다. 웹 서비스의 WSDL 파일은 호출자에게 웹 서비스를 호출하기에 충분한 정보를 제공 할 수 있습니다.
서블릿은 HTTP 쿼리 핸들러입니다. 들어오는 쿼리로 원하는 것을 할 수 있습니다. JVM에서 실행되는 서블릿.
웹 서비스는 다소 엄격한 프로토콜에 연결되어 있습니다. 인터페이스 (API)는 사용 가능한 메서드와 해당 인수 및 서비스에 대한 반환 값으로 정의됩니다.
이 인터페이스는 프로토콜 메커니즘을 사용하여 노출됩니다. 이러한 프로토콜은 서비스를 실행할 호스트에 대해 알 수 없습니다. PHP, Java, C # 또는 사용자 고유의 언어를 사용하여 동일한 웹 서비스를 정의 할 수 있습니다. 프로토콜에 대한 쿼리를 이해할 수 있고 클라이언트가 읽을 수있는 답변을 생성 할 수있는 코드 만 있으면됩니다.
예를 들어 SOAP 는 웹 서비스 프로토콜입니다. Wikipedia 정의 :
원래 Simple Object Access Protocol로 정의 된 SOAP는 컴퓨터 네트워크에서 웹 서비스를 구현할 때 구조화 된 정보를 교환하기위한 프로토콜 사양입니다.
웹 서비스는 서블릿보다 높은 수준에서 작동합니다. 서블릿은 간단하고 서버 측 구성 요소를 작성하는 기능을 제공하는 API입니다.
예를 들어 RESTfull은 서블릿과 함께 다른 많은 "기능"을 포함하는 웹 서비스입니다. 배포하기 위해 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>
이것은 단지 서블릿입니다.
웹 서비스는 요청을 깔끔하고 구조화 된 방식으로 처리하는 Servlet 클래스 인 ServletContainer 클래스를 사용합니다. REST는 REpresentational STateless Protocol을 나타냅니다. 여기서 요청은 데이터를 저장하지 않습니다.
REST 웹 서비스는 HTTP 메소드를 지원합니다.
- GET- 일반적으로 데이터를 가져옵니다.
- POST- 새 개체를 삽입합니다.
- PUT- 기존 개체를 업데이트합니다.
- DELETE- Object를 삭제합니다.
We can map any number of URLs to Web Service class which can have any type of HTTP methods.
On other hand, there can be only 1 URL mapping can be done for each servlet. Though the end requirement can be achieved with the help of request parameter conditions, but using servlet nowadays won't provide clean way.
In webservice we can define URL path at Class level as well as Method level, which allows us to code in more structured way.
참고URL : https://stackoverflow.com/questions/5930795/difference-between-servlet-and-web-service
'IT박스' 카테고리의 다른 글
값 유형을 null과 비교해도 괜찮은 C # (0) | 2020.09.19 |
---|---|
Android XML 레이아웃의 '포함'태그가 실제로 작동합니까? (0) | 2020.09.19 |
콜백 Ajax JSON을 사용한 jQuery 자동 완성 (0) | 2020.09.19 |
Javascript 함수 및 기본 매개 변수, IE 및 Chrome에서 작동하지 않음 (0) | 2020.09.19 |
숭고한 텍스트의 정규식 : 개행 문자를 포함하여 모든 문자와 일치합니까? (0) | 2020.09.19 |