뚜룽

[JSP] 파일 업로드 / 다운로드 (페이지 전환 , 페이지 재요청) 본문

카테고리 없음

[JSP] 파일 업로드 / 다운로드 (페이지 전환 , 페이지 재요청)

ddooroong 2023. 5. 11. 22:54

파일 업로드와 다운로드

파일 업로드
- 클라이언트에 있는 파일을 서버로 보내는 작업

파일 다운로드
- 서버에서 네트워크를 통해 파일을 클라이언트에게 가져오는 작업

파일 업로드와 다운로드는 모두 복사의 기능과 같다.

파일 업로드 라이브러리로 cos.jar 파일을 사용하였다. 파일은 http://www.servlets.com/cos 에서 다운받았다.

  • com.test.java
    • FileTest.java (Servlet)
    • FileTestOk.java
  • webapp > WEB-INF > file
    • filetest.jsp (JSP)
    • filetestok.jsp 
  • webapp > uploads (업로드한 파일을 보관하는 전용 폴더)

 

다른 페이지로 전환하거나 해당 주소를 재요청하는 경우

※ 정말 잘 정리된 블로그가 있어서 참고하였다! 

 

페이지출력, 페이지전환 및 특정 url로 재 요청 을 해주는 RequestDispatcher 의 request.getRequestDispatcher()

# RequestDispatcher서블릿 forward(request, response)메서드 먼저 forward()와 sendRedirect의 개념차이를 아주 쉽게 구분하겠습니다. forward() : 페이지 출력, 페이지 전환 sendRedirect() : 특정 url로 재 요청 # RequestDisp

u-it.tistory.com

  1. forward()
    • 페이지를 출력하거나 전환한다.
    • 페이지 전환할 때 정보 갱신 요청(select) 1번 일어날 때 사용한다.
  2. sendRedirect()
    • 특정 url로 페이지를 재요청한다.
    • 페이지나 주소에 대해 갱신 요청(select) 2번 이뤄져야 할 때 사용

 


RequestDispatcher

  • 객체를 다른 페이지로 이동시킴 
  • 즉, 다른 뷰페이지 파일을 출력하는 역할
  • 메소드로 forward(), include()를 가짐
  • new 연산자 대신 메소드로 객체를 선언한다.
    • HttpServletRequest 객체의 getRequestDispatcher() 메소드로 객체 선언
// 객체 생성 방법 1.
HttpServletRequest request = new HttpServletRequest();
req.getRequestDispatcher("이동할 경로");
forward(request, response);


// 객체 생성 방법 2.
HttpServletRequest request = new HttpServletRequest();	// HttpServletRequest의 객체 선언은 같다.
RequestDispatcher dispatcher = req.getRequestDispatcher("이동할 경로");
dispatcher.forward(request, response);

/*

	.getRequestDispatcher("이동할 경로");
    - 현재 페이지를 해당 경로로 이동시킴
    - 전송받은 데이터는 EL 표현식이나 JSTL로 출력시켜야 화면에 나타남

	.forward(request, response);
    => 현재 페이지의 request와 response 내장 객체를 
    	이동할 페이지에 함께 보낸다는 의미

*/

 

 


SendRedirect()

  • 서버의 특정 자원을 다른 url로 이동시킴
  • 요청-응답-요청 단계로 request 객체가 한 번 더 생성됨
  • 재요청 함으로써 데이터를 갱신함
  • GET 방식으로 이동
  • 이동시 request.setAttribute("key이름", 값) 형태로 저장된 key 이름은 잃어버림

HttpServletResponse 의 객체 -> (response) 생성 -> response.sendRedirect();