2013-01-04 2 views
1

내 JSP에서 누군가가 쿼리 결과를 CSV로 내보내려고합니다. 프레임 워크를 사용할 수 없습니다. 지금이 순간, 여기 프로세스입니다JSP : 서버에 저장하지 않고 파일을 클라이언트에 저장하십시오.

  1. 버튼을 누르면,
  2. 메이크업의 CSV CSV
  3. 에 대한 데이터를 준비하고
  4. 다시 JSP로 서버에 저장 서블릿로 이동하고이 fresh-를 다운로드하자 앵커 태그에서 만든 파일.

나는이 파일을 나중에 처리해야하므로이 파일을 서버에 만들고 싶지 않지만 여전히 사용자에게 "다른 이름으로 저장"창을 제공하려고합니다. 그래서, 결과를 얻으려면 Session에 OutputStream 객체를 넣는 방법이 있습니까? 감사합니다.

답변

2

서블릿은 모든 유형의 컨텐츠를 생성 할 수 있습니다. 따라서 버튼을 클릭하여 서블릿을 실행하면 서블릿에서 해당 시점에 클라이언트에 파일을 다시 쓰게 만하면됩니다. Content-type 헤더를 "text/csv"(인코딩을 올바르게 설정했는지 확인)으로 설정해야합니다. Content-Length 헤더를 설정할 필요가 없습니다. 브라우저가이를 처리 할 수 ​​있습니다.

서블릿이 브라우저에 데이터를 반환하면 파일을 저장하거나 응용 프로그램과 함께 열라는 메시지가 표시됩니다.

1

예. 파일을 저장할 필요가 없습니다. 세션에서 누른 채로 메모리에있는 OutputStream으로 보냅니다. 나는 기억을 지키기 위해 일정 시간 또는 배달 후에 그것을 쓰레기로 버릴 것입니다.

콘텐츠 유형 및 콘텐츠 처리를 적절하게 설정하십시오. 그러면 브라우저가 출력을 올바르게 해석하고 사용자에게 저장하거나 적절한 응용 프로그램을 시작하라는 메시지를 표시합니다.

자세한 내용은 this SO answer을 참조하십시오.

+0

죄송합니다. 정확히 말씀해 주시겠습니까? 출력 스트림에 파일을 저장하고 세션에서이 파일을 설정하면 jsp/html에서 어떻게 액세스 할 수 있습니까? 이것이 사소한 것 같으면 미안해, 클라이언트쪽에 익숙하지 않아! – Ema

+0

세션에 파일을 저장하는 것이 문제가 될 수 있습니다. 특히 큰 파일 (클러스터 된 서버가있는 경우 이중으로)이 문제가 될 수 있습니다. – parsifal

+0

원하는 형식으로 데이터를 세션에 저장하고 단순히 출력 할 때 CSV로 렌더링하십시오. parsifal 님의 의견은 클러스터링됨을 참고하십시오. –

관련 문제