tomcat에 많은 Excel 문서가있는 폴더가 있는데 브라우저 (예 : http; // localhost : 8080/myfolder)에서 해당 폴더의 URL을 가져 왔을 때 해당 파일을 사용할 수 있기를 원합니다.Tomcat의 폴더에있는 모든 파일을 나열하려면 어떻게합니까?
순간에 내가 폴더에 액세스하려고하면 404 오류가 발생합니다. 에 의해 그 폴더에있는 파일에 액세스하려고하면, 그것은 작동합니다.
tomcat에 많은 Excel 문서가있는 폴더가 있는데 브라우저 (예 : http; // localhost : 8080/myfolder)에서 해당 폴더의 URL을 가져 왔을 때 해당 파일을 사용할 수 있기를 원합니다.Tomcat의 폴더에있는 모든 파일을 나열하려면 어떻게합니까?
순간에 내가 폴더에 액세스하려고하면 404 오류가 발생합니다. 에 의해 그 폴더에있는 파일에 액세스하려고하면, 그것은 작동합니다.
톰캣의 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와 파일을 수집해야합니다. 그것을 깔끔한 방식으로 제시하십시오.
원래 게시물에 web-inf 파일을 추가했습니다. 그 매개 변수들이 어디로 가야하는지에 관해 당신이 나에게 말할 수 있습니까? 덕분에 – code511788465541441
@ Solver : 다른 답변은 이식 가능하지 않습니다. 즉, 다른 make 및 다른 버전의 서버에 배포 할 때 webapp가 중단됩니다. 표준 서블릿 API의 일부가 아닙니다. – BalusC
이 작업은 웹 응용 프로그램 단위로 수행 할 수 있습니다. Tomcat의 사이트 전체'conf/web.xml '대신에 애플리케이션의'WEB-INF/web.xml'을 수정하면됩니다. 'DefaultServlet' 선언, 셋업, 매핑을 자신의'WEB-INF/web.xml'에 복사해야합니다. 그렇게하면 모든 웹 애플리케이션 대신 단일 웹 애플리케이션에 대한 디렉토리 목록을 활성화 할 수 있습니다 Tomcat 인스턴스에 배포됩니다. –
다음은이를 수행하는 방법을 설명하는 몇 가지 문서입니다.
http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html
기본적인 아이디어는 바람둥이의 주요 web.xml
에 true
에 listings
매개 변수의 값을 변경하는 것입니다.
<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
완전히 사용자 정의 방식의 시작일 수도있는 간단한 servlet입니다.
주어진 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 값을 변경하면 문제가 해결되지 않으면
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>
다음을 추가하는 데 필요한 web.xml 파일에 추가해야 할 것입니다 기반의 파일 브라우저를 사용한다면, this answer에 언급 된 커스텀 webapp를 사용할 수 있습니다.
사용중인 코드를 올리십시오. 또한 여기서 사용자 입력을하지 않거나/etc/shadow를 표시 할 수 있습니다. – Woot4Moo
htaccess 권한 문제처럼 보입니다. – Snicolas
@ Woot4Moo 코드가 없습니다. 그 안에 파일이 들어있는 폴더 일뿐입니다. 그 폴더의 URL로 이동하여 아파치 서버처럼 모든 파일을 표시 할 수 있기를 원합니다. – code511788465541441