
response.setContentType("text/html'charset=EUC-KR");//브라우저에게 응답데이터는 HTML이라는 뜻-> EUC-KR로 해석해줘 !
response.setHeader("cache-control","no-cache");
response.setHeader("expires","0");
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);
}
redirect : 클라이언트의 요청에 대한 응답이며 브라우저에 다시 다른 URL로 요청하게 하는 응답이다
-> 즉, 클라이언트 요청을 다른 URL로 돌리기 위해 사용
-> 즉, Servlet 코드에서 브라우저에 내리는 명령
sendRedirect()를 사용한다
response.sendRedirect("TWOSERVLET");
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에서 하게된다
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