본문 바로가기
☕ 따뜻한 개발 한 잔

[JSP] 쿠키? 너는 먹는게 아니라 뭐하는 애니 / JSP로 ID/비밀번호 로그인 정보 확인하고 쿠키 전송해주기😎

by 따따시 2022. 7. 16.

 

같은 조 오라바니가 넘 감사하게도 수업시간과 똑같은 내용의 무료 유투브 강의를 공유해주셨는데,

요즘 그 강의들을 쭉- 다시 보면서 수업시간에 이해가 안된 부분들을

이해하고 혼자 알아가는 재미에 빠진 듯 하다 😊

 

예전 시험 준비할 때는 의무적으로 일어나 공부하는 일이 90%는 넘었던 것 같은데

스스로 시간을 내서 무언가를 하려하고,

알아가는 기쁨을 누리는 일은 정말 오랜만에 만난 것 같아(기분좋은 스트레스랄까) 감사한 요즘이다

 

일반적인 짜증만 나는 일들과 달리 스스로 머리를 싸매는 나의 모습 조차도 맘에 들어(나르시스트...?ㅎ)

나르시스트가 아니라 이런 게 바로 적성이었으면 좋겠네 :)

 

 

처음에 백엔드 들어갔을 때, 낯설어서 그런 건지 용어들도 너무 어렵게만 느껴졌는데

유투브에서 알기 쉽게 설명해주시는 강의 덕에 쵸큼은 JSP/Servlet과 친숙해진 것 같다.(응 나만~)

 

 


 

 

잡담은 그만하고 (잡담~ 멈춰!)🖐️

본격 '쿠키' 방식으로 ID/PW가 맞는 지 검토하여 쿠키 쏴주기 작업을 해보자구~?

 

 

🤔 쿠키? 쿠키를 이용하는 방식이 뭔데? 

자~ 생각을 해보자구
사용자가 id/pw를 입력했어, 
그 입력한 값이 서버로 전송이 되는데, 서버는 id/pw가 맞는지를 확인하고 자기 일을 처리한 다음에
응 난 끝~ 하고 자기 일을 종료해버림(html프로토콜의 특징)

그럼 사용자는 매 페이지를 들어갈 때마다 id/pw를 쳐가면서 계속 번거로운 로그인을 해야한다?!
그거슨 성격이 나빠지는 지름길이 될 수 있게찡^^

따라서, 서버는 '쿠키'를 생성하여, 클라이언트 측에 쿠키를 전송해주는 것
(but, 이 또한 보안에 취약하겠쥐? 그래서 '세션'이라는 것이 있쥐, 세션은 서버에 저장이 되는겨)

 

그 쿠키가 드디어 무슨 쿠키인지 알아쒀(터프ㅍ 쿸키! 텊 쿸키!! )

 

 

 

HTML 입력창(클라이언트 창)에 사용자가 ID/PW를 입력하고

ID와 PW가 jsp 파일에 설정한 값과 일치한다면 로그인 성공창을 보여주는 코드를 짜보자구~?

 

 

먼저, 클라이언트 창에 보여지는 html 부분의 코드

<form action="loginOk.jsp" method="post">
   
      아이디 : <input type="text" name="id" size="10">
      비밀번호 :<input type="password" name="pw" size="10">
      <input type="submit" value="로그인">
   
   </form>

<form> 태그를 사용하여 원하는 jsp 파일로 form 안의 내용을 쏴주기 ㅇ_< !

<form>의 method 속성을 통해 post 나 get 방식을 통해 보낼 수 있쥐! (get방식은 url 방식, 그대~로 노출되기 때문에 보안에 취약하다고 했었음)

 

 

 

위의 창에서 전송된 데이터들이 loginOk.jsp로 가서 어떻게 될까유~?

<%! //id,pw 객체 생성 선언
   String id,pw;
%>

<%
   id=request.getParameter("id"); //위에 생성한 id객체에 login.html에서 name="id"인 객체의 value값을 가져와 집어넣겠다.
   pw=request.getParameter("pw"); //위에 생성한 pw객체에 login.html에서 name="pw"인 객체의 value값을 가져와 집어넣겠다.

   //만약, id값이 abcde고 pw가 12345라면
   if(id.equals("abcde")&&pw.equals("12345")){
      Cookie cookie = new Cookie("id",id); //cookie라는 객체를 생성하고 new Coocke("쿠키name",쿠키value)
      //setter메소드를 통해 속성을 설정해준다.
      cookie.setMaxAge(60); //cookie객체의 수명은 60초
      
      //response객체에 실어 보내지 않으면, 받는 반대쪽에서 request로 가져올 수가 없다.
      response.addCookie(cookie); //cookie객체는 꼭 response에 실어서 준다.
      response.sendRedirect("welcome.jsp"); //welcome.jsp로 쏴주기
   }
   else {
      response.sendRedirect("login.jsp"); //id와 비번이 다르면 login페이지로 보내기
   }

 

먼저 <%! %> 안에 id와 pw 객체를 만들어주고,

getParameter를 통하여 name값이 id와 pw인 객체의 value를 가져오자구~? (어디서? 클라이언트 창에서!)

 

나머지 내용들은 주석에 넘 잘 적어논 것 같아 😎

 

* 만약 쿠키의 Age(수명)을 1시간으로 하고 싶다면 60*60 으로 하면 된다.(그럼 1시간이 되자농)

 

 

이거슨 로그인이 성공했을 때 연결되는 jsp


<%
   Cookie[] cookies= request.getCookies();
   
   for(int i = 0; i<cookies.length; i++) {
      String id = cookies[i].getValue(); //id라는 객체에 cookies에서 받아온 value를 넣겠다.
      if(id.equals("abcde"))out.println(id+"님 안녕하세요"+"<br/>");
   }

%>


   <a href="logout.jsp">로그아웃</a>

 

 

 

이거슨 로그아웃 클릭 시 연결되는 jsp

<%
   //로그아웃.jsp에서도 cookie객체를 생성하고, cookie 값을 받아온다.
    Cookie[] cookies = request.getCookies();

   //만약 cookies값이 null이 아니라면 다음과 같은 식을 수행하라
    if(cookies != null ) {
             
       for(int i=0 ; i<cookies.length ; i ++) {
          //cookie값이 abcde라면 
          if(cookies[i].getValue().equals("abcde")){
             //cookie 수명을 0으로 만들어, 즉 없애버리는 작업
             cookies[i].setMaxAge(0);
             //cookie의 나이를 0으로 만들어 없었앴고, 
             //어쨋든 꼭!! 마무리는 response객체에 실어서 보내기
             response.addCookie(cookies[i]);
          }
       }
    }
    
    
    response.sendRedirect("cookietest.jsp");

%>



로그아웃되었습니다.

<a href="login">로그인 창으로</a>

 

 

역시 공부할 때 가장 이해가 잘되는 건

직접 코드를 따라 쳐보고, 주석을 하나하나 달면서 이해하는 게 최고인 듯 하당😎😎

 

오늘은 주말이니

뒤에 데이터 베이스 연결해서 만드는 것까지 공부하고 자야지~~~

 

댓글