Vertx底层通信框架依赖于Netty,并封装了对Http协议的支持,因此可以非常方便的进行Web开发,且不依赖于任何中间件。
下面简单实现一个HttpServer
1、引入依赖
<dependency> <groupId>io.vertx</groupId> <artifactId>vertx-core</artifactId> <version>3.5.2</version> </dependency>
2、创建核心代码
public class MyHttpServer { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); HttpServer server = vertx.createHttpServer(); server.requestHandler(request -> { HttpServerResponse response = request.response(); //设置响应头 response.putHeader("Content-type","text/html;charset=utf-8"); // 响应数据 response.end("Hello World"); }); // 监听8888 端口 server.listen(8888); } }
3、访问http://localhost:8888/
4、代码改进
上面的代码有个很大的问题,所有的代码都写在Main方法中。Vert.x推荐的写法是为每一个应用创建一个Verticle,也就是Vert.x的模块,然后通过Vertx核心接口,部署Verticle模块。多个Verticle模块之间可以通过EventBus进行相互调用。
下面我们创建一个HttpServer的Verticle模块,不部署到Vertx中,实现步骤如下:
1、创建一个类,集成AbstractVerticle类
2、重写start方法和stop方法,在start方法中处理业务逻辑,stop方法中释放资源。
3、在main方法中部署Verticle模块
4、启动服务,并通过浏览器进行访问。
代码如下:
public class MyHttpServer2 extends AbstractVerticle { public static void main(String[] args) { MyHttpServer2 verticle = new MyHttpServer2(); Vertx vertx = Vertx.vertx(); //部署verticle,这里会调用start方法 vertx.deployVerticle(verticle); } @Override public void start() throws Exception { // 在这里可以通过this.vertx获取到当前的Vertx Vertx vertx = this.vertx; HttpServer server = vertx.createHttpServer(); server.requestHandler(request -> { HttpServerResponse response = request.response(); //设置响应头 response.putHeader("Content-type","text/html;charset=utf-8"); // 响应数据 response.end("Hello World"); }); // 监听8888 端口 server.listen(8889); } @Override public void stop() throws Exception { super.stop(); } }
参考:https://blog.csdn.net/king_kgh/article/details/80804078
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!