Response분석

chayonning·2023년 7월 9일

Jsp+Servlet

목록 보기
2/3

✅ HttpServletResponse의 주요 메서드

  • setContentType: 응답으로 전송되는 문서의 MIME Type 설정
    ex)
response.setContentType("text/html'charset=EUC-KR");//브라우저에게 응답데이터는 HTML이라는 뜻-> EUC-KR로 해석해줘 !
  • setHeader() : 지정된 name.value를 응답 Header에 추가 //header: 브라우저 정보, 개발자가 추가하거나 조정하고 싶을때 setHeader()사용, 키&값으로 이루어짐
    ex)
response.setHeader("cache-control","no-cache");
response.setHeader("expires","0");
  • addCookie : response에 Cookie객체 저장
  • sendRedirect 클라이언트로 하여금 지정된 URL의 문서를 요청하기로함
  • getOutputStream() : 클라이언트에 결과를 전송하기 위한 outputStream객체 획득//동적으로 html을 실행할때
response.setContentType("image/jpeg");//응답데이터는 jpeg에 image파일이다
File file = new File("c:/temp/IMG_0644.JPEG");
response.setContentLength((int) file.length());
FileInputStream in=new FileInputStream();
바이트 스트림이가능한 getOutputstream을 사용한다
outputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int count = 0;
while((count = in.read(buf)) >=0){
out.write(buf,0,count);
}

  • getWriter() : 클라이언트에 결과를 전송하기 위한 printWriter객체 획득irect

✅Redirect의 개념

redirect : 클라이언트의 요청에 대한 응답이며 브라우저에 다시 다른 URL로 요청하게 하는 응답이다
-> 즉, 클라이언트 요청을 다른 URL로 돌리기 위해 사용
-> 즉, Servlet 코드에서 브라우저에 내리는 명령
sendRedirect()를 사용한다

  • sendRedirect()의 매개 변수에 다시 요청해야하는 URL 지정한다
    ex)
response.sendRedirect("TWOSERVLET");

✅RequestDispatcher의 개념

RequestDispatcher: 클라이언트의 요청을 다른 Servlet으로 forwarding시키거나 다른 Servlet의 수행결과를 포함시키기위해 사용하는 객체이다
1.servletContext의 getRequestDispatcher()메서드 이용해 획득
2.servletRequest의 getRequestDispatcher()메서드 이용해 획득
ex)

RequestDispatcher rd = request.getRequestDispatcher("TwoServlet");
RequestDispatcher rd = getServletContext().getRequestDispatcher("/TwoServlet");

RequestDispatcher vs sendRedirect ?
-> redirect : 클라이언트의 브라우저에 명령
-> RequestDispatcher : 서버사이드에서 자동으로 실행, 컨테이너에게 명령

그렇다면 저들에게 명령을 내려야하는데 명령을 내리는 방법은 2가지가 있다
1. forward - 자기가 받은 요청을 다른곳에 보낼 수 있으나 돌아오지 않음
ex)요청은 A에게 했지만 응답은 B로 한다
-클라이언트 응답은 forward된 servlet에서 하게된다

  1. include - B를 실행시킨 뒤 B의 결과값을 A에게 포함하여 A에서 응답시킨다
    ex)응답은 A에서 한다
PrintWriter = response.getWriter();
out.Println("A");
RequestDispatcher rd = request.getRequestDispatcher("TwoServlet");
rd.include(request,response);
out.println("C");

<TwoServlet>
PrintWriter = response.getWriter();
out.Println("B");

결과는 A B C 

0개의 댓글