0818 JSP - cookieForm => cookiePro ~ session
cookieForm 페이지를 만들어서, 값을 cookiePro로 넘겨줌
1. <cookieForm>
<h1>cookieForm.jsp</h1>
<h3>쿠키정보 선택(언어설정)</h3>
<form action="cookiePro.jsp" method ="post">
<input type = "radio" name = "language" value = "kor"> 한국어
<input type = "radio" name = "language" value = "eng"> 영어
<br>
<input type = "submit" value = "언어설정">
</form>
<페이지>
2. <cookiePro>
<h1>cookiePro.jsp</h1>
<% String lang = request.getParameter("language");
%>
전달 정보 : <%=lang %><br>
<페이지>
쿠키 정보를 통해서 값을 전달 받음
lang정보를 쿠키에 담아서 다시 form 으로 전송할 것
cookieform (클라이언트) cookiepro (서버)
<문제>
쿠키 값에 따라서 출력되는 메세지 변경
-한국어 - "안녕하세요! 쿠키연습"
-영어 - "Hello~ Cookie Test~"
<cookieForm>
1.쿠키가 있는지 체크
Cookie[] cookie = request.getCookies();
if(cookie != null){ => 쿠키가 null 이 아닐 떄
2.쿠키들 중에서 내가 원하는 정보(언어)있는지 체크
for(int i=0;i<cookie.length;i++){
if(cookie[i].getName().equals("lang")){
3.쿠키가 있을 때, 쿠키 값에 따른 메시지 출력
cookie[i].getValue().equals("kor")){
쿠키 값이 한국어일 때
out.println("안녕하세요! 쿠키연습!<br>");
}else{
쿠키 값이 영어일 때
out.println("Hello~Cookie Test~");
}
}
}
}
체크 되어있는 걸 보고싶다..?<input type = "radio" name = "language" value = "kor" checked> 한국어
<input type = "radio" name = "language" value = "eng" checked> 영어
한국어에 체크되어있으면 한국어영어에 체크되어있으면 영어
lan 이라는 변수를 지정해줌
String lan = "";
if(cookie != null){
//2.쿠키들 중에서 내가 원하는 정보(언어)있는지 체크
for(int i=0;i<cookie.length;i++){
if(cookie[i].getName().equals("lang")){
//3.쿠키가 있을 때, 쿠키 값에 따른 메시지 출력
System.out.println (cookie[i].getValue());
lan = cookie[i].getValue();
if(cookie[i].getValue().equals("kor")){
//쿠키 값이 한국어일 때
out.println("안녕하세요! 쿠키연습!<br>");
}else{
//쿠키 값이 영어일 때
out.println("Hello~Cookie Test~");
}
}
}
}
%>
<h3>쿠키정보 선택(언어설정)</h3>
<form action="cookiePro.jsp" method ="post">
<input type = "radio" name = "language" value = "kor"
<%if(lan.equals("kor")){%>
checked
<%} %>
> 한국어
<input type = "radio" name = "language" value = "eng"
<%if(lan.equals("eng")){%>
checked
<%} %>
> 영어
<br>
<input type = "submit" value = "언어설정">
</form>
팝업 뜨는거 알아보기 open 메서드
Session 설정하기
<sessionTest>
<%
String id = (String) session.getAttribute("ID");
%>
<h3> 정보 : <%=id %></h3>
<!-- 버튼 클릭시 sessionSet.jsp 페이지 이동, 세션정보 생성 -->
<input type = "button" value = "세션값 생성" onclick="location.href='sessionSet.jsp';">
<!--페이지 이동 시킬려면 이벤트를 걸어야함 on click -->
<sessionSet>
<h1>sessionSet.jsp</h1>
<h2> 서버 (세션값 생성) </h2>
<%
// 세션 값 생성(세션영역에 속성을 생성하겠다)
session.setAttribute("ID","itwill");
//session.setMaxInactiveInterval(interval);
//세션 저장한다는 말 (영역,값)
%>
<script type = "text/javascript">
<alert("세션값 생성완료!");
location.href='sessionTest.jsp';
</script>
[쿠키랑 세션을 나눠서 쓰는 이유]
- 세션이 할일이 많아지면, 서버가 할일이 많아짐 -> 처리 속도가 느려짐
- 항상 유지되어야하는 데이터들만 세션에 저장해야함
ex) 로그인 처리
쿠키
-항상 유지되진 않지만 가끔씩 필요할 때 가져오면 됨
session 삭제
<input type = "button" value = "세션값 삭제" onclick="location.href='sessionDel.jsp';"> 를 세션값 생성 밑에 추가,
sessionDel.jsp 를 만들어준다.
(삭제는 특정 데이터만 삭제함.)
<sessionDel>
<h1>sessionDel.jsp</h1>
<h2> 서버 (세션값 삭제) </h2>
<%
//세션 영역에 있는 값을 제거
session.removeAttribute("ID");
%>
<script type = "text/javascript">
alert("세션값 삭제");
location.href="sessionTest.jsp";
</script>
session 초기화
<input type = "button" value = "세션값 초기화" onclick="location.href='sessionInv.jsp';">
sessionTest에 넣어줌
모든 데이터를 다 지워줌. => 은행 어플처럼, 세션 만료(초기화)시키는 것.
<h1>sessionInv.jsp</h1>
<h2>서버(세션값 초기화)</h2>
<%
//세션값 초기화
session.invalidate();
%>
<script type = "text/javascript">
alert("세션값 초기화 완료");
location.href="sessionTest.jsp"
</script>
session 로그인
이런 비밀번호 창에 sql 쿼리 구문을 쓸 수 있다.
select * from member
where id = 'aa' and pw = '1234'
T F
T && F || T = False
아이디가 aa 이면서 pw 가 1234 인 사람을 조회해라
하지만, 내가 비밀번호를 모를 때 or 1=1 (항상 참이 된다는 뜻)
T
즉 비밀번호를 틀려도 로그인이 됨 , or 1=1 이기 때문에 값이 True 가 됨
<sessionLoginForm>
<h1>sessionLoginForm.jsp</h1>
sessionLoginForm.jsp
1. 아이디, 비밀번호 입력창
2. 아이디, 비밀번호 입력
(데이터 유효성 체크)
sessionLoginPro.jsp
3. 아이디, 비밀번호 일치여부 체크
-1) 아이디가 맞는 경우
비밀번호가 맞는 경우 : 본인이 로그인
비밀번호가 틀린 경우 : 비밀번호 오류
-2) 아이디가 틀린 경우 : 비회원
<form action = "sessionLoginPro.jsp" method="post">
<!-- 여기로 전달할거다 post 방식 , get 방식은 다 보임 개인정보라서 post 방식으로 -->
아이디 : <input type = "text" name ="id"><br>
비밀번호 : <input type = "text" name = pw><br>
<input type = "submit" value = "전송">
</form>
<sessionLoginPro>
<h1>sessionLoginPro.jsp</h1>
<!-- parameter로 전달된 데이터는 모두 String -->
String id = request.getParameter("id");
String pw = request.getParameter("pw");
<!-- 기존의 정보와 비교해야되니까 기존 정보 만들어줌 -->
<%
String userID = "admin";
String userPW = "1234";
// == : 기본형타입의 값을 비교할 때 사용
// equals() : String 타입의 값을 비교할 때 사용
if(userID.equals(id)){
// 아이디 있다
if(userPW.equals(pw)){
//아이디, 비밀번호 o => 본인
out.println("로그인 성공!");
}else{
//아이디는 있으나 비번 틀림
out.println("비밀번호 오류!");
}
}else{
//아이디가 없다 = 비회원
out.println(" 비회원 !! ");
}
%>
로그인을 성공해서, 메인페이지로 이동
<sessionMain>
<h1>sessionMain.jsp</h1>
<h2> 메인페이지 </h2>
<%
//로그인 정보가 없을 경우 사용 불가
//=> 로그인 페이지 이동
//로그인 정보가 있을 경우 사용 가능
//=> ㅇㅇㅇㅇ님 환영합니다! 출력(화면)
//세션에 저장된 정보 가벼오기
String id = (String)session.getAttribute("id");
if(id==null){
response.sendRedirect("sessionLoginForm.jsp");
}
%>
아이디 : <%=id %>님 환영합니다.<br>
<input type = "button" value = "로그아웃" onclick="location.href='sessionLogOut.jsp';">
세션은 (String)으로 바꿔줘야함.
로그아웃
클릭 했을 때(onclick),세션 초기화 못함 (onclick => 자바스크립트라 초기화 못함)
jsp 로 세션 초기화하는 페이지를 만들어서 보내야함.
<sessionLogOut>
<h1>sessionLogOut.jsp </h1>
<%
//로그아웃 -> 로그인 정보(세션)=제거
//세션 초기화
session.invalidate();
%>
<script type = "text/javascript">
alert('회원님의 정보가 안전하게 로그아웃 되었습니다.');
location.href="sessionMain.jsp";
</script>
로그아웃
메인페이지로 돌아감