==========================================response 하는 일==========================================
//response 객체의 URL 리다이렉트 메소드 호출
./webapps/brain03/test/Move.jsp:1:<% response.sendRedirect("http://www.hanb.co.kr/"); %>
//response객체의 addCookie 메소드를 통해, 사용자 웹브라우져로 넘길 쿠키객체(쿠키 키와 값)을 세트
./webapps/brain04/StoreCookies.jsp:3: response.addCookie(new Cookie("NAME", "John"));
//사용자의 웹브라우져에서 쿠키사용을 막아놨을 시, 여기에 세션아이디를 쿠키로 저장해야 할 때, 이를 url의 끝에 붙여서 전송하기 위한 기술.
./webapps/brain04/WriteSessionData.jsp:11: <A href=<%= response.encodeURL("ReadSessionData.jsp") %>>세션 데이터 읽기</A>
//에러페이지를 띄우기 위해선, http status code를 200(ok)로 표현해야만 가능.
./webapps/brain13/CommonError.jsp:2:<% response.setStatus(200); %>
response의 담당 업무: 사용자에게 전송(쿠키, 리다이렉트 url)하거나 보여주기 위한 내용(에러 페이지)을 담당
==========================================request 하는 일=========================================
//웹컨테이너가 파일 읽어올 때 인코딩 기준
./webapps/brain03/BBSPost.jsp:8: request.setCharacterEncoding("euc-kr");
//사용자가 get방식으로 url 끝에 붙여 넘긴 파라미터를 파싱해 뱉어내는 request의 한 메소드
./webapps/brain03/BBSPost.jsp:9: String name = request.getParameter("NAME");
//사용자가 get방식으로 url 끝에 붙여 넘긴 체크박스 on/off 여부 및 관련 value를 배열 형태로 받는 메소드.
./webapps/brain11/sub4/Colors.jsp:2:<% String color[] = request.getParameterValues("COLOR"); %>
//request 객체 안에 데이터 set하기 (다른 jsp파일로 정보를 전달하기 위한 수단일 뿐, 세션이랑은 전혀 다른 내용)
./webapps/brain03/FourRules.jsp:6: request.setAttribute("SUM", new Integer(num1 + num2));
//넘어온 request 객체 안에 있는 데이터를 get하기(request.getParameter("Name")은 사용자가 get방식으로 요청하는 내용을 읽는 것으로 request.getAttribute와 다른 역할의 메소드임)
./webapps/brain03/FourRulesResult.jsp:6: 덧셈의 결과는? <%= request.getAttribute("SUM") %> <BR>
//(request,response) 객체 둘을 넘기며 "Now.jsp" 페이지 include하기(Now.jsp파일이 끝나면 제어권이 다시 현재 jsp파일로 복귀됨)
./webapps/brain03/ChineseMenu.jsp:11: RequestDispatcher dispatcher = request.getRequestDispatcher("Now.jsp");
./webapps/brain03/ChineseMenu.jsp:12: dispatcher.include(request, response);
//(request,response) 객체 둘을 넘기며 "Now.jsp" 페이지 forward하기(제어권이 돌아오지 않음. 끝!)
./webapps/brain07/Address.jsp:9: RequestDispatcher dispatcher = request.getRequestDispatcher("AddressView.jsp");
./webapps/brain07/Address.jsp:10: dispatcher.forward(request, response);
//(request,response) 객체 둘을 넘기며 "DataError.jsp" 페이지 forward하기(에러 페이지를 띄우는 상황이니 제어권이 돌아오지 않는 forward가 include에 비해 옳음.) 그렇다면 왜 sendRedirect는 쓰지 않는가???
./webapps/brain05/Adder.jsp:12: RequestDispatcher dispatcher = request.getRequestDispatcher("DataError.jsp");
./webapps/brain05/Adder.jsp:13: dispatcher.forward(request, response);
//클라이언트의 request header값들 중에서 쿠키값(복수)를 얻어오는 request의 getCookies()메소드
./webapps/brain04/ReadIDCookie.jsp:2:<% Cookie[] cookies = request.getCookies(); %>
//익스프레션언어에서 jsp페이지의 환경 정보들의 집합인 내장 객체 PageContext를 통해 request 객체에 접근
./webapps/brain07/PageContext.jsp:5: 요청 URL: ${pageContext.request.requestURI} <BR>
//자바빈 선언 시 사용 범위를 동일 웹 애플리케이션 내의 세션으로 정함
./webapps/brain08/BookInfoSaver.jsp:2:<jsp:useBean class="mall.BookInfo" id="pinfo" scope="request"/>
//파일 업로드 기능을 구현하는 자바클래스 MultiPart
./webapps/appD/Upload.jsp:5: MultiPart multiPart = new MultiPart(request);
request의 담당 업무: 사용자로부터 넘어온 데이터 읽기(get방식 url 파라미터, 쿠키값) + 웹 컴포넌트 간 정보 주고 받기(request.setAttribute, request.getAttribute) + jsp페이지 include/forward 하기 + 웹 컨테이너의 jsp파일 디코딩 기준 제시(request.setCharacterEncoding("euc-kr")
===================================================================================
질문. jsp에서 request.setAttribute(??) vs session.setAttribute(세션)
//request.setAttribute("Height",new Integer(188));은, request라는 내장객체의 인스턴스 변수에 셋팅하는 데이터로서, 웹 애플리케이션 전체가 접근할 수 있는 객체가 아닌, forward나 include 등의 경우에 이 request 내장 객체를 파라미터로 받아야만 request.getAttribute("Height")할 수 있다. 즉, request변수는 지역성을 띨 뿐이며, 전달하기 위해선 call by reference에 의한 파라미터 전달 뿐이다.
반면, HttpSession session = request.GetSession();로 얻은 session 객체는 전혀 다른 내용이다.
session.setAttribute("Height", new Integer(188));을 예로 들면, "Height"와 그 값인 188은 "세션 데이터 영역"에 저장되며, 이는 같은 웹 애플리케이션 디렉토리에 있는 다른 웹 컴포넌트(jsp와 servlet을 통칭, 왜냐하면 웹 컨테이너가 담고 있는 것이 웹 컴포넌트이기 때문임.)에서도 모두 접근 가능하다. 즉, 전역성을 띄는 객체이다.
Integer height = (Integer) session.getAttribute("Height");는, session.getAttribute의 반환형이 Object형이기 때문에 본래의 타입으로 캐스트 연산을 하고 있는 것이다. 이런 방식으로 세션 값을 얻어낸다.
//response 객체의 URL 리다이렉트 메소드 호출
./webapps/brain03/test/Move.jsp:1:<% response.sendRedirect("http://www.hanb.co.kr/"); %>
//response객체의 addCookie 메소드를 통해, 사용자 웹브라우져로 넘길 쿠키객체(쿠키 키와 값)을 세트
./webapps/brain04/StoreCookies.jsp:3: response.addCookie(new Cookie("NAME", "John"));
//사용자의 웹브라우져에서 쿠키사용을 막아놨을 시, 여기에 세션아이디를 쿠키로 저장해야 할 때, 이를 url의 끝에 붙여서 전송하기 위한 기술.
./webapps/brain04/WriteSessionData.jsp:11: <A href=<%= response.encodeURL("ReadSessionData.jsp") %>>세션 데이터 읽기</A>
//에러페이지를 띄우기 위해선, http status code를 200(ok)로 표현해야만 가능.
./webapps/brain13/CommonError.jsp:2:<% response.setStatus(200); %>
response의 담당 업무: 사용자에게 전송(쿠키, 리다이렉트 url)하거나 보여주기 위한 내용(에러 페이지)을 담당
==========================================request 하는 일=========================================
//웹컨테이너가 파일 읽어올 때 인코딩 기준
./webapps/brain03/BBSPost.jsp:8: request.setCharacterEncoding("euc-kr");
//사용자가 get방식으로 url 끝에 붙여 넘긴 파라미터를 파싱해 뱉어내는 request의 한 메소드
./webapps/brain03/BBSPost.jsp:9: String name = request.getParameter("NAME");
//사용자가 get방식으로 url 끝에 붙여 넘긴 체크박스 on/off 여부 및 관련 value를 배열 형태로 받는 메소드.
./webapps/brain11/sub4/Colors.jsp:2:<% String color[] = request.getParameterValues("COLOR"); %>
//request 객체 안에 데이터 set하기 (다른 jsp파일로 정보를 전달하기 위한 수단일 뿐, 세션이랑은 전혀 다른 내용)
./webapps/brain03/FourRules.jsp:6: request.setAttribute("SUM", new Integer(num1 + num2));
//넘어온 request 객체 안에 있는 데이터를 get하기(request.getParameter("Name")은 사용자가 get방식으로 요청하는 내용을 읽는 것으로 request.getAttribute와 다른 역할의 메소드임)
./webapps/brain03/FourRulesResult.jsp:6: 덧셈의 결과는? <%= request.getAttribute("SUM") %> <BR>
//(request,response) 객체 둘을 넘기며 "Now.jsp" 페이지 include하기(Now.jsp파일이 끝나면 제어권이 다시 현재 jsp파일로 복귀됨)
./webapps/brain03/ChineseMenu.jsp:11: RequestDispatcher dispatcher = request.getRequestDispatcher("Now.jsp");
./webapps/brain03/ChineseMenu.jsp:12: dispatcher.include(request, response);
//(request,response) 객체 둘을 넘기며 "Now.jsp" 페이지 forward하기(제어권이 돌아오지 않음. 끝!)
./webapps/brain07/Address.jsp:9: RequestDispatcher dispatcher = request.getRequestDispatcher("AddressView.jsp");
./webapps/brain07/Address.jsp:10: dispatcher.forward(request, response);
//(request,response) 객체 둘을 넘기며 "DataError.jsp" 페이지 forward하기(에러 페이지를 띄우는 상황이니 제어권이 돌아오지 않는 forward가 include에 비해 옳음.) 그렇다면 왜 sendRedirect는 쓰지 않는가???
./webapps/brain05/Adder.jsp:12: RequestDispatcher dispatcher = request.getRequestDispatcher("DataError.jsp");
./webapps/brain05/Adder.jsp:13: dispatcher.forward(request, response);
//클라이언트의 request header값들 중에서 쿠키값(복수)를 얻어오는 request의 getCookies()메소드
./webapps/brain04/ReadIDCookie.jsp:2:<% Cookie[] cookies = request.getCookies(); %>
//익스프레션언어에서 jsp페이지의 환경 정보들의 집합인 내장 객체 PageContext를 통해 request 객체에 접근
./webapps/brain07/PageContext.jsp:5: 요청 URL: ${pageContext.request.requestURI} <BR>
//자바빈 선언 시 사용 범위를 동일 웹 애플리케이션 내의 세션으로 정함
./webapps/brain08/BookInfoSaver.jsp:2:<jsp:useBean class="mall.BookInfo" id="pinfo" scope="request"/>
//파일 업로드 기능을 구현하는 자바클래스 MultiPart
./webapps/appD/Upload.jsp:5: MultiPart multiPart = new MultiPart(request);
request의 담당 업무: 사용자로부터 넘어온 데이터 읽기(get방식 url 파라미터, 쿠키값) + 웹 컴포넌트 간 정보 주고 받기(request.setAttribute, request.getAttribute) + jsp페이지 include/forward 하기 + 웹 컨테이너의 jsp파일 디코딩 기준 제시(request.setCharacterEncoding("euc-kr")
===================================================================================
질문. jsp에서 request.setAttribute(??) vs session.setAttribute(세션)
//request.setAttribute("Height",new Integer(188));은, request라는 내장객체의 인스턴스 변수에 셋팅하는 데이터로서, 웹 애플리케이션 전체가 접근할 수 있는 객체가 아닌, forward나 include 등의 경우에 이 request 내장 객체를 파라미터로 받아야만 request.getAttribute("Height")할 수 있다. 즉, request변수는 지역성을 띨 뿐이며, 전달하기 위해선 call by reference에 의한 파라미터 전달 뿐이다.
반면, HttpSession session = request.GetSession();로 얻은 session 객체는 전혀 다른 내용이다.
session.setAttribute("Height", new Integer(188));을 예로 들면, "Height"와 그 값인 188은 "세션 데이터 영역"에 저장되며, 이는 같은 웹 애플리케이션 디렉토리에 있는 다른 웹 컴포넌트(jsp와 servlet을 통칭, 왜냐하면 웹 컨테이너가 담고 있는 것이 웹 컴포넌트이기 때문임.)에서도 모두 접근 가능하다. 즉, 전역성을 띄는 객체이다.
Integer height = (Integer) session.getAttribute("Height");는, session.getAttribute의 반환형이 Object형이기 때문에 본래의 타입으로 캐스트 연산을 하고 있는 것이다. 이런 방식으로 세션 값을 얻어낸다.
댓글
댓글 쓰기