用Netty编写http webserver

这篇博客介绍了如何使用Netty框架构建一个简单的HTTP Web服务器。从Netty的介绍开始,逐步讲解创建Netty工程、导入依赖、编写Server、ServerInitializer以及TestHttpServerHandler的详细步骤。最终实现的功能是在接收到请求时返回'Hello, World'。" 82890167,8040670,非线性方程与方程组的数值解法,"['数值计算', '数学建模', '编程算法']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Netty:简易Http Webserver编写

Netty 介绍

Netty 是一个基于NIO的客户、服务器端编程框架。使用Netty可以使我们快速简单的开发网络应用。

Netty有很多功能,我们可以用Netty作为RPC框架,实现远程过程的调用;也可以编写长连接的服务器,使用websocket等功能;我们还可以把Netty当做http服务器(类似Tomcat),对http请求进行接收和响应。用Netty编写服务器时,采取的编程模型和获取请求模型不遵循serlvet规范,Netty有自己一套处理方式。

下面我们进行一段简易HttpServer的编写(作者使用Intellij IDEA进行Netty项目的开发)。

创建Netty工程

打开IDEA,创建一个gradle项目。

Netty工程创建
点击下一步,输入GroupID(公司域名反转)和ArtifactID(模块名)

设置groupId,ArtificatId
然后一直点下一步直到FInished。

至此我们便创建了一个工程,工程目录如下图所示:

工程目录
我们在src/main/java文件夹中编写应用代码,src/test中是我们编写测试文件用的,本文忽略测试文件。

导入netty jar包

导入netty jar包的过程很简单,我们可以在build.gradle文件的dependencies下加入下面一行代码:

compile group: 'io.netty', name: 'netty-all', version: '4.1.36.Final'

如下图所示
导入depencencies
最新引入netty的代码可以在maven repository中通过搜索netty all关键词找到。

然后我们就可以进行HttpServer的编写了。

Server编写

右击src/main/java文件夹,new一个新的package,如下图所示。

new package
然后在这个package中创建一个class名为TestServer
new TestServer

在TestServer class中创建main函数,在main函数里面我们创建两个NioEventLoopGroup,分别为bossGroup,workerGroup。

        EventLoopGroup bossGroup = new NioEventLoopGroup();
        EventLoopGroup workerGroup = new NioEventLoopGroup();

bossGroup接受连接请求并把请求交给workerGroup处理;workerGroup获取请求参数,进行业务处理,然后把结果返回客户端。

然后创建ServerBootstrap 类的实例,ServerBootstrap 是简化服务端启动的类。该类通过反射的形式创建NioServerSocketChannel。

channel相当于链接,同用户端进行网络连接、关闭和读写。

最后调用ChildHandler方法,里面传入一个对请求进行处理的类,在本例代码中我们传入我们编写的TestServerInitializer实例(请看下一节)。

ServerBootstrap serverBootstrap = new ServerBootstrap();
            serverBootstrap.group(bossGroup,workerGroup).channel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值