일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- slideUp
- ctrl+/
- 소스트리인증실패
- 1521
- push오류
- Math.round()
- FileZilla다운로드
- addClass
- Math.ceil()
- 증가값
- SUB함수
- selectoptions
- removeClass
- index %
- 파일질라설치오류
- FileZilla설치
- 파일질라다운로드
- calc.minus
- toFixed()
- Math.floor()
- Parent
- Excel
- excel중복체크
- is_check
- 주석이 먹히지 않을 때
- 파일질라설치
- calc.plus
- Git
- hide
- selectedIndex
- Today
- Total
잡동사니에도 사랑을
[21.10.07] start.jsp / sendProc / sendResult / forwardProc / forwardResult(exam) - 페이지 이동(sendRedirect 와 forward 이용) 본문
[21.10.07] start.jsp / sendProc / sendResult / forwardProc / forwardResult(exam) - 페이지 이동(sendRedirect 와 forward 이용)
luvforjunk 2021. 10. 7. 11:00이번 시간 다룰 내용은 페이지 이동 방식인 sendRedirect와 forward방식이다.
웹은 현재 작업 중인 페이지에서 다른 페이지로 이동하기 위해 위 두가지 페이지 전환 기능을 제공한다.
두 방식의 특징을 알아보자.
[sendRedirect]
1. jsp파일을 만들 때마다 request, response가 생성된다.
2. sendRedirect는 단순 이동으로, 데이터가 공유되지 않는다.
- 예를 들어, aa.jsp에서 request영역에 변수명 apple, 사과라는 데이터를 갖고 bb.jsp로 이동하려는데, bb.jsp는 그 데이터를 알지 못한다. aa.jsp와 bb.jsp는 각각의 페이지를 갖고 request, response를 따로따로 관리하기 때문이다.
[forward]
1. Web container 차원에서 페이지 이동만 존재할 뿐 실제 웹 브라우저는 다른 페이지로 이동했음을 알 수 없다.
- 웹 브라우저에는 최초 호출한 URL이 표시되고, 이동한 페이지의 URL정보는 확인할 수 없다.
2. 데이터가 공유된다.
- aa.jsp와 bb.jsp에서 request, response가 따로 관리되는 것이 아닌 하나로 통합된다.
////////start.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<font color="red"><b>
start.jsp - sendPro.jsp - sendResult.jsp 페이지 이동합니다<br>
sendRedirect로 이동하므로 데이터는 공유하지 않습니다<br>
주소는 sendResult.jsp가 보인다<br>
</b></font>
<br>
<font color="blue"><b>
start.jsp - forwaedProc.jsp - forwardResult.jsp 페이지 이동합니다<br>
forward로 이동하므로 데이터는 공유합니다<br>
주소는 forwardProc.jsp로 보이지만 결과는 forwardResult.jsp가 나온다<br>
</b></font>
<br>
<input type="button" value="sendRedirect" onclick="location.href='sendProc.jsp'">
<input type="button" value="forward" onclick="location.href='forwardProc.jsp'">
</body>
</html>
////////sendProc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//데이터
request.setAttribute("apple", "사과");
//페이지 이동
response.sendRedirect("sendResult.jsp");
%>
*주요 내용
→ request.setAttribute("apple", "사과");의 의미 : request라는 영역 안에 apple이라는 변수와 사과라는 데이터를 넣어놓은 것
→ <% %> : JSP 코드 중 JAVA 구현 부분. 서버에서 실행된다.
////////sendResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String apple = (String)request.getAttribute("apple");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
결과 = <%=apple %>
</body>
</html>
<!--
sendProc에서의 request와 sendResult에서의 request는 다른 것이다.
같은 것이 절대 아니다.
-->
*주요 내용
→ String apple = (String)request.getAttribute("apple");의 의미 : Attribute에서 apple이라는 변수를 꺼내와라
////////forwardProc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//데이터
request.setAttribute("apple", "사과");
//페이지 이동
//forward와 같은 의미
RequestDispatcher dispatcher = request.getRequestDispatcher("forwardResult.jsp");
//상대 번지만 먹히고, 절대 번지는 형식 자체상의 이유로 쓸 수 없다
dispatcher.forward(request, response); //제어권 넘기기
%>
<%-- <jsp:forward page = "forwardResult.jsp" /> --%>
<!--
forwardProc에서의 request와 forwardResult에서의 request는 같은 것이며,
관리는 forwardProc에서 한다. forwardResult의 request는 죽은 것이다
-->
*주요 내용
→ RequestDispatcher의 개념 :
- 클라이언트로부터 최초에 들어온 요청(request)에 담긴 정보를 저장하고 있다가
다음 페이지에서도 해당 정보를 볼 수 있도록 계속해서 저장하는 기능을 한다.
→ RequestDispatcher의 forward() 메서드 :
- forward()메서드는 대상 자원으로 제어를 넘기는 역할을 한다.
브라우저에서 a.jsp로 요청했을 때 a.jsp에서 forward()를 실행하여 b.jsp로 제어를 넘길 수 있다.
브라우저에게 출력되는 결과는 b.jsp가 되는 것이다.
////////forwardResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String apple = (String)request.getAttribute("apple");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
결과 = <%=apple %>
</body>
</html>
'JAVA_EE > EL-JSTL' 카테고리의 다른 글
[21.10.07] jstlFormat(jstl) (0) | 2021.10.07 |
---|---|
[21.10.07] jstlExam / jstlTest(jstl) (0) | 2021.10.07 |
[21.10.06] image.jsp / today.jsp / main.jsp(exam) (0) | 2021.10.07 |
[21.10.06]elInput2.jsp / elResult2.jsp(el) (0) | 2021.10.07 |
[21.10.06]elInput.jsp / elResult.jsp(el) (0) | 2021.10.07 |