Một dịch vụ web là một dịch vụ cung cấp phương pháp dịch vụ cho khách hàng của mình bằng cách sử dụng các mô hình lập trình REST hoặc giao thức SOAP để liên lạc. Có một số cách để triển khai một dịch vụ web. Cách đơn giản nhất để viết một dịch vụ web là viết một lớp và chú thích nó bằng @WebService
và @WebMethod
chú thích từ javax.jws
, sau đó khởi chạy nó từ một main
-method với:
Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
Kết quả là bạn có thể xem WSDL tại URL đã đăng ký và nếu bạn có SoapUI hoặc bất kỳ ứng dụng khách SOAP nào khác, bạn cũng có thể thử nghiệm và sử dụng dịch vụ web của mình.
Mặt khác, một servlet được sử dụng để vận chuyển các yêu cầu và phản hồi HTTP . Nó có thể được sử dụng để viết một ứng dụng web với JSP và HTML, hoặc để phục vụ các phản hồi XML và JSON (như trong một dịch vụ RESTful) và tất nhiên cũng để nhận và trả lại các thông điệp SOAP. Bạn có thể coi nó như một lớp bên dưới các dịch vụ web . Các Servlet có tiêu chuẩn riêng của chúng, hiện là Đặc điểm kỹ thuật Java Servlet Phiên bản 4.0
Một cách tiếp cận thực tế và toàn diện hơn là viết một dịch vụ web với một khuôn khổ và xuất bản nó trên một máy chủ ứng dụng hoặc vùng chứa servlet như Tomcat hoặc JBoss. Trong trường hợp này, bạn sẽ sử dụng Servlet để xử lý việc truyền tải các yêu cầu HTTP truyền các thông điệp SOAP hoặc REST của bạn.
Ví dụ, để viết một dịch vụ web với công nghệ servlet, bạn có thể sử dụng JAX-WS (ví dụ: cho SOAP). Để viết các dịch vụ RESTful, bạn có thể sử dụng JAX-RS (với triển khai tham chiếu là Jersey ), hoặc cách khác, bạn có thể sử dụng Spring WebMVC , nhưng theo tôi biết đó không phải là mục đích chính của khung này và Jersey đáng kể là dễ sử dụng hơn.
Về câu hỏi thứ hai: Các @Controller
chú thích là một mùa xuân cụ khuôn mẫu chú thích mà nói với mùa xuân điều gì đó về những gì đậu của bạn có nghĩa vụ phải làm. Chính xác thì phương thức của bộ điều khiển sẽ trả về là gì tùy thuộc vào việc triển khai thực tế các phương thức của bạn, bạn có thể định cấu hình Spring để trả về văn bản thuần túy, HTML, JSON, XML, dữ liệu nhị phân hoặc những gì bạn muốn.
Một lưu ý bên cạnh, một lớp được chú thích @Controller
chưa phải là một servlet, nó chỉ đơn giản là một bean. Cách bạn sử dụng các servlet chủ yếu phụ thuộc vào Framework mà bạn sử dụng. Ví dụ, khi bạn sử dụng Spring, công việc của servlet được thực hiện bởi Springs DispatcherServlet
, công việc này sẽ chuyển tiếp các yêu cầu đến đúng bean. Nếu bạn sử dụng Tomcat, thì bạn có thể trực tiếp viết các servlet của riêng mình bằng cách phân lớp con đơn giản javax.servlet.http.HttpServlet
và ghi đè lên các phương thức cần thiết, chẳng hạn như các phương thức doGet
phản hồi các yêu cầu HTTP GET từ trình duyệt của bạn.