RESTFUL接口开发

1、需要导入的包
  <!-- CXF START -->
  <dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-frontend-jaxws</artifactId>
   <version>${cxf.version}</version>
  </dependency>
  <dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-transports-http</artifactId>
   <version>${cxf.version}</version>
  </dependency>
  <dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-frontend-jaxrs</artifactId>
   <version>${cxf.version}</version>
  </dependency>
  <dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-transports-http-jetty</artifactId>
   <version>${cxf.version}</version>
   <exclusions>
    <exclusion>
     <artifactId>geronimo-servlet_2.5_spec</artifactId>
     <groupId>org.apache.geronimo.specs</groupId>
    </exclusion>
   </exclusions>
  </dependency>
  <!-- CXF END -->

  <dependency>
   <groupId>javax.ws.rs</groupId>
   <artifactId>javax.ws.rs-api</artifactId>
   <version>2.0</version>
  </dependency>
 
  <dependency>
   <groupId>org.codehaus.jettison</groupId>
   <artifactId>com.springsource.org.codehaus.jettison</artifactId>
   <version>1.0.1</version>
  </dependency>

2、编写接口和实现类

package com.demo.inter.rest;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "User")  
public class User {
	private String id;
	private String name;

	public User() {
		super();
	}

	public User(String id, String name) {
		this.id = id;
		this.name = name;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

package com.demo.inter.rest;

import java.util.List;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

public interface IRest_HelloWorld {
	@GET
	@Produces(MediaType.TEXT_PLAIN)
	@Path("/say/{name}")
	public String say(@PathParam("name") String name);

	@GET
	@Produces(MediaType.TEXT_PLAIN)
	@Path("/sayHello/{name}")
	public String sayHello(@PathParam("user") User user);

	@GET
	@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
	@Path("/getList/{id}")
	public List<User> getList(@PathParam("id") String id);
}

package com.demo.inter.rest;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

@Service("rest_HelloWorldImpl")  
public class Rest_HelloWorldImpl implements IRest_HelloWorld {  
  
    public String say(String name) {  
            return name+",您好!";  
    }  
  
    public String sayHello(User user) {  
        return user.getName()+",您好!";  
    }  
      
    public List<User> getList(String id){  
        List<User> list = new ArrayList<User>();  
          
        String sid="1L";  
        User user = new User(sid,"张三"+sid);  
        list.add(user);  
          
        sid="2L";  
        user = new User(sid,"张三"+sid);  
        list.add(user);  
          
        sid= "3L";  
        user = new User(sid,"张三"+sid);  
        list.add(user);  
        return list;  
    }

}  


3、修改spring配置文件
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns=" http://www.springframework.org/schema/beans"  
xmlns:aop=" http://www.springframework.org/schema/aop" xmlns:context=" http://www.springframework.org/schema/context"  
xmlns:tx=" http://www.springframework.org/schema/tx" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"  
xmlns:mvc=" http://www.springframework.org/schema/mvc"   xmlns:jaxrs="http://cxf.apache.org/jaxrs
xsi:schemaLocation=" http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
http://www.springframework.org/schema/aop   http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-2.5.xsd  
http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
http://www.springframework.org/schema/mvc   http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">
上面粗体的为需要添加的内容

<!--导入cxf需要配置文件-->
 <import resource="classpath:META-INF/cxf/cxf.xml" />
 <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
 <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<!--发布接口-->
 <bean id="Rest_HelloWorldImpl" class="com.demo.inter.rest.Rest_HelloWorldImpl" />
 <!-- 这里的地址很重要,客户端需要通过这个地址来访问WebService -->
 <jaxrs:server id="restServiceContainer" address="/rest">
  <jaxrs:serviceBeans>
   <ref bean="Rest_HelloWorldImpl" />
  </jaxrs:serviceBeans>
  <jaxrs:extensionMappings>
   <entry key="json" value="application/json" />
   <entry key="xml" value="application/xml" />
  </jaxrs:extensionMappings>
  <jaxrs:languageMappings>
   <entry key="en" value="utf-8" />
  </jaxrs:languageMappings>
 </jaxrs:server>


4、测试
http://localhost:8080/MyTools/webservice/rest/say/111







restful restful所需要的jar包 ========================================= Restlet, a RESTful Web framework for Java ========================================= http://www.restlet.org ----------------------------------------- Native REST support * Core REST concepts have equivalent Java classes (UniformInterface, Resource, Representation, Connector for example). * Suitable for both client-side and server-side web applications. The innovation is that that it uses the same API, reducing the learning curve and the software footprint. * Restlet-GWT module available, letting you leverage the Restlet API from within any Web browser, without plugins. * Concept of "URIs as UI" supported based on the URI Templates standard. This results in a very flexible yet simple routing with automatic extraction of URI variables into request attributes. * Tunneling service lets browsers issue any HTTP method (PUT, DELETE, MOVE, etc.) through a simple HTTP POST. This service is transparent for Restlet applications. Complete Web Server * Static file serving similar to Apache HTTP Server, with metadata association based on file extensions. * Transparent content negotiation based on client preferences. * Conditional requests automatically supported for resources. * Remote edition of files based on PUT and DELETE methods (aka mini-WebDAV mode). * Decoder service transparently decodes compressed or encoded input representations. This service is transparent for Restlet applications. * Log service writes all accesses to your applications in a standard Web log file. The log format follows the W3C Extended Log File Format and is fully customizable. * Powerful URI based redirection support similar to Apache Rewrite module. Available Connectors * Multiple server HTTP connectors available, based on either Mortbay's Jetty or the Simple framework or Grizzly NIO framework. * AJP server connector available to let you plug behind an Apache HTT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值