2009-08-04 3 views
4

DB에 이미지 경로가 저장되어있는 MVC 애플리케이션 (여기서는 Spring MVC 사용)과 관련하여. 보기에 이들을 어떻게 표시 할 수 있습니까?MVC 데이터베이스 이미지 디스플레이 스프링

컨트롤러 작업을로드 한 다음보기로 전달합니까? 그렇다면 JSP를 사용하여 Spring MVC에서 어떻게 처리 할 수 ​​있을까요?

감사

답변

3

뷰에 모델의 일부로 전달하는 컨트롤러의 작업이 될 수도 있지만, 나는이 영상을 획득 처리하는 서비스 계층의 일이다라고 생각한다.

업데이트 : Juregen Hoeller는 주석이 달린 제어기 here을 사용하여이를 수행하는 방법을 보여줍니다.

+0

덕분에 감사합니다. 그러나 이것을 허용하는 메커니즘은 무엇입니까? (당신이 짐작 했겠지만, 저는 JSP와 MVC를 처음 접했습니다.) 서비스 레이어가 이미지를 버퍼에로드하고 이것이 뷰로 전송됩니까? 또는 뷰가 픽업 할 수 있도록 임시 위치에 이미지가 저장되어 있습니까? – Lehane

+0

URL을 데이터베이스에 저장하고 이미지 자체를 파일 시스템에 저장하는 한 가지 방법이 있습니다. 또는 이미지를 BLOB으로 데이터베이스에 저장할 수 있습니다. 서비스는 Image 객체를 반환 할 것이고 컨트롤러는 뷰에 대해 적절히 직렬화 할 것입니다. – duffymo

2

실제로 실제 이미지를 얻는 방법과 이미지를 사용하는 방법에 따라 달라집니다.

사진 공유 웹 사이트를 구축하는 경우 (예 : 이미지가 일급 시민권 인 경우) 나는 duffymo의 답변에 완전히 동의합니다. 서비스 레이어로로드해야하며 모델의 일부 여야합니다.

문제의 이미지가 본질적으로 순전히 프레젠테이션이며 웹 앱에서 공개 이미지로 사용할 수있는 경우 (예 : 일부 프로세스의 상태를 빨간색/노란색/초록색으로 표시 할 수 있음) 보기에서 직접 렌더링 할 수 있습니다. 물론이 시나리오에서는 데이터베이스에 실제 이미지 경로를 유지하는 것이 이상합니다. 대신 이미지 경로가 리소스 번들의 어딘가에 저장 될 것이라고 생각합니다. 당신은 몇 가지 "기본"를 기준으로이 아마도 이미지 경로를 후자의 방식을 사용

폴더 및 전체 이미지 경로는 ${prefix}/${base}/${imagePath}과 같이 될 것이다 :

  • prefix, 배포 구성에 따라 명시 적으로 될 수있다 (예를 들어, 전용 이미지 서버가있는 경우) 또는 /context (웹 서버가 배포 된 경로 인 경우) (모든 것이 하나의 단순한 서버에서 제공되고로드 균형 조정 등이 필요없는 경우)과 같이 간단합니다.)
  • base은 구성 (또는 비어있을 수 있습니다)
  • imagePath는 위의 방법을 사용하여 사소한한다 직접 JSP를 통해 이미지 경로를 렌더링 모델

에서 무엇을 얻을 수 있습니다.

+0

예, 이미지는 일류 시민이므로 서비스 레이어에서 이미지를 가져와야합니다. – Lehane