新闻资讯

新闻资讯
首页 > 新闻资讯 > 正文内容

java做网站用什么框架(java开发web用什么框架好)

时间:2023-11-25 信途科技新闻资讯
背景

想要了解http协议,先看http协议在tcp/ip协议中的位置以及对应java层面io层的数据流方式,如上图所示,http协议位于应用层,在tcp协议之上;下图即是java层面几种通信模型简介

几种nio模型

使用BIO方式(同步阻塞IO)

使用ServerSocket绑定IP地址,启动端口,使用Socket进行握手连接,连接成功后,双方通过输入输出流进行同步阻塞式通信,每当有客户端的请求后,即启动一个线程进行处理

使用PAIO(同步阻塞IO)

使用线程池进行处理客户端的请求,因为在进行read或者write的时候,都是阻塞IO的,所以还是同步阻塞IO,只是线程的资源交由线程池进行控制

使用java.nio包的NIO方式(异步非阻塞IO)

使用NIO方式 异步IO,使用多路复用器关联通道,当通道中有事件时,即通知处理,不用阻塞IO,利用ByteBuffer进行数据缓冲,使用Channel进行数据传输,利用Selector进行通道的轮询与管理,读写均是异步的

使用AIO方式(异步非阻塞IO)

使用AIO方式,异步非阻塞IO,NIO的升级版,通过一系列的回调策略(CompletionHandler)完成应用功能,无需借助于Selector,对应于unix的异步IO

上面5种方式的code示例在----https://github.com/undergrowthlinear/netty.git

http request line和response line

了解http request line格式和response line对于后面看各个框架源码,有很大用处,可以随意打开chrome的调试器,看下访问一个请求对应的数据格式是否如上图所说

netty

netty 主从多模型

reactor 主从多线程模型 来源 https://xintu.cnblogs.com/luoxn28/p/11875340.html

大致工作流程如下:当客户端连接进来。在main线程池进行握手、鉴权等功能校验;通过后,将channel通道注册到io线程池,通过一系列的handler进行处理业务数据流。

netty逻辑架构图

承接上面的主从多模型,当客户端注册到io线程池后,netty使用管道流pipeline的方式,允许开发者复用框架已有的处理器以及自定义处理器,很多开源框架的网络层都是使用netty进行通信,例如rocketmq、dubbo等

netty中对于http协议支持核心类

HttpObject

HttpContent(大块对象支持) 、DefaultHttpContent、LastHttpContent(EMPTY_LAST_CONTENT)、HttpMessage(HttpRequest/HttpResponse的通用属性支持)、 HttpRequest、 DefaultHttpRequest

HttpObjectDecoder

(解析ByteBuf为HttpMessage和HttpContent或者LastHttpContent,取决于内容数据块的长度;如果没有内容,则是createMessage创建HttpMessage的子类;如果有固定长度内容,且小于maxChunkSize,则DefaultLastHttpContent;最后有很多内容的时候,就是DefaultHttpContent、DefaultLastHttpContent)----所以这里有HttpRequest和HttpContent内容需要业务端分开处理、HttpRequestDecoder()、HttpResponseDecoder(解析ByteBuf为HttpResponse/HttpContent)

HttpObjectEncoder

(将HttpMessage或者HttpContent转换成ByteBuf),HttpRequestEncoder(HttpRequest/HttpContent转为ByteBuf)、 HttpResponseEncoder(HttpResponse/HttpContent转为ByteBuf)、 io.netty.handler.codec.ByteToMessageDecoder#fireChannelRead----将解析出来的列表元素循环迭代对后续的处理器,对于理解http的HttpRequest与HttpContent/LastHttpContent至关重要

链接----https://github.com/netty/netty.git

okhttp

流程图 来源 https://xintu.jianshu.com/p/5b886f851c59

