java之Vertx.web开发

1、 创建一个基本的web服务并监听8080端口。

 //创建核心vertx
        Vertx vertx = Vertx.vertx();

        //创建http的服务器
        HttpServer httpServer = vertx.createHttpServer();


        httpServer.requestHandler(request->{
            request.response().end("helloworld");
        });

        //监听端口
        httpServer.listen(8080);

启动成功后,访问路由器:http://localhost:8080/

效果图:
在这里插入图片描述

2、动态路由,不同的访问给出不同的响应。

public class VertxDynamicResponse {
    public static void main(String[] args) {
        //创建vertx
        Vertx vertx = Vertx.vertx();
        //创建http的服务器
        HttpServer httpServer = vertx.createHttpServer();


        //创建web路由对象
        Router router = Router.router(vertx);


        //当访前端访问,http://8080/aaa时就会触发这个路由
        router.get("/aaa").handler(routerContext->{
            //获取request请求对象,前段传递的参数可以使用request.getParam("变量名")获得
            HttpServerRequest request = routerContext.request();

            //获取response对象
            HttpServerResponse response = routerContext.response();
            //设置响应编码
            response.putHeader("content-type","text/plain; charset=UTF-8");
            //给前段的响应内容
            response.end("adafa");
        });

        router.get("/bbb").handler(routerContext->{
            //获取request请求对象,前段传递的参数可以使用request.getParam("变量名")获得
            HttpServerRequest request = routerContext.request();

            //获取response对象
            HttpServerResponse response = routerContext.response();
            //设置响应编码
            response.putHeader("content-type","text/plain; charset=UTF-8");
            //给前段的响应内容
            response.end("给前段的响应信息");
        });


        //发送get请求,链接可以填通配符,例如:/aaa/*
        //router.get();


        //blockingHandler()一般用来处理异步请求,而handler一般是同步请求
//        router.route("/cccc").blockingHandler(routingContext -> {
//
//        });


        //写法1
        //给请求头添加路由策略
        /*httpServer.requestHandler(new Handler<HttpServerRequest>() {
            @Override
            public void handle(HttpServerRequest httpServerRequest) {
                router.accept(httpServerRequest);
            }
        });  */


        //写法2
        //httpServer.requestHandler(request->router.accept(request));

        //写法3
        httpServer.requestHandler(router::accept);

        //监听8080并绑定一个服务监听回调
        httpServer.listen(8080,httpServerAsyncResult -> {
            //如果启动成功
            if(httpServerAsyncResult.succeeded()){
                System.out.println("启动成功");
            //如果启动失败
            }else if(httpServerAsyncResult.failed()){
                System.out.println("启动失败");
            }
        });
    }
}

访问:localhost:8080/aaa
效果图:
在这里插入图片描述

访问:localhost:8080/bbb
效果图:
在这里插入图片描述

3、将请求转发到其他地址

public class TestVertxResponse {
    public static void main(String[] args) {
        //创建vertx核心对象
        Vertx vertx = Vertx.vertx();

        //创建http的web服务器
        HttpServer httpServer = vertx.createHttpServer();

        //创建路由对象
        Router router = Router.router(vertx);

        //处理请求
        router.route("/aa").handler(routingContext -> {
            //获取前端传递过来的参数
            HttpServerRequest request = routingContext.request();

            //获取要查询的内容
            String contnet=request.getParam("content");
            String uri=request.uri();
            System.out.println(uri);
            //获取响应对象
            HttpServerResponse response2 = request.response();


            CloseableHttpResponse response=null;
            CloseableHttpClient client = HttpClients.createDefault();
            HttpGet httpGet=new HttpGet("http://www.baidu.com");

            try {
                response=client.execute(httpGet);

                if (response.getStatusLine().getStatusCode()==200) {
                    response2.end(EntityUtils.toString(response.getEntity(),"UTF-8"));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    client.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        });


        //将http的web服务器和router路由策略进行绑定
        httpServer.requestHandler(router::accept);

        //监听8080端口
        httpServer.listen(8080,req->{
            if (req.succeeded())
                System.out.println("server is listening 8080");
            else if (req.failed())
                System.out.println("server listener is failed");
        });
    }

}

访问:http://localhost:8080/aa在这里插入图片描述

vertx.deployVerticle():该api也可以启动一个web服务。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值