2011-08-15 4 views
28

tomcat에 많은 Excel 문서가있는 폴더가 있는데 브라우저 (예 : http; // localhost : 8080/myfolder)에서 해당 폴더의 URL을 가져 왔을 때 해당 파일을 사용할 수 있기를 원합니다.Tomcat의 폴더에있는 모든 파일을 나열하려면 어떻게합니까?

순간에 내가 폴더에 액세스하려고하면 404 오류가 발생합니다. 에 의해 그 폴더에있는 파일에 액세스하려고하면, 그것은 작동합니다.

+0

사용중인 코드를 올리십시오. 또한 여기서 사용자 입력을하지 않거나/etc/shadow를 표시 할 수 있습니다. – Woot4Moo

+0

htaccess 권한 문제처럼 보입니다. – Snicolas

+1

@ Woot4Moo 코드가 없습니다. 그 안에 파일이 들어있는 폴더 일뿐입니다. 그 폴더의 URL로 이동하여 아파치 서버처럼 모든 파일을 표시 할 수 있기를 원합니다. – code511788465541441

답변

48

톰캣의 DefaultServlet 디렉토리 목록을 표시하지 않도록 구성 기본입니다. 당신은 명심 Tomcat의 자신의 /conf/web.xml 파일 (Tomcat 설치 폴더의 모양을) 열고 DefaultServlet<servlet> 항목을 검색하고

<init-param> 
    <param-name>listings</param-name> 
    <param-value>true</param-value> 
</init-param> 

<init-param> 
    <param-name>listings</param-name> 
    <param-value>false</param-value> 
</init-param> 

로부터 listings 초기화 매개 변수를 변경해야 이것은 모두 webapp의 폴더에 영향을 미칩니다. 개별 폴더에만이 기능을 사용하려면 서블릿 측의 java.io.File API를 사용하여 작업을 수행하는 코드를 직접 작성하여 JSP 측에서 HTML/CSS와 파일을 수집해야합니다. 그것을 깔끔한 방식으로 제시하십시오.

+0

원래 게시물에 web-inf 파일을 추가했습니다. 그 매개 변수들이 어디로 가야하는지에 관해 당신이 나에게 말할 수 있습니까? 덕분에 – code511788465541441

+0

@ Solver : 다른 답변은 이식 가능하지 않습니다. 즉, 다른 make 및 다른 버전의 서버에 배포 할 때 webapp가 중단됩니다. 표준 서블릿 API의 일부가 아닙니다. – BalusC

+1

이 작업은 웹 응용 프로그램 단위로 수행 할 수 있습니다. Tomcat의 사이트 전체'conf/web.xml '대신에 애플리케이션의'WEB-INF/web.xml'을 수정하면됩니다. 'DefaultServlet' 선언, 셋업, 매핑을 자신의'WEB-INF/web.xml'에 복사해야합니다. 그렇게하면 모든 웹 애플리케이션 대신 단일 웹 애플리케이션에 대한 디렉토리 목록을 활성화 할 수 있습니다 Tomcat 인스턴스에 배포됩니다. –

4

다음은이를 수행하는 방법을 설명하는 몇 가지 문서입니다.

http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html

기본적인 아이디어는 바람둥이의 주요 web.xmltruelistings 매개 변수의 값을 변경하는 것입니다.

<servlet> 
    <servlet-name>default</servlet-name> 
    <servlet-class> 
     org.apache.catalina.servlets.DefaultServlet 
    </servlet-class> 
    <init-param> 
     <param-name>debug</param-name> 
     <param-value>0</param-value> 
    </init-param> 
    <init-param> 
     <param-name>listings</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

하지만 위의 내용은 모든 디렉토리를 노출합니다. 미세 제어를 위해, 단계는 여기에서 설명 따르

http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html#dir

+0

@downvoter : 관심있는 댓글? – adarshr

+0

나는 downvote를하지 않았지만, 초기 대답은 어떻게 디폴트 디렉토리리스트 레이아웃을 커스터마이징하는지에 대해서만 말한 것이지, 그것을 사용 가능하게하는 방법이 아니다. – BalusC

2

완전히 사용자 정의 방식의 시작일 수도있는 간단한 servlet입니다.

18

주어진 URL 패턴에서 시작하여 활성화 할 수도 있습니다. 그냥 아래 예제 디렉토리에서 응용 프로그램의 web.xml 당신에게

<servlet> 
    <!-- List files in /ws-definitions --> 
    <servlet-name>ListWsDefinitions</servlet-name> 
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> 
    <init-param> 
     <param-name>debug</param-name> 
     <param-value>0</param-value> 
    </init-param> 
    <init-param> 
     <param-name>listings</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>100</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>ListWsDefinitions</servlet-name> 
    <url-pattern>/ws-definitions/*</url-pattern> 
</servlet-mapping> 

을 서블릿과 서블릿 매핑을 추가 "/ WS-정의 /"들을 수있을 것입니다.

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

편집은 다음과 같습니다 :

<welcome-file-list> 
    <welcome-file></welcome-file> 
    <welcome-file></welcome-file> 
    <welcome-file></welcome-file> 
</welcome-file-list> 

을 리스팅 PARAM 값을 변경하면 문제가 해결되지 않으면

+0

바람둥이를 사용하여 파일 목록에 액세스하려고 시도했지만 제대로 작동했습니다. 고맙습니다! – Ricardo

+4

이것은 받아 들여진 대답이어야합니다! – jutky

+0

아니, 다른 웹 서버에 배포 할 때 이러한 웹 응용 프로그램이 충돌합니다. 즉, 이러한 웹 애플리케이션은 이식 가능하지 않습니다. Webapp end 대신 서버 측에서 구성하십시오. 또는 자신의 재사용 가능한 디렉토리 목록 서블릿을 homegrow합니다. – BalusC

1

기본값은 다음이었다 환영 파일 목록을 편집하려고 제거시 완벽하게 작동합니다.

+0

고마워, 그것 없이는 나를 위해 작동하지 않았다. – masterxilo

3

Tomcat 6을 사용하는 경우 (Servlet 2.5 사양을 구현 한) 또는 최신 버전 인 경우 CATALINA_HOME/conf/디렉토리에서 web.xml을 변경하지 않아도 디렉토리 목록을 표시 할 수 있습니다.대신 WEB-INF에서 웹 응용 프로그램의 자체 web.xml 파일을 변경해야합니다.

Adarshr가 언급 한 바와 같이,이 방금 웹을 구현하려는 경우

<servlet> 
    <servlet—name>default</servlet—name> 
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> 
    <init-param> 
    <param-name>debug</param-name> 
    <param-value>0</param-value> 
    </init-param> 
    <init-param> 
    <param-name>listings</param-name> 
    <param-value>true</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 

당신은 또한

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
0

다음을 추가하는 데 필요한 web.xml 파일에 추가해야 할 것입니다 기반의 파일 브라우저를 사용한다면, this answer에 언급 된 커스텀 webapp를 사용할 수 있습니다.

관련 문제