以易用性和性能著称,上图的官方描述,支持http2.0、连接池复用、响应缓存、流式调用、支持同步和异步调用等一系列功能,在很多开源框架中,也经常看得到,链接----https://github.com/square/okhttp.git

apache httpclient

apache出品,也是支持阻塞的io模型和非阻塞的nio模型,不过你要是用过okhttp,我估计你不会再用httpclient了,使用上,差距还是很明显。

HttpURLConnection

java原生http协议,apache httpclient就是在其基础上封装而来,对开发者而言,易用性远不及httpclient和okhttp

Feign

feign 支持特性 来源 https://github.com/OpenFeign/feign

当你对http request line和response line了解后,看feign的注解就会很清楚是什么意思了,注解式开发,简化http调用,spring微服务核心组件之一,链接----https://github.com/OpenFeign/feign.git

Forest

国人开源的类似feign的api框架,官方描述如下:

轻量级HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择,链接----https://gitee.com/dromara/forest

当然,这也是我所了解过的http开源框架,可能还有更好用的,如果你知道,不妨在评论区留言,让我也学习下。程序员的学习之路,逆水行舟,不学你就落后了,落后了就没高薪水,就没法买上好的假发了,持续学习,加油吧,伙伴们。

扫描二维码推送至手机访问。

版权声明:本文由信途科技转载于网络,如有侵权联系站长删除。

转载请注明出处https://www.xintukeji.cn/xintu/10372.html

相关文章

开一个推广引流公司(公司如何引流推广)

山东朋友圈广告代理招商,腾讯社交平台广告代理招商。山东朋友圈广告代理招商,腾讯社交平台广告代理招商。山东朋友圈广告代理招商,腾讯社交平台广告代理招商。根据新数据: 目前登记在册个体工商户1.03亿户...

密云区网络推广行业(北京网络优化推广公司)

密云区网络推广行业(北京网络优化推广公司)

网络推广公司 1、网络推广就是以企业产品或服务为核心内容,建立网站,再把这个网站通过各种免费或收费渠道展示给网民的一种推广方式。2、网络营销推广方案的实施,必然会有广告预算,要通过规划控制让广告费用发...

辽宁省引流软件推广(淘宝引流推广软件哪个好)

多年来,外卖平台补贴大战和商家价格战,让习惯了红包、满减的用户忽略了一个常识:外卖本来就应该比堂食贵。现在,依赖平台的商家们只能吞下苦果,在涨价和亏损的边缘小心试探,外卖不再是赚钱的生意了,只是艰难维...

线上网络营销的弊端,线上到线下的网络营销模式

消费者观念的改变,是使人们普遍接受网路营销的重要基础,而目前大多数消费者的观念还没有转变,表现为消费者个性消费的回归不强消费主动性的不够强。和传统的营销模式相比,网络营销的利与弊也日益凸显出来下面YJ...

姑苏店面引流系统怎么推广(如何利用店招进行引流)

当选择困难症发作的时候,很多人总会去点评网站看看有什么种草的,商家如果有差评的话多多少少会降低消费的欲望。然而对差评动辄就以”同行诋毁“为由要求删评,能行得通吗?3月9日,江苏省高级法院公众号发布的一...

中国跳绳推广图片大全(中国跳绳logo)

中国跳绳推广图片大全(中国跳绳logo)

国际跳绳的正确姿势 )踏步。大腿抬平,小腿自然下垂,落地时用前脚掌 过渡到全脚掌,两臂前后自然摆动,身体保持自然。(2)开合跳。跳起分开落地,髋部、脚尖外开,膝关节在同方向弯曲。蹬地还原时,脚跟并拢,...

现在,非常期待与您的又一次邂逅

我们努力让每一次邂逅总能超越期待

  • 效果付费
    效果付费

    先出效果再付费

  • 极速交付
    极速交付

    响应速度快,有效节省客户时间

  • 1对1服务
    1对1服务

    专属客服对接咨询

  • 持续更新
    持续更新

    不断升级维护,更好服务用户