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가지 경우로 실습해보기.

 

  1. 서블릿 만을 이용해서 화면-java 처리하기
  2. jsp만을 이용해서 화면-java 처리하기
  3. 서블릿은 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) 이런 걸로 형 변환 필요