불필요한 GET을 피하고 서블릿을 통해 파일을 얻는 방법은 무엇입니까?

Christoph Walesch

내 webapp의 일부 파일은 WAR 파일의 간단한 폴더에 있습니다. 요청은 매우 빨랐습니다. 브라우저가 파일을 캐시하자마자 파일이 변경 될 때까지 파일 내용을 다시 요청하지 않았습니다.

이제 파일을 다른 위치에 배치하고 파일을 전달하는 서블릿을 구현했습니다. 코드는 간단하지만 성능이 떨어집니다. 다음은 최소한의 예입니다.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

    <servlet>
        <servlet-name>File</servlet-name>
        <servlet-class>test.FileServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>File</servlet-name>
        <url-pattern>/file/*</url-pattern>
    </servlet-mapping>
</web-app>

FileServlet

public class FileServlet extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        FileSystem fs = FileSystems.getDefault();
        Path path = fs.getPath("/some/folder/", req.getPathInfo());
        Files.copy(path, resp.getOutputStream());
    }
}

예를 들어 바람둥이와 같은 성능을 얻을 수 있도록 어떻게 개선 할 수 DefaultServlet있습니까?

파샤 701

"마지막 수정"헤더가 도움이 될 수 있습니다. 여기에서 "클라이언트의 캐시"섹션을 참조하십시오.

http://www.onjava.com/pub/a/onjava/excerpt/jebp_3/index2.html

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

불안정한 LAN을 통해 파일을 전송하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

여러 MOK 키를 통합하거나 불필요한 것을 삭제하는 방법은 무엇입니까?

분류에서Dev

React에서 불필요한 다시 렌더링을 피하는 방법은 무엇입니까?

분류에서Dev

패키지 종속성에 의해 설치되는 불필요한 파일을 최소화하는 방법은 무엇입니까?

분류에서Dev

LAN을 통해 파일을 공유하는 방법은 무엇입니까?

분류에서Dev

파일을 통해 텔넷을 설치하는 방법은 무엇입니까?

분류에서Dev

Maven을 통해 Java 파일을 실행하는 방법은 무엇입니까?

분류에서Dev

Javascript를 통해 입력 필드 값을 얻는 방법은 무엇입니까?

분류에서Dev

tcpip를 통해 db 파일을 전송하는 방법은 무엇입니까?

분류에서Dev

ssh를 통해 파일을 추가하는 방법은 무엇입니까?

분류에서Dev

프로젝트 내에서 단일 .cs 파일을 빌드하고 해당 파일에 대한 DLL을 얻는 방법은 무엇입니까?

분류에서Dev

URL 요청을 통해 콘텐츠를 얻는 방법은 무엇입니까?

분류에서Dev

SVG 파일을 통합하는 방법은 무엇입니까?

분류에서Dev

서버 라우팅을 통해받은 PHP에서 파일을 처리하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 요청 다운로드 파일을 고정 해제하는 방법은 무엇입니까?

분류에서Dev

JQ를 사용하여 JSON에서 불필요한 항목을 제거하는 방법은 무엇입니까?

분류에서Dev

페이지에서 불필요한 ng-container 여백을 제거하는 방법은 무엇입니까?

분류에서Dev

Windows 7에서 불필요한 기능과 추가 기능을 제거하는 방법은 무엇입니까?

분류에서Dev

UEFI에서 불필요한 이중 부팅 옵션을 수정하는 방법은 무엇입니까?

분류에서Dev

QLabel이 불필요한 단어 줄 바꿈을 방지하는 방법은 무엇입니까?

분류에서Dev

TYPO3 Tca 파일 업로드 필드를 통해 업로드되는 파일 유형을 제한하는 방법은 무엇입니까?

분류에서Dev

고유 한 파일 이름을 얻기 위해 파일을 생성 날짜와 해시 값으로 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

Composer가 예기치 않은 폴리 필을 설치합니다. 불필요한 경우 설치를 피하는 방법은 무엇입니까?

분류에서Dev

Excel에서 피벗 테이블을 필터링하고 청소하는 방법은 무엇입니까?

분류에서Dev

Java 필터에서 서블릿 요청 본문을 변경하는 방법은 무엇입니까?

분류에서Dev

최종 빌드를 위해 composer에서 불필요한 모든 것을 제외하는 방법은 무엇입니까?

분류에서Dev

Python에서 URL을 통해 Azure Blob Storage 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

Cygwin을 통해 Windows 7에서 .sh 파일을 실행하는 방법은 무엇입니까?

분류에서Dev

RDP를 통해 큰 파일을 더 잘 복사하고 붙여 넣는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    불안정한 LAN을 통해 파일을 전송하는 가장 좋은 방법은 무엇입니까?

  2. 2

    여러 MOK 키를 통합하거나 불필요한 것을 삭제하는 방법은 무엇입니까?

  3. 3

    React에서 불필요한 다시 렌더링을 피하는 방법은 무엇입니까?

  4. 4

    패키지 종속성에 의해 설치되는 불필요한 파일을 최소화하는 방법은 무엇입니까?

  5. 5

    LAN을 통해 파일을 공유하는 방법은 무엇입니까?

  6. 6

    파일을 통해 텔넷을 설치하는 방법은 무엇입니까?

  7. 7

    Maven을 통해 Java 파일을 실행하는 방법은 무엇입니까?

  8. 8

    Javascript를 통해 입력 필드 값을 얻는 방법은 무엇입니까?

  9. 9

    tcpip를 통해 db 파일을 전송하는 방법은 무엇입니까?

  10. 10

    ssh를 통해 파일을 추가하는 방법은 무엇입니까?

  11. 11

    프로젝트 내에서 단일 .cs 파일을 빌드하고 해당 파일에 대한 DLL을 얻는 방법은 무엇입니까?

  12. 12

    URL 요청을 통해 콘텐츠를 얻는 방법은 무엇입니까?

  13. 13

    SVG 파일을 통합하는 방법은 무엇입니까?

  14. 14

    서버 라우팅을 통해받은 PHP에서 파일을 처리하는 방법은 무엇입니까?

  15. 15

    파이썬에서 요청 다운로드 파일을 고정 해제하는 방법은 무엇입니까?

  16. 16

    JQ를 사용하여 JSON에서 불필요한 항목을 제거하는 방법은 무엇입니까?

  17. 17

    페이지에서 불필요한 ng-container 여백을 제거하는 방법은 무엇입니까?

  18. 18

    Windows 7에서 불필요한 기능과 추가 기능을 제거하는 방법은 무엇입니까?

  19. 19

    UEFI에서 불필요한 이중 부팅 옵션을 수정하는 방법은 무엇입니까?

  20. 20

    QLabel이 불필요한 단어 줄 바꿈을 방지하는 방법은 무엇입니까?

  21. 21

    TYPO3 Tca 파일 업로드 필드를 통해 업로드되는 파일 유형을 제한하는 방법은 무엇입니까?

  22. 22

    고유 한 파일 이름을 얻기 위해 파일을 생성 날짜와 해시 값으로 이름을 바꾸는 방법은 무엇입니까?

  23. 23

    Composer가 예기치 않은 폴리 필을 설치합니다. 불필요한 경우 설치를 피하는 방법은 무엇입니까?

  24. 24

    Excel에서 피벗 테이블을 필터링하고 청소하는 방법은 무엇입니까?

  25. 25

    Java 필터에서 서블릿 요청 본문을 변경하는 방법은 무엇입니까?

  26. 26

    최종 빌드를 위해 composer에서 불필요한 모든 것을 제외하는 방법은 무엇입니까?

  27. 27

    Python에서 URL을 통해 Azure Blob Storage 파일을 다운로드하는 방법은 무엇입니까?

  28. 28

    Cygwin을 통해 Windows 7에서 .sh 파일을 실행하는 방법은 무엇입니까?

  29. 29

    RDP를 통해 큰 파일을 더 잘 복사하고 붙여 넣는 방법은 무엇입니까?

뜨겁다태그

보관