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服务。