相关疑难解决方法(0)

使用嵌入式Jetty提供静态文件

我正在尝试构建一个带有嵌入式Jetty的简单演示应用程序,该应用程序提供来自"html"目录的静态文件,该目录是当前工作目录的子目录.我们的想法是,包含演示jar和内容的目录可以移动到新位置并仍然有效.

我尝试过以下各种变体,但我一直在使用404.

ServletContextHandler context = 
                       new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");

context.getInitParams().put(
                       "org.eclipse.jetty.servlet.Default.resourceBase", "html");
context.addServlet(new ServletHolder(new DefaultServlet()), "/html");

Server jetty = new Server(8080);
jetty.setHandler(context);

jetty.start();
Run Code Online (Sandbox Code Playgroud)

更新:这是Jetty教程中记录的解决方案.如正确答案所述,它使用的是a ResourceHandler而不是ServletContextHandler:

    Server server = new Server();
    SelectChannelConnector connector = new SelectChannelConnector();
    connector.setPort(8080);
    server.addConnector(connector);

    ResourceHandler resource_handler = new ResourceHandler();
    resource_handler.setDirectoriesListed(true);
    resource_handler.setWelcomeFiles(new String[]{ "index.html" });

    resource_handler.setResourceBase(".");

    HandlerList handlers = new HandlerList();
    handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() });
    server.setHandler(handlers);

    server.start();
    server.join();
Run Code Online (Sandbox Code Playgroud)

java jetty embedded-jetty

53
推荐指数
3
解决办法
6万
查看次数

从嵌入式Jetty中的备用路径提供静态文件

我正在尝试创建一个嵌入式jetty服务器,其中包含一个服务于某些动态数据的自定义servlet,以及将为某些图像提供服务的默认servlet.我有自定义servlet工作,但我无法弄清楚如何添加默认servlet来提供图像文件.

这就是我所拥有的......

private void setUpServer(ServerOptions options){
    s = new Server(options.getPort());
    this.options = options;
    context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    s.setHandler(context);
    context.addServlet(new ServletHolder(new DataServlet()), "/data/*");
    context.addServlet(new ServletHolder(new DefaultServlet()), "/pictures/*");
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何配置DefaultServlet作为文件服务器,仍然有自定义DataServelet仍然工作.

有没有人有任何想法?

java servlets jetty fileserver embedded-jetty

14
推荐指数
1
解决办法
2万
查看次数

在 Jetty Serverlet doGet 方法中显示资源文件夹中的静态 HTML 文件

我有一个 servlet,我想返回一个资源,或者至少是资源中的 html,index.html它位于我的 webapps 文件夹中。

我很新,还没有找到任何东西。这是我的代码,我将不胜感激任何帮助!

public static void main(String[] args){
    Server server = new Server(8080);

    ResourceHandler resource_handler = new ResourceHandler();
    resource_handler.setDirectoriesListed(true);
    resource_handler.setWelcomeFiles(new String[]{"index.html"});
    resource_handler.setResourceBase("./target/classes/webapp");

    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");

    ServletHolder indexHolder = new ServletHolder(new IndexServlet());
    context.addServlet(indexHolder, "/index");

    HandlerList handlers = new HandlerList();
    handlers.setHandlers(new Handler[]{resource_handler, context, new DefaultHandler()});
    server.setHandler(handlers);

    try {
        server.start();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我目前的doGet方法。index.html当前的打印语句是我希望 servlet 返回的文件的字符串值。

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException …
Run Code Online (Sandbox Code Playgroud)

java jetty

5
推荐指数
1
解决办法
5918
查看次数

标签 统计

java ×3

jetty ×3

embedded-jetty ×2

fileserver ×1

servlets ×1