Dropwizard提供静态html



我目前正在使用dropwizard和angularjs构建一个应用程序。我已经像这样设置了我的AssetsBundle:

bootstrap.addBundle(new AssetsBundle("/assets", "/", "index.html"));

我目前的问题是,我想要多个页面来服务我的index.html页面(主angularjs应用程序页面)。我是否可以定义一组url来提供index。html文件?如果我创建更多的资源包,这将工作,但这不是应该这样做:

    bootstrap.addBundle(new AssetsBundle("/assets", "/login", "index.html", "login"));
    bootstrap.addBundle(new AssetsBundle("/assets", "/my-leagues", "index.html", "my-leagues"));
    bootstrap.addBundle(new AssetsBundle("/assets", "/registering-leagues", "index.html", "registering-leagues"));
    bootstrap.addBundle(new AssetsBundle("/assets", "/league-register/*", "index.html", "league-register"));
    bootstrap.addBundle(new AssetsBundle("/assets", "/", "index.html", "home"));

我目前的目标是有index.html页面服务于/login,/My -leagues,/registered -leagues,/league-register/*(其中*可以是任何数字),和/。这个粗糙的解决方案不适用于"/league-register/*"资产,因为该资产包不支持通配符。

是否有一种简单的方法来指定某些端点返回我的index.html文件?

谢谢!

我弄清楚了如何做到这一点,但仍然不确定这是否是最好的解决方案。我创建了一个只服务于index.html文件的servlet。在我的run函数中,我添加了:

    environment.getApplicationContext().addServlet(new ServletHolder(new BaseServlet()), "/login");
    environment.getApplicationContext().addServlet(new ServletHolder(new BaseServlet()), "/my-leagues");
    environment.getApplicationContext().addServlet(new ServletHolder(new BaseServlet()), "/registering-leagues");
    environment.getApplicationContext().addServlet(new ServletHolder(new BaseServlet()), "/league-register/*");

BaseServlet是这样的:

public class BaseServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException, ServletException {
        RequestDispatcher view = req.getRequestDispatcher("/index.html");
        view.forward(req, resp);
    }
}

最新更新