같은 조 오라바니가 넘 감사하게도 수업시간과 똑같은 내용의 무료 유투브 강의를 공유해주셨는데,
요즘 그 강의들을 쭉- 다시 보면서 수업시간에 이해가 안된 부분들을
이해하고 혼자 알아가는 재미에 빠진 듯 하다 😊
예전 시험 준비할 때는 의무적으로 일어나 공부하는 일이 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>
역시 공부할 때 가장 이해가 잘되는 건
직접 코드를 따라 쳐보고, 주석을 하나하나 달면서 이해하는 게 최고인 듯 하당😎😎
오늘은 주말이니
뒤에 데이터 베이스 연결해서 만드는 것까지 공부하고 자야지~~~
'☕ 따뜻한 개발 한 잔' 카테고리의 다른 글
[JS] 그 동안 for문을 length 로 돌렸는데, 더 효율적으로 돌리는 방법 (0) | 2022.08.02 |
---|---|
[JS] 자바스크립트 let, var, const 의 차이 / let과 const 의 차이 (0) | 2022.08.01 |
[Oracle] Oracle19c 데이터 eclipse(2021-03)에 연결하기 / 왜 강의 그대로 따라가려해도 파일은 보이지 않는 것이늬 (0) | 2022.07.19 |
[프로젝트] 의견 조율하여 Main페이지 스타일 변경하기 (0) | 2022.07.10 |
[프로젝트] 메인 페이지 만들기 (황금같은 일요일을 갈아넣었지) (0) | 2022.07.03 |
댓글