บริการเว็บเป็นบริการที่มีวิธีการบริการให้กับลูกค้าของตนโดยใช้กระบวนทัศน์การเขียนโปรแกรม REST หรือโปรโตคอล SOAP สำหรับการสื่อสาร มีหลายวิธีในการใช้บริการเว็บ วิธีที่ง่ายที่สุดในการเขียนเว็บเซอร์วิสคือการเขียนคลาสและใส่คำอธิบายประกอบด้วย@WebService
และ@WebMethod
คำอธิบายประกอบจากjavax.jws
นั้นจึงเปิดใช้งานจาก a main
-method ด้วย:
Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
ผลลัพธ์ก็คือคุณสามารถดูWSDL ได้ที่ URL ที่ลงทะเบียนและหากคุณมี SoapUI หรือไคลเอนต์ SOAP อื่น ๆ คุณสามารถทดสอบและใช้บริการเว็บของคุณได้
เซิร์ฟเล็ตบนมืออื่น ๆ ที่ใช้ในการขนส่งHTTPร้องขอและการตอบสนอง สามารถใช้ในการเขียนเว็บแอปพลิเคชันด้วย JSPs และ HTML หรือเพื่อตอบสนอง XML และ JSON (เช่นเดียวกับบริการ RESTful) และแน่นอนว่ายังรับและส่งคืนข้อความ SOAP คุณสามารถคิดว่ามันเป็นชั้นหนึ่งดังต่อไปนี้บริการเว็บ Servlets มีมาตรฐานของตนเองซึ่งปัจจุบันคือJava Servlet Specification Version 4.0
แนวทางที่ครอบคลุมและเป็นประโยชน์มากขึ้นคือการเขียนเว็บเซอร์วิสด้วยเฟรมเวิร์กและเผยแพร่บนแอพพลิเคชั่นเซิร์ฟเวอร์หรือคอนเทนเนอร์ servlet เช่น Tomcat หรือ JBoss ในกรณีนี้คุณจะใช้ Servlet เพื่อจัดการการส่งคำขอ HTTP ที่ส่งข้อความ SOAP หรือ REST ของคุณ
ในการเขียนเว็บเซอร์วิสด้วยเทคโนโลยี servlet คุณสามารถใช้ JAX-WS (เช่น SOAP) ได้ ในการเขียนบริการ RESTful คุณสามารถใช้ JAX-RS (โดยใช้การอ้างอิงเป็นJersey ) หรืออีกทางหนึ่งคือคุณสามารถใช้Spring WebMVCแต่เท่าที่ฉันรู้ว่านั่นไม่ใช่จุดประสงค์หลักของกรอบนี้และ Jersey ก็เป็นอย่างมาก ใช้งานง่ายขึ้น
เกี่ยวกับคำถามที่สอง: @Controller
คำอธิบายประกอบเป็นคำอธิบายประกอบแบบตายตัวเฉพาะของSpringที่บอก Spring เกี่ยวกับสิ่งที่ถั่วของคุณควรทำ สิ่งที่วิธีการของคอนโทรลเลอร์จะส่งคืนนั้นขึ้นอยู่กับการใช้งานจริงของวิธีการของคุณคุณสามารถกำหนดค่า Spring เพื่อส่งคืนข้อความธรรมดา HTML, JSON, XML, ข้อมูลไบนารีหรือสิ่งที่คุณต้องการ
หมายเหตุด้านข้างคลาสที่ใส่คำอธิบายประกอบ@Controller
ยังไม่ได้เป็น servlet แต่เป็นเพียงถั่ว วิธีที่คุณใช้ servlets ขึ้นอยู่กับ Framework ที่คุณใช้เป็นหลัก ตัวอย่างเช่นเมื่อคุณใช้ Spring งาน servlet จะทำโดย Springs DispatcherServlet
ซึ่งจะส่งต่อคำขอไปยังถั่วที่ถูกต้อง หากคุณใช้ Tomcat คุณสามารถเขียน servlets ของคุณเองได้โดยตรงเพียงแค่แบ่งคลาสย่อยjavax.servlet.http.HttpServlet
และเขียนทับเมธอดที่จำเป็นเช่นdoGet
ที่ตอบสนองคำขอ HTTP GET จากเบราว์เซอร์ของคุณ