2010-04-23 4 views

답변

1

서블릿을 만들고 그 doGet 메서드에서 이진 이미지 콘텐츠 (Content-Type : image/jpeg 또는 gif)를 제공하기 만하면됩니다.

  • 마지막으로 수정
  • 콘텐츠 형식
  • 콘텐츠 길이
  • 그런 다음 이미지 바이너리를 retrun

    • 의 ETag :

      것은 HttpServletResponse를에서 다음 필드를 설정해야합니다 HttpServletResponse 본문으로 HttpServletResponse.getOutputStream을 통해 얻은 스트림에 직접 씁니다.

      이미지 ID를 URL 매개 변수로이 서블릿에 전달할 수 있으므로 동일한 서블릿을 통해 다른 이미지를 제공 할 수 있습니다. 디스크에 이미지를 캐시 할 수도 있지만 서블릿이 있기 때문에 가상 매핑없이 임시 디렉토리를 설정할 수 있습니다.

      편집

      사실 당신은 컨텍스트 경로 이름에 따라 이미지를 컨텍스트 경로를 조사이 서블릿과 서블릿 doGet 방법에 여러 가상 매핑을 생성하고 제공 할 수 있습니다.

    +0

    하나 이상의 파일을 표시하고 싶다면 DB 연결이 가장 좋은 방법이 아닐 수 있습니다. –

    +0

    @quilovnic : DB 연결에 대한 귀하의 우려를 이해하지 못합니다. db 성능이 허용하는 경우 데이터베이스에서 직접 이미지를 제공하십시오. 캐싱의 이점이 있다고 생각되면 Servlet 컨테이너 (디스크의 임시 디렉토리 또는 너무 많이 늘어나지 않는 경우 애플리케이션 메모리)에 캐시하십시오. 디스크에 대한 읽기/쓰기가 자체 I/O 병목 현상을 일으키고 경우에 따라 디스크 I/O가 끝날 때까지 기다리는 데 시간이 많이 걸릴 수도 있음을 명심하십시오. –

    +0

    DB에서 많은 파일을 열어도 DB 성능이 영향을받지 않는다고 생각하십니까? 당신이 말했듯이, 나는 캐시를 만들고 싶습니다. 하지만 내 파일이 큰데 ...? –

    관련 문제