Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/7월
22.07.22 - [ WAS ] redirect(), 실습문제
giggs
2022. 8. 1. 10:05
-- Index --
1. redirect() | 2. 실습문제 |
resp.sendRedirect("다음타자경로").forward(req,resp); | servlet , jsp , servlet+jsp |
1. redirect()
- resp.sendRedirect()
- 클라이언트에게 새로운 요청하게 만든다.
1-1 forwading으로 처리할 때와 redirect로 처리할 때의 차이점
- # forwarding – 내부적으로 요청을 돌리는 것으로 url 변화 X – req.forward()
- # redirect – resp.sendRedirect()
1-2 새로운 요청해서 요청 처리하게 해 주기.
- 그 요청 나는 처리 못해 그거 철수한테 부탁해야 돼 하면
- 그걸 보고 새로운 요청을 보낼 수는 있겠다.
- 이런 경우에는 처음 보내는 요청과 다르게 url이 바뀌게 된다.
- ( 새로운 요청을 보낸 것이므로.)
1-3 resp.sendRedirect( ) - 클라이언트에게 새로운 요청하게 만든다.
# 경로 바뀜 체크 #
1-4 redirect 쓰는 이유
- – 요청 온 거 끊어주려고
- 로그인 성공이나 회원가입 성공 같이 처음 요청한 작업이 끝나서 응답 화면까지 보여주었는데
- forward 작업으로 처리해서 처음 요청한 url이 바뀌지 않은 상태에서 새로고침 F5해버리면 -
- 처음 요청한 로그인 요청이나 회원가입 요청이 다시 진행된다.
- 이런 것을 방지하기 위해
- 응답 화면으로 보낼 때 url을 변경해주어서 새로고침 하더라도
- 기존의 요청을 다시 요청하는 처리되지 않도록 해주기 위해서 사용한다.
실습 문제) 3가지 경우로 실습해보기.
- 서블릿 만을 이용해서 화면-java 처리하기
- jsp만을 이용해서 화면-java 처리하기
- 서블릿은 java 쪽 // jsp는 화면 쪽 나눠서 처리하기
# 포워딩 흐름 체크 #
# index.jsp 에서 하는 작업
input 태그 안에 어떤 값을 넣어서 요청을 보내는 것
요청 보내는 이름은? form action = “ calcLotto ”
# calcLotto 요청 처리하는 - 서블릿
doPost / doGet 요청에 대해서 처리하는 부분
받은 요청에서 사용자가 입력한 값 꺼내와서 복잡한 연산처리
연산 결과 보여주기 위해서 나보다 화면쪽 잘하는 애한테 넘겨주기
req.setAttribute(“key”,“value”) 해서 연산 결과 담아서 –
getRequestDispatcher( “ 경로 ” )로 다음 타자의 경로 알려주고
forward(req, resp)로 넘겨주기
# 넘겨받은 연산 결과로 화면 쪽 작업해주기 - jsp
받은 데이터(연산결과) 저장되어있는
request 객체에서 값 꺼내서 필요한 작업하기
<% getAttribute(“key”) %>
getAtrribute는 리턴 타입이 object 라서
(String)이나 (int) 이런 걸로 형 변환 필요