什么是Web Service
对这个问题,我们至少有两种答案。
1.从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。我们把调用这个Web service 的应用程序叫做客户。例如,你想创建一个Web service ,它的作用是返回当前的天气情况。那么你可以建立一个ASP页面,它接受邮政编码作为查询字符串,然后返回一个由逗号隔开的字符串,包含了当前的气温和天气。要调用这个ASP页面,需要发送下面的这个HTTP GET
返回的数据就应该是这样:
这个ASP页面就应该可以算作是Web service 了。因为它基于HTTP GET请求,暴露出了一个可以通过Web调用的API。当然,Web service 还有更多的东西。
2.下面是对Web service 更精确的解释: Web services是建立可互操作的分布式应用程序的新平台。作为一个Windows程序员,你可能已经用COM或DCOM建立过基于组件的分布式应用程序。COM是一个非常好的组件技术,但是我们也很容易举出COM并不能满足要求的情况。
Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
下面介绍基于restful风格的webService简单开发步骤
webService三步曲:
1.准备服务
2.发布服务
3.请求服务
--------------------------WebService客户端------------------------------------------
org.apache.cxf.jaxrs.client.WebClient
//利用webService restful 风格的post方式增加
Customer c = new Customer();
WebClient.create("http://127.0.0.1.8080:loveCode/services/customerService/customer").
type(MediaType.APPLICATION_JSON).post(c);
//put方式修改名rose的年纪为20
WebClient.create("http://127.0.0.1.8080:loveCode/services/customerService/customer?name=rose").
type(MediaType.APPLICATION_JSON).put(null);
//get方式获得名为jack的客户信息
WebClient.create("http://127.0.0.1.8080:loveCode/services/customerService/customer?name=jack").
type(MediaType.APPLICATION_JSON).get(Customer.class);
------------------------WebService服务端---------------------------------------------------------
1. web.xml中CXF servlet服务配置
<servlet>
<servlet-name>CXFService</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFService</servlet-name>
<url-pattern>/services/**/</url-pattern>
</servlet-mapping>
2. applicationContext-webService.xml配置
<jaxrs:server id="customerService" address="/customerService">
<jaxrs:serviceBeans>
<bean class="com.vinci.crm.service.impl.CustomerServiceImpl" />
</jaxrs:serviceBeans>
<jaxrs:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
</jaxrs:inInterceptors>
<jaxrs:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
</jaxrs:outInterceptors>
</jaxrs:server>
3. 编写接口(及其相应实现),接口上的注解形式如下
@Path("customer/login")
@GET
@Consumes({ "application/xml", "application/json" })
@Produces({ "application/xml", "application/json" })
public Customer login(@QueryParam("telephone") String telephone,
@QueryParam("password") String password);
-------------------------------------------------------------
| @Path("/customer") |
| @GET/@POST/@PUT |
| @Consumers({ "application/xml", "application/json" }) |
| @Produces({ "application/xml", "application/json" }) |
| @PathParam |
| @QueryParam |
--------------------------------------------------------------
Customer实体类上需要@XMLRootElement注解
接口实现类调用DAO完成功能
网友评论