JSP

JSP를 배워보자!!(내장 객체 response)

25G 2021. 4. 21. 12:38

안녕하세요~여러분ㅎㅎ 오늘은 저번에 내장 객체 request 편에서 약속드렸듯이 내장 객체 response에 대해서 말씀드리겠습니다 내장 객체가 뭔지는 간단하게 전 글에 작성해 놨으니 한번 스윽~갔다가 오셔도 좋을 것 같아요 ㅎㅎ 글이 길어질 것 같아 생략하겠습니다

그럼 reponse내장객체가 무엇인지 바로 보시죠

서버는 사용자의 요청을 처리한 결과를 저장하고 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보냅니다

그때! JSP컨테이너가 서버가 웹 브라우저로 응답 헤더와 요청 처리 결과 데이터를 보내기 위해 response내장 객체를 사용해요

 

TIP!

request를 한글로번역하면 "부탁하다"입니다

response를 한글로 번역하면 "응대하다""대답"이런 의미를 가지고 있죠 그래서 이렇게 저는 이해가 조금 안 될 때는 한글 번역을 해보곤 합니다 그러면 좀 더 와 닿을 때가 많습니다

 

그럼 저번 포스팅에서의 로그인을하는 페이지를 만들어 볼 것인데

오늘은 로그인을 하면 로그인 페이지를 벗어나 로그인 결과창이 나와서 응대하는 그런 형식의 jsp코드를 만들어 보겠습니다

로그인 페이지를 만드는 것에 대한 것들은 저번에 설명을 다 드렸기 때문에 넘어가겠습니다. 궁금하신 분은 request 편을 봐주세요! 그리고 밑에 URL에 form태그의 action속성을 활용하는 방법이 적혀있는 주석인데 이번엔 사용하지 않으니 넘어가겠습니다.

그럼 저번에 했던 것처럼 form태크 action속성에 있는 요청할 URL을 만들어 보겠습니다

자 요렇게 만들었는데 저번과는 살짝 다르죠?

자 10번과 11번은 저번과 같은 request를 사용한 기능들이니 설명은 생략하겠습니다

그리고 13번 줄부터 if문이 걸려있죠?

13번 줄을 읽으면 이렇게 번역할 수 있을 것 같습니다

 

만약에 id에 들어있는 요청 파라미터 값이 "abcd"와 같고 pw에 들어있는 값이 "abcd"와 같다면 if문을 실행하는데 실행한다면! response.sendRedirect을 사용해서 "response_success01.jsp로 이동해라

if문을 실행하지 못한다면 response.sendRedirect을 사용해서 "response_fail01.jsp"로 이동해라 

라고 소스코드가 말하고 있습니다.

 

참 간단하죠? 근데 여기서 오늘의 주인공인 response가 나옵니다 이 response의 메서드인 sendRedirect가 뭐냐면은 위의 if문을 해석한 것처럼 페이지를 강제 이동시켜주는 메서드입니다 이 메서드를 만나면 매개변수로 이동할 수 있는 값을 설정해줘야 합니다. 그리고 빠트리기 쉬운 문자 인코딩도 맞춰줘야 해요 ㅎㅎ

sendRedirect는 forward와 언뜻 보면 비슷할 수도 있겠지만요 완전 다른 기능을 한답니다

forward는 JSP페이지 내에서 제어가 이동하는 것이고

sendRedirect는 URL을 클라이언트에게 반환하는 것이기 때문에 URL이 바뀌므로 사용자가 보낸 데이터가 이동한 페이지에서는 유효하지 않습니다.

 

그럼 위와 같은 if문의 설정에 맞게 각 URL을 또 만들어줘야겠죠

먼저

response_success01.jsp부터 만들어 보겠습니다 

뿅~

그리고

response_fail01.jsp도 만들어야겠죠?

뿅~

이렇게 두 개의 결과창까지 만들어 봤습니다 

request 편을 잘 보신 분들은 이제 결과가 머리에 그려지실 겁니다

결과도 보실까요?

일단 아이디와 비밀번호가 if문을 통과하도록 쓰고 전송 버튼을 누르면

이렇게 새로운 URL을 불러와서 잘 작동하고 있네요 그리고 if문을 통과 못하도록 하면

이렇게 로그인 실패했을 시에 나오는 새로운 URL를 불러와 다시 로그인 페이지로 이동하는 것까지 아주 잘 작동하고 있습니다

 

자 오늘은 내장 객체 response를 사용해서 저번과는 다른 좀더 로그인을 하는 느낌이 나는! 그런 페이지를 한번 만들어 봤습니다

여러분 내장객체 굉장히 자주 쓰이고 중요하다고 하니 꼭 이해하시고 넘어가길 바라요~ 저도 더 공부하겠습니다 ㅎㅎ

긴 글 읽어주셔서 감사합니다 

추천도 부탁해요~