2024年最全webservice(3):CXF拦截器介绍及自定义拦截器实现(2),Web前端基础面试题2024

总结

三套“算法宝典”

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

28天读完349页,这份阿里面试通关手册,助我闯进字节跳动

算法刷题LeetCode中文版(为例)

人与人存在很大的不同,我们都拥有各自的目标,在一线城市漂泊的我偶尔也会羡慕在老家踏踏实实开开心心养老的人,但是我深刻知道自己想要的是一年比一年有进步。

最后,我想说的是,无论你现在什么年龄,位于什么城市,拥有什么背景或学历,跟你比较的人永远都是你自己,所以明年的你看看与今年的你是否有差距,不想做咸鱼的人,只能用尽全力去跳跃。祝愿,明年的你会更好!

由于篇幅有限,下篇的面试技术攻克篇只能够展示出部分的面试题,详细完整版以及答案解析,有需要的可以关注

| MARSHAL | Marshalling of the objects |

| (USER/POST)_PROTOCOL | Processing of the protocol message |

| (USER/POST)_STREAM | Processing of the byte level message(字节处理阶段,在该阶段把消息转为字节) |

| SEND | 消息发送 |

在CXF中,所有对消息的处理都是通过各种拦截器实现。CXF已经实现了多种拦截器,如操纵消息头、执行认证检查、验证消息数据、日志记录、消息压缩等,有些拦截器在发布服务、访问服务时已经默认添加到拦截器链。

日志拦截器

CXF已经内置了一些拦截器,这些拦截器大部分默认添加到拦截器链中,有些需要手动添加,如CXF提供的日志拦截器:输入日志拦截器LoggingInInterceptor和输出日志拦截器LoggingOutInterceptor,可以用在服务端也可以用在客户端,用来在测试或调试的时候输出服务端、客户端请求和接收到的信息。

服务端配置方式如下:

复制代码

<jaxrs:server id=“restServiceContainer” address=“/cxf”>

jaxrs:inInterceptors

</jaxrs:inInterceptors>

jaxrs:outInterceptors

</jaxrs:outInterceptors>

jaxrs:serviceBeans

</jaxrs:serviceBeans>

</jaxrs:server>

复制代码

API方式:

复制代码

JAXRSServerFactoryBean jrf = new JAXRSServerFactoryBean();

jrf.setResourceClasses(RestServiceImpl.class);

jrf.setResourceProvider(RestServiceImpl.class, new SingletonResourceProvider(new RestServiceImpl()));

jrf.setAddress(url);

jrf.getInInterceptors().add(new LoggingInInterceptor());

jrf.getOutInterceptors().add(new LoggingOutInterceptor());

jrf.create();

复制代码

客户端配置方式:

复制代码

JAXRSClientFactoryBean factory = new JAXRSClientFactoryBean();

factory.setServiceClass(RestService.class);

factory.setAddress(url);

factory.getInInterceptors().add(new LoggingInInterceptor());

factory.getOutInterceptors().add(new LoggingOutInterceptor());

RestService ser = factory.create(RestService.class);

ser.get();

复制代码

输出日志形式如下:客户端:

复制代码

[INFO ] 03-22 22:33:39 org.apache.cxf.interceptor.AbstractLoggingInterceptor.log(AbstractLoggingInterceptor.java:250) Outbound Message

---------------------------

ID: 1

Address: http://localhost:8080/webapp/ws/cxf/rest

Http-Method: GET

Content-Type: application/xml

Headers: {Content-Type=[application/xml], Accept=[text/plain]}

--------------------------------------

[INFO ] 03-22 22:33:39 org.apache.cxf.interceptor.AbstractLoggingInterceptor.log(AbstractLoggingInterceptor.java:250) Inbound Message

----------------------------

ID: 1

Response-Code: 200

Encoding: ISO-8859-1

Content-Type: text/plain

Headers: {content-type=[text/plain], Date=[Wed, 22 Mar 2017 14:33:39 GMT], transfer-encoding=[chunked]}

Payload: this is default get plain

--------------------------------------

复制代码

服务端:

复制代码

[INFO ] 03-22 22:33:39 org.apache.cxf.interceptor.AbstractLoggingInterceptor.log(AbstractLoggingInterceptor.java:250) Inbound Message

----------------------------

ID: 4

Address: http://localhost:8080/webapp/ws/cxf/rest

Encoding: UTF-8

Http-Method: GET

Content-Type: application/xml

Headers: {Accept=[text/plain], cache-control=[no-cache], connection=[keep-alive], content-type=[application/xml], host=[localhost:8080], pragma=[no-cache], user-agent=[Apache CXF 3.0.3]}

--------------------------------------

[INFO ] 03-22 22:33:39 org.apache.cxf.interceptor.AbstractLoggingInterceptor.log(AbstractLoggingInterceptor.java:250) Outbound Message

---------------------------

ID: 4

Response-Code: 200

Content-Type: text/plain

Headers: {Content-Type=[text/plain], Date=[Wed, 22 Mar 2017 14:33:39 GMT]}

Payload: this is default get plain

--------------------------------------

复制代码

自定义拦截器

CXF中也可以自定义拦截器,CXF中实现自定义拦截器需要继承AbstractPhaseInterceptor或者其子类如AbstractSoapInterceptor。

一个简单的拦截器:

复制代码

/**

* CXF 自定义拦截器

*/

public class MyInterceptor extends AbstractPhaseInterceptor{

//必需提供一个带参数的构造函数

public MyInterceptor(String phase){

super(phase);

}

//覆写拦截后的动作

@Override

public void handleMessage(Message message) throws Fault{

Q.p(“~~~~~~~~~~~~~~~~~~”);

if (message.getDestination() != null) {

其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

《前端开发四大模块核心知识笔记》

最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

《前端开发四大模块核心知识笔记》

最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值