如何使用嵌入式码头服务index.html?

德鲁

我在下面创建了嵌入式码头服务器。它成功地从[主机]:[端口]:/ api /托管了我的REST API。

现在,除了API之外,我还有一个要提供的Angular应用程序,如何更新代码,以便服务器提供该应用程序的index.html文件?在尝试了几种不同的方法之后,我发现缺乏理解,无法适应所看到的示例。任何建议或意见将不胜感激。谢谢!

公共类JettyServer {

  private static final String API_PREFIX = "/api/*";
  private static final String RESOURCE_PACKAGES_TO_SCAN = "org.brewtraption.rest";
  Logger logger = LoggerFactory.getLogger(JettyServer.class);
  private JettyServerConfig config = null;

  public JettyServer(final JettyServerConfig config) {
    this.config = config;
  }

  public void start() {
    InetSocketAddress socket = new InetSocketAddress(config.getHost(), config.getPort());
    Server server = new Server(socket);
    ServletHolder servletHolder = configureAPIResources();

    ServletContextHandler context = configureServletContextHandler(server, servletHolder);
    initaliseWebSocketContainer(context);

    startBrewtraptionServer(server);
  }

  private void startBrewtraptionServer(Server server) {
    try {
      server.start();
      server.join();
    } catch (Exception e) {
      String message = "Unable to start Brewtraption Server. %s %s";
      logger.error(String.format(message, e.getClass().getName(), e.getMessage()));
    }
  }

  private void initaliseWebSocketContainer(ServletContextHandler context) {
    try {
      ServerContainer container = WebSocketServerContainerInitializer.configureContext(context);
      container.addEndpoint(EventSocket.class);
    } catch (ServletException | DeploymentException e) {
      String message = "Unable to create ServerContainer. %s %s";
      logger.error(String.format(message, e.getClass().getName(), e.getMessage()));
    }
  }

  private ServletContextHandler configureServletContextHandler(Server server, ServletHolder servletHolder) {
    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    context.addServlet(servletHolder, API_PREFIX);

    FilterHolder filterHolder = new FilterHolder(CrossOriginFilter.class);
    filterHolder.setInitParameter("allowedOrigins", "*");
    filterHolder.setInitParameter("allowedMethods", "GET, POST, PUT");
    context.addFilter(filterHolder, "/*", null);

    server.setHandler(context);
    return context;
  }

  private ServletHolder configureAPIResources() {
    ResourceConfig resourceConfig = new ResourceConfig();
    resourceConfig = resourceConfig.packages(RESOURCE_PACKAGES_TO_SCAN)
      .register(JacksonFeature.class);
    ServletContainer servletContainer = new ServletContainer(resourceConfig);
    return new ServletHolder(servletContainer);
  }
}
乔基姆·埃德菲特(Joakim Erdfelt)

你需要两件事。

  1. 一个DefaultServlet
  2. 已配置的欢迎文件。
    context.setWelcomeFiles(new String[] { "index.html", "index.htm", "index.jsp" });

    // Lastly, the default servlet for root content (always needed, to satisfy servlet spec)
    // It is important that this is last.
    ServletHolder holderPwd = new ServletHolder("default", DefaultServlet.class);
    holderPwd.setInitParameter("resourceBase",pwdPath);
    holderPwd.setInitParameter("dirAllowed","true");
    context.addServlet(holderPwd,"/");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

嵌入式码头:资源文件夹中的服务器html文件

使用嵌入式码头,如何将ServerConnector链接到服务器?

使用HTMl5,如何对嵌入式YouTube视频进行居中和居中?

如何使用HTML中的嵌入式Java应用程序进行本地文件系统访问

使用嵌入式Ruby迭代器时,如何有交替的HTML表行类?

使用javascript用嵌入式PHP编辑html

如何正常关闭嵌入式码头

无法从嵌入式HTML获取表格

嵌入式html中的链接

CSS样式HTML嵌入式代码

如何使用htmlcomponent导出带有嵌入式图像(base64,数据uri)的HTML文本?

HTML5嵌入式视频会忽略Z-index

如何配置嵌入式码头服务器记录所有请求?

嵌入式码头服务器发生爆炸

如何在不运行本地Web服务器的情况下将HTML发送到嵌入式WebView?

嵌入式码头 - 503

如何将HTML字符串加载到嵌入式WebBrowser控件?

如何在嵌入式HTML链接中添加React函数的输出

如何从Asp.Net核心控制器返回嵌入式静态html文件?

PHPStorm配置:如何删除嵌入式html上的背景色?

如何在js中读取嵌入式html字符串?

如何将嵌入式链接添加到 html 5 视频

如果与嵌入式HTML相比使用指令,会产生很多开销吗?

使用python脚本发送带有嵌入式图像的html电子邮件

使用Jasper Report导出为带有嵌入式图像的单个HTML

使用JavaMail发送带有嵌入式图像的HTML电子邮件-图像加载缓慢?

使用Javascript,HTML5,AngularJS从浏览器打印嵌入式PDF

使用MVC渲染带有嵌入式Razor变量的动态HTML

JODConverter&LibreOffice:使用嵌入式图像将文档转换为html