JAX-RS入门 六: 数据处理(1)
| 
 接下来要花两小节来介绍一下JAX-RS中的数据处理(Data Handlers)部分。 ? 一、SteamingOutput 
 在第一节中(http://liugang594.iteye.com/blog/1491434),看getCustomer()方法:  
  
  
    Java代码?? 
    
 
 其中使用了SteamingOutput来写一个原始流的字符流。 这是JAX-RS提供的数据处理的其中一种方式,通过回调SteamingOutput的write()方法来写回response。 相对于直接返回一个OutputSteam对象,使用回调对象有以下好处: 
 二、InputSteam/Reader 可以使用InputSteam或Reader去处理请求内容,JAX-RS会自动将请求数据转成一个InputSteam/Reader对象,例如:  
  
  
    Inputsteam代码?? 
    
 
 ?  
  
  
    Reader代码?? 
    @Path("/morestuff")??
 
    
  
  
    Response代码?? 
    @GET??
 
   注:当作为响应时,需要指定@Produces,这样JAX-RS才知道怎么去设置响应的Content-Type头信息 三、File File对象也可以用在处理请求或响应中。例如用于请求:  
  
  
    File作为请求参数代码?? 
    @POST??
 
   注:当使用File作为请求参数时,JAX-RS会在后台生成一个临时文件,以请求的信息体作为这个文件的内容,然后将这个临时文件作为参数传入。 用于响应:private?static?final?String?basePath?=?"...";?? 注:同样的,当File用作响应时,需要指定@Produces,用于告诉JAX-RS怎么转换File内容,即Content-Type。 四、byte[] byte[]也可以用在请求或响应,例如:byte[]?get()?{?? 五、String/Char[] 大多数网络数据是基于文件格式的。JAX-RS可以进行任何文件格式的内容与String/Char[]之间的转换。例如:  
  
  
    String/char[]代码?? 
    @Produces("application/xml")??
 
   ? 注:JAX-RS规范要求实现者必须处理在Content-Type中指定的charset值,当注入String时,例如: POST?/data?? 这里charset为UTF-8,实现者必须保证生成的Java String必须是UTF-8编码的。 六、MultivaluedMap<String,String> 和Form 在节4(http://liugang594.iteye.com/blog/1496651)中,已经介绍了使用@FormParam去获取提交的Form值。除了使用@FormParam,也可以直接注入MultivaluedMap<String,String>对象来表示所有请求的Form数据,其中Form数据格式是 "application/x-www-form-urlencoded",例如: @Consumes("application/x-www-form-urlencoded")?? 七、javax.xml.transform.Source Source接口代表了一个XML的输入或输出,它通常是用来进行XSLT转换的,例如: @Consumes("application/xml")?? (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 


