美文网首页
3.WebService实践笔记

3.WebService实践笔记

作者: Vincilovfang | 来源:发表于2018-04-25 21:30 被阅读0次

    什么是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完成功能
    

    相关文章

      网友评论

          本文标题:3.WebService实践笔记

          本文链接:https://www.haomeiwen.com/subject/vwhulftx.html