본문 바로가기
[ Developer ]/Web - Servlet JSP

[JSP Web] 파일 다운로드 File Downlaod

by 김현섭. 2016. 6. 3.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Download
다운로드를 하기 위해 우선 한가지 게시글을 가져오는 쿼리를 통해서
파일 이름을 가져오는 쿼리를 작성한다


하지만 ARTICLE_ID가 존재해도 파일이 존재하지 않으면 출력이 되지 않는다
그렇기 때문에 외부 조인을 해줘야한다


그렇다면 결과는 아래와 같이 파일이 존재하지 않는 게시글도 나오게 된다


그런데 위의 쿼리는 사용이 불가능하다
하나의 게시글이 여러 개의 파일을 가질 수 있기 때문에

그렇기 때문에 카운트로 가져오면 된다


이 쿼리를 getAllArticleList 쿼리에 적용시킨다

query.xml


파일 카운트를 넣기 위해 ArticleVO에 fileCount를 추가시킨다

ArticleVO


그럼 이제 DAO로 가서 file카운트를 set 시키는 과정을 추가한다

ArticleDAO - getArticleList()


이제는 출력된 article.jsp에서 수정을 해준다



이제는 파일 리스트를 갖기 위해 ArticleVO에 List<FileVO>를 가져야 한다
추가 후 getter/setter를 생성한다

# Biz -> DAO 호출 
Biz가 Biz를 호출하는 경우는 사용 가능하지만 사용하지 않는다

MemberBiz -> MemberDAO 호출
ArticleBiz가 Member 정보가 필요하다면 MemberBiz를 호출하지말고 MemberDAO를 호출

Servlet -> Biz -> DAO
      서비스

# 첨부파일 목록
이제는 게시글의 상세 페이지를 출력하는 ArticleBiz의 getDetailArticle()를 수정한다

FileDAO에서 파일 목록을 가져올 메소드를 생성하고 쿼리를 작성한다


파일이 여러 개일 가능성도 존재하므로 while로써 rs.next() 해준다


return을 null로 주는 용도는 JSP에서 JSTL을 작성할 때 값이 없다는 것을 Null로 체크하기 때문에 
return을 null로 주면 편하다

이제 게시글 ArticleBiz에서 게시글 상세 페이지에 fileList를 추가한다


그리고 이제 상세글 페이지에서 테이블 로우를 추가해서 파일 리스트를 보여주면 된다


그럼 다음과 같이 페이지가 표현된다


이제 다운로드를 구현하기 위해 DownloadServlet을 생성한다


위와 같이 파일Id와 게시글Id를 가져와서 정보를 저장한다
그리고 DownloadUtil의 download를 이용한다


위와 같이 작성 후 게시글에 올라온 파일을 누르면 다운로드 창이 뜬다