我目前正在使用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);
}
}