-
[JSP] JSP의 request , response주요 메소드, 리다이렉트, 포워드Web/JSP 2019. 7. 11. 13:15
JSP request, response 메소드 그리고 requestDispatcher.forward()와 request.sendRedirect()
request 주요메소드)
getParameter(String name)
- 문자열 name과 같은 이름을 가진 파라미터의 값 얻어오기
setAttribute(String key, Object value); 데이터 저장
getAttribute(String key); 데이터 조회위 두 빨간색은 영역 객체들이 공통적으로 사용된다. (page, request, session, application)
영역내에 데이터(숫자, 문자열, Beans, ArrayList)를 저장, 조회하는 역할
getParameterNames();
request.getParameterValues("")
다중선택된 값을 얻어오는 리턴이 배열인 메소드
getCookies()
- 모든 쿠기값을 javax.servlet.http.Cookie의 배열형태로 얻어오기
getMethod()
- 요청방식을 문자열로 얻어오기 ("GET","POST")
getSession()
- 현재 세션객체 얻어오기
getRemoteAddr()
- 클라이언트의 IP주소 얻어오기
getProtocol()
- 현재 서버의 프로토콜을 문자열 형태로 얻어오기
setCharacterEncoding("문자집합명")
- HTML 폼에서 한글 입력시 정상적으로 처리해주기 위해 설정.
- POST로 전달된 한글을 처리하기 위해 사용.<% request.setCharacterEncoding("utf-8"); String age=request.getParameter("age"); String name=request.getParameter("name"); %>
꼭 getParameter 전에 인코딩 설정을 해줘야 한다.
페이지마다 설정하기 힘들다면 나중에 filter클래스를 사용하여 한번에 인코딩 설정을 한다.
그럴일은 없지만 혹시 내가 폼안의 name속성의 값을 모를경우?
Enumeration<String> names= request.getparameternames();
response 주요 메서드)
setContentType(type)
- 문자열형태의 type에 지정된 MIME Type으로 contentType을 설정.
setHeader(name,value)
- 문자열 name의 이름으로 문자열 value의 값을 헤더로 설정.
setDateHeader(name,date)
- 문자열 name의 이름으로 date에 설정된 밀리세컨드 시간 값을
헤더에 설정.
sendError(status, msg)
- 오류코드를 세팅하고 메시지를 보낸다.sendRedirect(url)
- 클라이언트 요청을 다른 페이지로 보낸다( 페이지 이동)
jsp에서는 페이지 이동 방법을 두가지를 사용한다.
a. 포워드 이동 <-- requestDispatcher.forward();
- 브라우저에 출력되는 페이지와 URL에 명시된 페이지 이름이 서로 다름.
- URL에 명시된 페이지와 이동한 페이지 간에 request를 공유.
- 쇼핑몰, 티케팅같은경우 포워드를 사용하면 안된다.
- 티켓 구입시 티켓정보를 insert를 하는데, 새로고침하면 두번 구매가 된다.
<% // 페이지 이동 RequestDispatcher rd = request.getRequestDispatcher("/0711/end.jsp"); rd.forward(request , response); %>
b. 리다이렉트 이동 <-- request.sendRedirect("경로")
- 특징: 브라우저에 출력되는 페이지와 URL에 명시된 페이지가 서로 같다.
- 앞 페이지와 연결을 끊어 버린다.
- 새로운 페이지로 이동해서 기존의 request영역 값을 하나도 사용할 수 없다.
- start.jsp 와 end.jsp는 request를 사용할 수 없다.
- URL에 명시된 페이지와 이동한 페이지간의 Session를 공유.
<% // 페이지 이동 response.sendRedirect("end.jsp"); %>
데이터 영역 순서
page < request < session < application
application 서버!
<% pageContext.setAttribute("k1","siri"); // 현재페이지에서만 공유 request.setAttribute("k2","하나"); // 요청관계에 있는 페이지간 공유 session.setAttribute("k3","유나"); // 동일 브라우저(동일접속) 내에서 공유 application.setAttribute("k4","돼지"); // 동일서버(Tomcat)에서의 공유 // 페이지 이동 RequestDispatcher rd = request.getRequestDispatcher("/0711/end.jsp"); rd.forward(request , response);// request, session, application출력 response.sendRedirect("end.jsp"); // session과 application만 출력 %>
리다이렉트: session, application만 출력
포워드 이동: request, session, application만 출력
웹어플리케이션 = 웹 컨텍스트
반응형'Web > JSP' 카테고리의 다른 글
[JSP] JSP기본객체(내장객체) (0) 2019.07.12 [JSP] Directives (JSP지시어) (0) 2019.07.11 [BootStrap] HTML 테이블에 부트스트랩 적용하기 (0) 2019.07.10 [JSP] JSP 기본 태그 (0) 2019.07.10 JSP란? 자바 서버 페이지 (0) 2018.12.16