jaxrs仕様を用いたwebserviceの開発(三)

5557 ワード

RESTとは
定義:RESTは、ネット上のリソース(サービスインタフェース、メソッド、パラメータ)を正確に特定できるプログラミングスタイルです.
RESTがサポートするデータフォーマット:xml、json
RESTサポート送信方式:GET、POST
jaxrs仕様を使用したwebserviceの開発
サーバ側
エンティティークラスの作成:
@XmlRootElement(name="people")
public class People {
	private int id;
	private String name;
	private String gender;
	private Date birth;
}
インタフェース:
@WebService
@Path("/people")
public interface IPeople {
	@GET//      ,              GET(POST),            GET(POST)
	@Produces(MediaType.APPLICATION_XML)//        
	@Path("/query")//@Path("/query/{id}")   “/query”      ,“{id}”      ,    , “/”  ,  “{}” 
	public People queryPeople();
	@GET//      ,              GET(POST),            GET(POST)
	@Produces(MediaType.APPLICATION_XML)//        
	@Path("/queryAll")
	public List queryAllPeople();
}
リリースサービス:
public class test {
	public static void main(String[] args) {
		JAXRSServerFactoryBean jaxRSServerFactoryBean=new JAXRSServerFactoryBean();
		jaxRSServerFactoryBean.setAddress("http://127.0.0.1:12223/cxf_jaxrs_server");
		jaxRSServerFactoryBean.setServiceClass(PeopleImpl.class);
		jaxRSServerFactoryBean.setServiceBean(new PeopleImpl());
		jaxRSServerFactoryBean.create();
		System.out.println("  ");
	}
}

クライアント
public class test {
		public static void main(String[] args) throws IOException {
			//   :      ,  WSDL  
			URL url = new URL("http://127.0.0.1:12223/cxf_jaxrs_server/people/queryAll");
			//   :             
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			//   :    
			//3.1      :POST    
			connection.setRequestMethod("GET");
			//3.2      :content-type
			//3.3      ,        connection      ,
			connection.setDoInput(true);
			

			//   :       ,  
			int responseCode = connection.getResponseCode();
			if(200 == responseCode){//         
				InputStream is = connection.getInputStream();
				InputStreamReader isr = new InputStreamReader(is);
				BufferedReader br = new BufferedReader(isr);
				
				StringBuilder sb = new StringBuilder();
				String temp = null;
				while(null != (temp = br.readLine())){
					sb.append(temp);
				}
				System.out.println(sb.toString());
				//dom4j      ,    
				is.close();
				isr.close();
				br.close();
			}
		}
}

アクセス先:
http://127.0.0.1:12223/cxf_jaxrs_server/people/queryAll/
JAxrs仕様統合springによるREST形式の開発:
サーバ側の作成:
People.java上記の通り
IPeople上記
PeopleImpl上記
プロファイル:
web.xml


  cxf_jaxrs_server
  
  	contextConfigLocation
  	classpath:ApplicationContext.xml
  
  
  	org.springframework.web.context.ContextLoaderListener
  
  
  	aaa
  	org.apache.cxf.transport.servlet.CXFServlet
  
  
  	aaa
  	/people/*
  
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
ApplicationContext.xml

 


	
		
	



アクセス先:http://127.0.0.1/cxf_jaxrs_server/people/cxf_jaxrs_servser/people/query
http://127.0.0.1:8080/プロジェクト名/servlet構成のパス/xml構成のパス/インタフェースで構成されたパス/メソッド
クライアントの作成



 
  
  Document
  
	function queryStudent(){
		//  XMLHttpRequest  
		var xhr = new XMLHttpRequest();
		//    
		xhr.open("GET","http://localhost:8080/cxf_jaxrs_server/people/cxf_jaxrs_server/people/queryAll?_type=json",true);
		//      
		xhr.onreadystatechange=function(){
			//                    
			if(4 == xhr.readyState && 200 == xhr.status){
				alert(eval("("+xhr.responseText+")").student[0].name);
			}
		}
		//    
		xhr.send(null);
	}