添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
@Path ( "/getUserJson" ) @Produces ( MediaType . APPLICATION_JSON ) public User getUserJson () { User user = new User (); user . setAge ( "27" ); user . setUserId ( "005" ); user . setUserName ( "Fmand" ); return user ;

MediaType.APPLICATION_JSON 说明输出的是JSON格式

  • 2,运行项目,浏览器输入 http://localhost:8089/RestDemo/rest/users/getUserJson 期望获取到json的数据,此时,项目报错
  • 	org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class com.waylau.rest.bean.User, genericType=class com.waylau.rest.bean.User.  
    	    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247)  
    	    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)  
    	    at org.glassfish.jersey.filter.LoggingFilter.aroundWriteTo(LoggingFilter.java:293)  
    	    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)  
    	    at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)  
    	    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)  
    	    at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)  
    	    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)  
    	    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1154)  
    	    at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:571)  
    	    at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:378)  
    	    at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:368)  
    	    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:262)  
    此时,需要获取json转换包的支持 。
    可以由多种方式实现:MOXy、JSON-P、Jackson、Jettison等,本例为Jackson。

  • jackson-all-1.9.11.jar 下载地址http://wiki.fasterxml.com/JacksonDownload
  • import org.codehaus.jackson.jaxrs.JacksonJsonProvider; import org.glassfish.jersey.filter.LoggingFilter; import org.glassfish.jersey.server.ResourceConfig; * @author waylau.com * 2014-3-18 public class RestApplication extends ResourceConfig { public RestApplication() { //服务类所在的包路径 packages("com.waylau.rest.resources"); //注册JSON转换器 register(JacksonJsonProvider.class);
  • 6.修改web.xml,初始化从RestApplicaton进入应用,如下:
  • <servlet>    
         <servlet-name>Way REST Service</servlet-name>  
         <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>  
          <init-param>  
               <param-name>javax.ws.rs.Application</param-name>  
               <param-value>com.waylau.rest.RestApplication</param-value>  
           </init-param>  
        <load-on-startup>1</load-on-startup>  
      </servlet>  
      <servlet-mapping>  
        <servlet-name>Way REST Service</servlet-name>  
        <url-pattern>/rest/*</url-pattern>  
      </servlet-mapping>  
    
  • 7.运行项目,再次访问http://localhost:8089/RestDemo/rest/users/getUserJson 即可输出JSON文本

    本章源码https://github.com/waylau/RestDemo/tree/master/jersey-demo3-json

    Code licensed under MIT,documentation under CC BY-NC-SA 3.0 CN
  •