2010-11-22 4 views
1

Java App에서 Jetty 6을 내장 웹 서버로 사용하고 있습니다. 지금까지는 정적 컨텐츠를 제공 할 이유가 없었지만 정적 컨텐츠를 제공 할뿐만 아니라 디렉토리 목록을 보여주고 싶습니다.Jetty 6 : 디렉토리 목록이있는 정적 컨텐츠

나는 이것을하기 위해 ResourceHandler 클래스를 사용해 보았지만, 어떤 점에서는 mortbay가 ResourceHandler가 디렉토리를 나열하는 기능을 제거했다.

.jsp 또는 servlet 기능을 추가하지 않고 web.xml 구성을 사용하지 않고이 작업을 수행하고 싶습니다. 요약하면 프로그래밍 방식으로이 작업을 수행하려고합니다.

저의 삶에 대한 온라인 예제는 찾을 수 없습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있을까요?

감사합니다.

답변

3

좋아요, 제티가 원하는대로 할 수있는 방법을 알아 냈습니다. 일부 커스텀 서블릿을 처리하는 것 외에도 일부 정적 컨텐츠를 호스트하는 것이 었습니다. 표면적으로 DefaultServlet을 만들고 그에 따라 resourceBase 및 pathSpec을 설정하여/www/*에 일부 디렉토리를 호스트 할 수있게했습니다. 그러나 이것은 결코 효과가 없었습니다. 사실 pathSpec이 실제로 작동하는지 또는 정의되어야하는지에 대한 설명을 찾을 수 없습니다.

따라서 ServletHandler와 Context를 추가로 만들어야하고 원래 컨텍스트와 새 컨텍스트를 서버에 호스팅하는 정적 컨텐트에 추가해야했습니다.

내가 그렇게 같은 것을했다 :

 

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); 


 

이이 작업을 수행 할 수있는 좋은 방법되지 않을 수도 있습니다,하지만 그것은 나를 프로그램 내 부두 기반 응용 프로그램에 호스팅 정적 콘텐츠를 추가 할 수 있도록했다.

0

웹 앱이 있고 부두가 돌고있는 경우 웹 앱 루트 디렉토리 (예 : WEB-INF가있는 디렉토리)에서 정적 콘텐츠를 제공하는 것이 기본값이라고 생각합니다. 그래서 예를 들어 다음과 같은 디렉토리가 있습니다

mywebapp 
- WEB-INF 
- static 
    - site_img.gif 

을 그리고 당신은 지금 내가 틀렸다면 http://mysite.com/static/site_img.gif

나를 수정 될 수 있으며, 나는이 대답을 제거하는 것, 이것은 단지의 맨 위에 떨어져 내 머리.

+0

정보를 제공해 주셔서 감사합니다.하지만 그게 내가 달성하려고하는 것은 아닙니다. 나는 WEB-INF 디렉토리가 없다. (나는 추측 할 수있는 웹 애플리케이션을 제공하지 않는다.) 프로그래밍 방식으로 DefaultServlet을 설정하고 매개 변수를 설정하려고하는데 작동하지 않는 것 같다. – Tom

관련 문제