오모씨
462
2018-01-11 15:39:28
2
1561

JSP에서 파일 다운로드 받은 후 response를 사용해서 다시 페이지로 넘기는 방법 없나요?


안녕하세요.


JSP(Servlet사용) 페이지에서 버튼을 누르면 파일을 다운로드 받은 후 특정 페이지로 넘기려고 합니다. 순서는 페이지로 넘어간 후 다운로드가 받아져도 됩니다.

 우선 서버의 특정 폴더에 있는 test.txt 파일을 로컬 컴퓨터로 다운 받을 수 있게 하기 위해 다음과 같이 response 코드를 작성하였습니다.


response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=test.txt");			
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(buf);
outputStream.flush();
outputStream.close();


그리고 나서

request.getRequestDispatcher("index.jsp").forward(request, response);

를 사용해서 다른 페이지로 이동하려 했습니다.


그랬더니 파일 다운로드를 받으면서 이미 response가 끝난 문제 때문인지 forward를 할 수 없다고 에러가 납니다.


이럴 경우 강제로 이벤트를 발생시켜서 한번의 response 후에 자동으로 request, response가 되게끔 할 수는 없는 것인가요?


예를 들어 일단 index.jsp로 넘긴 후에 다시 강제로 버튼 클릭과 같은 이벤트를 자동으로 발생 시켜서 파일 다운로드를 받을 수 있게 하는 방법이 있나 하고 질문 드립니다.


아니면, 위와 같은 문제 해결을 위한 다른 방법이 있으면 답변 부탁드립니다.


감사합니다.


0
  • 답변 2

  • 무명소졸
    6k
    2018-01-11 16:51:55

    요청이가고           =============> request         

    응답을보냈습니다.<=============  response


    응답이 끝났는데

    request.getRequestDispatcher("index.jsp").forward(request, response);

    그다음 이 요청은(request) 누구의 요청인가요^^;


    Http 는 stateless 한 프로토콜 입니다. 상태를 저장하지 않는다는거죠

    뭐 임의로 말하면 request 에 대한 연결을 계속 가지고 있지 않겠죠


  • 오모씨
    462
    2018-01-12 15:47:54

    답변 감사 드립니다.


    네 말씀하신대로, 다운로드 받고 응답이 끝난다음 다시 억지로 index.jsp로 redirect를 시켜야 하는데 그러려면 response.redirect나 저 방법을 써야 하는데 어떤 방법이든 request가 있어야 응답이 오는게 맞습니다.


    그래서, 혹시 다운로드 받은 응답이 끝난다음 바로 index.jsp로 넘길 수 있도록 request를 강제로 한번 주는 방법이 없는지 질문 드린것입니다. ^^

  • 로그인을 하시면 답변을 등록할 수 있습니다.