Java Jetty 6:带有目录列表的静态内容

Java Jetty 6:带有目录列表的静态内容,java,servlets,jetty,embedded-jetty,Java,Servlets,Jetty,Embedded Jetty,我在Java应用程序中使用Jetty 6作为嵌入式web服务器。到目前为止,我还没有理由提供静态内容,但现在我不仅要提供静态内容,还要显示目录列表 我已经尝试使用ResourceHandler类来实现这一点,但在某个时候,mortbay删除了ResourceHandler执行目录列表的功能 我不想添加.jsp或servlet功能,也不想配置web.xml。简言之,我正试图通过编程实现这一点 就我个人而言,我在网上找不到任何这样的例子。有人能给我指出正确的方向吗 多谢 如果您有一个webapp,并

我在Java应用程序中使用Jetty 6作为嵌入式web服务器。到目前为止,我还没有理由提供静态内容,但现在我不仅要提供静态内容,还要显示目录列表

我已经尝试使用ResourceHandler类来实现这一点,但在某个时候,mortbay删除了ResourceHandler执行目录列表的功能

我不想添加.jsp或servlet功能,也不想配置web.xml。简言之,我正试图通过编程实现这一点

就我个人而言,我在网上找不到任何这样的例子。有人能给我指出正确的方向吗


多谢

如果您有一个webapp,并且只是在运行jetty,我认为默认情况是从webapp根目录(例如,WEB-INF所在的同一目录)提供任何静态内容。例如,您可能有以下目录:

mywebapp
 - WEB-INF
 - static
     - site_img.gif
你现在可以发球了


如果我错了,请纠正我,我会删除这个答案,这只是我的想法。

好的,我找到了让Jetty做我想做的事情的方法,这再次是除了处理一些定制servlet之外,还要托管一些静态内容

表面上看,这样做的方法是创建一个DefaultServlet,并相应地设置resourceBase和pathSpec,以允许我在/www/*上托管一些目录。然而,这从未奏效。事实上,我找不到任何关于PathSpec如何实际工作或应该如何定义的解释

因此,我必须创建一个额外的ServletHandler和上下文,并将我的原始上下文和静态内容托管的新上下文添加到服务器

我是这样做的:


Server srv = new Server( port );

//  create context and handler for my servlets
Context ctx = new Context();
ServletHandler sh = new ServletHandler();

//  ... adding servlets here ...

//  create context and handler for static content
ServletHandler sh2 = new ServletHandler();
ServletHolder holder = new ServletHolder( new DefaultServlet() );
holder.setInitParameter("resourceBase", staticResourceBase);
sh2.addServletWithMapping( holder, "/*" );
staticContext.setContextPath(staticPathSpec);
staticContext.setServletHandler(sh2);

//  add both contexts to server
ContextHandlerCollection contexts = new ContextHandlerCollection();
contexts.setHandlers(new Handler[] { staticContext, ctx });
srv.setHandler(contexts);



这可能不是首选的方法,但它确实允许我以编程方式将静态内容宿主添加到基于Jetty的应用程序中。

谢谢您提供的信息,但这并不是我想要实现的目标。我没有WEB-INF目录(因为我想我不是在为WEB应用提供服务吧?),我试图通过编程方式设置DefaultServlet并在代码中设置参数,但它似乎不起作用。