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
T
e
r
m
i
n
a
l
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
.
a
r
o
u
n
d
W
r
i
t
e
T
o
(
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
j
a
v
a
:
247
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
m
e
s
s
a
g
e
.
i
n
t
e
r
n
a
l
.
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
p
r
o
c
e
e
d
(
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
j
a
v
a
:
162
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
f
i
l
t
e
r
.
L
o
g
g
i
n
g
F
i
l
t
e
r
.
a
r
o
u
n
d
W
r
i
t
e
T
o
(
L
o
g
g
i
n
g
F
i
l
t
e
r
.
j
a
v
a
:
293
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
m
e
s
s
a
g
e
.
i
n
t
e
r
n
a
l
.
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
p
r
o
c
e
e
d
(
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
j
a
v
a
:
162
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
s
e
r
v
e
r
.
i
n
t
e
r
n
a
l
.
J
s
o
n
W
i
t
h
P
a
d
d
i
n
g
I
n
t
e
r
c
e
p
t
o
r
.
a
r
o
u
n
d
W
r
i
t
e
T
o
(
J
s
o
n
W
i
t
h
P
a
d
d
i
n
g
I
n
t
e
r
c
e
p
t
o
r
.
j
a
v
a
:
103
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
m
e
s
s
a
g
e
.
i
n
t
e
r
n
a
l
.
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
p
r
o
c
e
e
d
(
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
j
a
v
a
:
162
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
s
e
r
v
e
r
.
i
n
t
e
r
n
a
l
.
M
a
p
p
a
b
l
e
E
x
c
e
p
t
i
o
n
W
r
a
p
p
e
r
I
n
t
e
r
c
e
p
t
o
r
.
a
r
o
u
n
d
W
r
i
t
e
T
o
(
M
a
p
p
a
b
l
e
E
x
c
e
p
t
i
o
n
W
r
a
p
p
e
r
I
n
t
e
r
c
e
p
t
o
r
.
j
a
v
a
:
88
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
m
e
s
s
a
g
e
.
i
n
t
e
r
n
a
l
.
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
p
r
o
c
e
e
d
(
W
r
i
t
e
r
I
n
t
e
r
c
e
p
t
o
r
E
x
e
c
u
t
o
r
.
j
a
v
a
:
162
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
m
e
s
s
a
g
e
.
i
n
t
e
r
n
a
l
.
M
e
s
s
a
g
e
B
o
d
y
F
a
c
t
o
r
y
.
w
r
i
t
e
T
o
(
M
e
s
s
a
g
e
B
o
d
y
F
a
c
t
o
r
y
.
j
a
v
a
:
1154
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
s
e
r
v
e
r
.
S
e
r
v
e
r
R
u
n
t
i
m
e
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
TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247)atorg.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)atorg.glassfish.jersey.filter.LoggingFilter.aroundWriteTo(LoggingFilter.java:293)atorg.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)atorg.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)atorg.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)atorg.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)atorg.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)atorg.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1154)atorg.glassfish.jersey.server.ServerRuntimeResponder.writeResponse(ServerRuntime.java:571)
at org.glassfish.jersey.server.ServerRuntime
R
e
s
p
o
n
d
e
r
.
p
r
o
c
e
s
s
R
e
s
p
o
n
s
e
(
S
e
r
v
e
r
R
u
n
t
i
m
e
.
j
a
v
a
:
378
)
a
t
o
r
g
.
g
l
a
s
s
f
i
s
h
.
j
e
r
s
e
y
.
s
e
r
v
e
r
.
S
e
r
v
e
r
R
u
n
t
i
m
e
Responder.processResponse(ServerRuntime.java:378) at org.glassfish.jersey.server.ServerRuntime
Responder.processResponse(ServerRuntime.java:378)atorg.glassfish.jersey.server.ServerRuntimeResponder.process(ServerRuntime.java:368)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:262)
 此时,需要获取json转换包的支持 。 可以由多种方式实现:MOXy、JSON-P、Jackson、Jettison等,本例为Jackson。 3. jackson-all-1.9.11.jar 下载地址<http://wiki.fasterxml.com/JacksonDownload> 4. 项目中引入jackson-all-1.9.11.jar 5.在“com.waylau.rest”目录下创建RestApplication.java
复制
package com.waylau.rest;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.glassfish.jersey.filter.L
真题解析、进阶学习笔记、最新讲解视频、实战项目源码、学习路线大纲
详情关注公中号【编程进阶路】
oggingFilter;
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进入应用,如下: ### 文末 如果30岁以前,可以还不知道自己想去做什么的话,那30岁之后,真的觉得时间非常的宝贵,不能再浪费时间在一些碎片化的事情上,比如说看综艺,电视剧。一个人的黄金时间也就二,三十年,不能过得浑浑噩噩。所以花了基本上休息的时间,去不断的完善自己的知识体系,希望可以成为一个领域内的TOP。 同样是干到30岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。 这也是为什么大家都说30岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。 **269页《前端大厂面试宝典》** 包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。  **前端面试题汇总**  **JavaScript** 
复制