是否可以为路径添加2个处理程序?
我需要html
从文件夹加载内容并session
在访问/
路径时检查值.
如果我放置router.route().handler(StaticHandler.create().setWebRoot("webroot"));
它将从webroot
文件夹中读取内容.
当我使用以下代码时,它将执行hanlder代码.
router.route("/").handler(routingContext -> {
Session session = routingContext.session();
String name = session.get("uname");
// some code
});
Run Code Online (Sandbox Code Playgroud)
但是当我尝试访问此路径时,有没有办法执行两个处理程序?
我试过了
HttpServerResponse response = routingContext.response();
response.sendFile("webroot/index.html");
Run Code Online (Sandbox Code Playgroud)
但它只是读取index.html
文件,它不读取CSS.我找不到一个方法来读取整个目录.
小智 8
你当然可以 :)
这是你的Verticle我注册了两个处理程序
@Override
public void start() throws Exception {
Router router = Router.router(vertx);
router.route().path("/hello").handler(new Handler0());
router.route().path("/hello").handler(new Handler1());
vertx.createHttpServer().requestHandler(router::accept).listen(8080);
}
class Handler0 implements Handler<RoutingContext> {
@Override
public void handle(RoutingContext ctx) {
ctx.put("hi", "your nice");
ctx.next(); // IMPORTANT!!
}
}
class Handler1 implements Handler<RoutingContext> {
@Override
public void handle(RoutingContext ctx) {
String hi = ctx.get("hi");
if (hi.equals("your nice") {
ctx.request().response().end(hi);
} else {
ctx.fail(401);
}
}
}
Run Code Online (Sandbox Code Playgroud)
ctx.next()使用ctx.fail调用下一个处理错误的Handler
希望这可以帮助 :)
归档时间: |
|
查看次数: |
3785 次 |
最近记录: |